Come navigare efficacemente nel terminale e installare pacchetti / comandi?

7

Sono un elettricista & amp; ingegnere informatico che ha recentemente iniziato a utilizzare Ubuntu 16.04 per modificare un COM (Computer on Module) basato su Android per soddisfare le esigenze di un nuovo prodotto su cui sto lavorando per la società per cui lavoro.

Naturalmente, lo sviluppo di Android al livello a cui sto lavorando (HAL, kernel, ecc ... non così tante "applicazioni" a questo punto) non sembra essere appropriato sulla piattaforma con cui mi trovo più a mio agio (Windows) , quindi ha fatto la maggior parte del senso di passare a Ubuntu, una piattaforma molto supportata in termini di sviluppo Android.

Ora alla parte più pertinente.

Non ho alcun problema "usando" Ubuntu (installazione e configurazione erano un gioco da ragazzi), e non sono estraneo alle interfacce a linea di comando come il terminale, che preferisco usare e "padroneggiare".

Tuttavia, il mio più grande ostacolo nel "controllo" del terminale non è la sintassi o anche i vari binari / pacchetti stessi, ma trovare quei binari / pacchetti!

Utilizzo estensivamente man e info, ma quei comandi sono utili solo se si conosce il comando / funzione che si sta cercando in anticipo, e anche se le capacità di ricerca di entrambi gli utenti e le informazioni sono grandi, sento ancora come se mi mancasse un indice di ciò che è disponibile per me.

Per riepilogare e enumerare chiaramente le mie domande:

  1. Esiste una "lista" di tutto ciò che posso chiamare sul terminale che è dinamico e si adatta al set corrente di pacchetti / binari / funzioni attualmente installate?

  2. Dove vengono memorizzati esattamente i vari pacchetti installati? Ho cercato in / bin /, ma sembra essere solo una frazione di ciò che è disponibile per me. / bin / sembra avere molti binari di base, ma altri binari apparentemente fondamentali come le informazioni e ciò che sembra essere assente. Allo stesso modo, nessuno dei miei pacchetti installati ottenuti tramite apt, né apt stesso, sono presenti.

  3. Credito aggiuntivo quali processi di pensiero dovrebbero essere diversi in un ambiente Linux rispetto a un ambiente Windows? Come, dove c'è / c'è una variabile di ambiente path che specifica dove il sistema cercherà i binari? Esiste un equivalente a "Programmi" o "Aggiungi e rimuovi programmi" (solo per enumerare cosa è installato!)? Qualsiasi altro "pro-consiglio" per un ragazzo / sviluppatore esperto di Windows, ma completo straniero per Linux?

Questo è il mio primo post su qualsiasi sito web di Stack Exchange, quindi ti prego di perdonarmi se ho violato regole o accettato decoro. Ho letto le linee guida e non penso di violare nessuno di loro! In ogni caso, qualsiasi aiuto sarebbe molto apprezzato!

Grazie.

    
posta B-Tone 08.07.2016 - 16:44

2 risposte

2
  

Esiste una "lista" di tutto ciò che posso chiamare sul terminale che è dinamico e si adatta al set corrente di pacchetti / binari / funzioni attualmente installati?

Sì! Se stai utilizzando bash come shell (che presumo poiché è la shell standard) puoi premere TAB due volte per ottenere un elenco completo di comandi che puoi eseguire (attenzione che può essere piuttosto lungo) .

Modifica: ho imparato che premere due volte la scheda senza caratteri funziona solo quando bash usa la sua configurazione predefinita, non quella di Ubuntu. Quindi potresti voler eseguire bash --norc . Premendo TAB due volte dovrebbe funzionare quindi.

Un'altra alternativa sarebbe l'installazione e la configurazione di zsh o fish che sono belle sostituzioni per bash e offrono più funzionalità. (Preferisco pesce perché fornisce un bel completamento automatico durante la digitazione.)

  

Dove vengono memorizzati esattamente i vari pacchetti installati? Ho cercato in / bin /, ma sembra essere solo una frazione di ciò che è disponibile per me. / bin / sembra avere molti binari di base, ma altri binari apparentemente fondamentali come le informazioni e ciò che sembra essere assente. Allo stesso modo, nessuno dei miei pacchetti installati ottenuti tramite apt, né apt stesso, sono presenti.

Puoi vedere dove la tua shell sta cercando i programmi installati:

$ echo $PATH
/home/niklas/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/niklas/.gopath/bin:/home/niklas/.gopath/bin

(Nota che questo potrebbe sembrare un po 'diverso per te.)

Oggi la maggior parte degli eseguibili si trova in /usr/bin come per FHS .

Se vuoi sapere dove si trova un particolare programma, usa which :

$ which apt
/usr/bin/apt

Poiché non ho una grande esperienza di Windows, non penso di poter rispondere all'ultima parte della domanda, ma:

  • $PATH è la "variabile di ambiente path che specifica dove il sistema cercherà i file binari".
  • La maggior parte dei programmi sono installati su /usr . (Questo è suddiviso in eseguibili ( /usr/bin ), librerie ( /usr/lib ) e file condivisi ( /usr/share ). La documentazione è in /usr/share/doc .)
risposta data YtvwlD 08.07.2016 - 17:14
2

Per elencare tutte le funzioni, puoi utilizzare compgen -A function , ma alcune di esse sono funzioni di completamento automatico che i programmi utilizzano internamente e che un utente non userebbe mai. Iniziano tutti con un trattino basso, quindi per ignorarli, fai:

compgen -A function | grep -v "^_"

Per vedere la definizione della funzione, usa type $function_name . type può anche dirti dove è archiviato un dato binario / script, e se il comando è un binario, uno script, un alias, una funzione, ecc.

Utile anche: type -a mostrerà se un comando esiste in luoghi diversi o in forme diverse. Ad esempio, esegui type -a [ e otterrai questo:

[ is a shell builtin
[ is /usr/bin/[
    
risposta data wjandrea 09.07.2016 - 03:10

Leggi altre domande sui tag