Ricerca…


introduzione

La shell esegue un programma in risposta al suo prompt. Quando si assegna un comando, la shell cerca il programma e quindi lo esegue. Ad esempio, quando si assegna il comando ls, la shell cerca l'utilità / programma denominata ls e quindi la esegue nella shell. Gli argomenti e le opzioni fornite con le utilità possono influire sul risultato ottenuto. La shell è anche nota come CLI o interfaccia a riga di comando.

Cambiare la shell di default

La maggior parte delle distribuzioni moderne verrà fornita con BASH ( B ourne A gain SH ell) preinstallata e configurata come shell di default.

Il comando (in realtà un binario eseguibile, un ELF) responsabile della modifica delle shell in Linux è chsh ( ch ange sh ell).

Possiamo prima controllare quali shell sono già installate e configurate sulla nostra macchina usando il comando chsh -l , che produrrà un risultato simile a questo:

[user@localhost ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish

In alcune distribuzioni Linux, chsh -l non è valido. In questo caso, l'elenco di tutte le shell disponibili può essere trovato nel file / etc / shells. Puoi mostrare il contenuto del file con cat :

[user@localhost ~]$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/usr/bin/fish

Ora possiamo scegliere la nostra nuova shell di default, ad esempio fish , e configurarla usando chsh -s ,

[user@localhost ~]$ chsh -s /usr/bin/fish
Changing shell for user.
Password: 
Shell changed.

Ora tutto ciò che resta da fare è preformare un ciclo di logoff-logon e goderti la nostra nuova shell di default.

Se si desidera modificare la shell predefinita per un utente diverso e si dispone di privilegi amministrativi sulla macchina, sarà possibile eseguire questa operazione utilizzando chsh come root . Quindi, supponendo di voler cambiare la shell predefinita di user_2 in fish, useremo lo stesso comando di prima, ma con l'aggiunta del nome utente dell'altro utente, chsh -s /usr/bin/fish user_2 .

Per verificare quale sia la shell di default corrente, possiamo visualizzare la variabile di ambiente $SHELL , che punta al percorso della nostra shell predefinita, quindi dopo la nostra modifica ci aspetteremmo di ottenere un risultato simile a questo,

 ~  echo $SHELL                                 
/usr/bin/fish

opzioni chsh :

-s shell

Imposta shell come shell di login.

-l , --list-shells

Stampa l'elenco delle shell elencate in / etc / shells ed esci.

-h , --help

Stampa un messaggio di utilizzo ed esci.

-v , --version

Stampa le informazioni sulla versione ed esci.

Basic Shell Utilities


Personalizzazione del prompt della shell

Il prompt dei comandi predefinito può essere modificato per apparire diverso e breve. Nel caso in cui la directory corrente sia lunga, il prompt dei comandi predefinito diventa troppo grande. L'utilizzo di PS1 diventa utile in questi casi. Un comando breve e personalizzato carino ed elegante. Nella tabella seguente PS1 è stato utilizzato con un numero di argomenti per mostrare diverse forme di prompt della shell. Il prompt dei comandi di default assomiglia a questo: user@host ~ $ nel mio caso si presenta così: bruce@gotham ~ $ . Può essere modificato come da tabella seguente:

Comando Utilità
PS1 = '\ w $' ~ $ prompt della shell come nome della directory. In questo caso la directory root è root.
PS1 = '\ h $' prompt di shell di gotham $ come nome host
PS1 = '\ u $' prompt di bruce $ shell come nome utente
PS1 = '\ t $' 22:37:31 $ prompt della shell 22:37:31 $ nel formato 24 ore
PS1 = '@ $' 10:37 PM prompt della shell in formato 12 ore
PS1 = '! $ ' 732 mostrerà il numero di cronologia del comando al posto del prompt della shell
PS1 = 'Dude $' dude $ mostrerà il prompt della shell nel modo che preferisci

Alcuni comandi di shell di base

Comando Utilità
Ctrl-k taglio / kill
Ctrl-y Yank / incolla
Ctrl-a porterà il cursore all'inizio della linea
Ctrl-e porterà il cursore alla fine della linea
Ctrl-d cancellerà il carattere dopo / al cursore
Ctrl-l cancellerà lo schermo / terminale
Ctrl-u cancellerà tutto tra prompt e il cursore
Ctrl-_ annullerà l'ultima cosa digitata sulla riga di comando
Ctrl-c interromperà / interromperà il processo / processo in esecuzione in primo piano
Ctrl-r invertire la ricerca nella storia
~/.bash_history memorizza gli ultimi 500 comandi / eventi usati nella shell
history mostrerà la cronologia dei comandi
history | grep <key-word> mostrerà tutti i comandi nella cronologia con la parola chiave <parola-chiave> (utile nei casi in cui ricordi parte del comando usato in passato)

Crea il tuo Alias ​​di comando

Se sei stanco di usare lunghi comandi in bash puoi creare il tuo alias di comando.

Il modo migliore per farlo è modificare (o creare se non esiste) un file chiamato .bash_aliases nella tua cartella home. La sintassi generale è:

alias command_alias='actual_command'

dove actual_command è il comando che si sta rinominando e command_alias è il nuovo nome che gli è stato assegnato. Per esempio

alias install='sudo apt-get -y install'

esegue il mapping del nuovo comando alias install al comando effettivo sudo apt-get -y install . Ciò significa che quando si utilizza l' installazione in un terminale questo viene interpretato da bash come sudo apt-get -y install .

Trova un file sul tuo sistema

Usando bash puoi facilmente localizzare un file con il comando locate . Ad esempio, supponiamo che stai cercando il file mykey.pem:

locate mykey.pem

A volte i file hanno nomi strani, ad esempio potresti avere un file come random7897_mykey_0fidw.pem . Diciamo che stai cercando questo file ma ti ricordi solo le parti mykey e pem. Puoi combinare il comando locate con grep usando una pipe come questa:

locate pem | grep mykey

Quale porterebbe su tutti i risultati che contengono entrambi questi pezzi.

Si noti che non tutti i sistemi hanno installato l'utilità di locate e molti che non l'hanno abilitato. locate è veloce ed efficiente perché analizza periodicamente il tuo sistema e memorizza nella cache i nomi e le posizioni per ogni file su di esso, ma se quella raccolta di dati non è abilitata allora non può dirti nulla. È possibile utilizzare updatedb per avviare manualmente la scansione del filesystem per aggiornare le informazioni memorizzate nella cache relative ai file sul proprio filesystem.

Se non si dispone di un gruppo di lavoro locate , si può ripiegare sul find di utilità:

find / -name mykey.pem -print

è approssimativamente equivalente a locate mykey.pem ma deve eseguire la scansione del / dei filesystem ogni volta che viene eseguito per il file in questione, piuttosto che usare i dati nella cache. Questo è ovviamente più lento e meno efficiente, ma più in tempo reale. L'utilità di find può fare molto di più che trovare i file, ma una descrizione completa delle sue capacità va oltre lo scopo di questo esempio.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow