Crea sito
20 Ottobre 2020

Officine Informatiche Roma

ICT SERVICES ROMA – BAZAAR INFORMATICO

LINUX COMMAND GUIDE 8 – Comandi avanzati tastiera

9 min read
Spesso descrivo scherzosamente Unix come "il sistema operativo per le persone a cui piace scrivere". Naturalmente, il fatto che abbia persino una riga di comando ne è una testimonianza; tuttavia, agli utenti della riga di comando non piace digitare così tanto. Perché altrimenti così tanti comandi avrebbero nomi così brevi come cp, ls, mv e rm . In effetti, uno degli obiettivi più preziosi della riga di comando è la pigrizia: fare più lavoro con il minor numero di tasti. Un altro obiettivo è non dover mai sollevare le dita dalla tastiera e raggiungere il mouse.In questo capitolo esamineremo le funzionalità di bash che rendono l'uso della tastiera più veloce ed efficiente.

Spesso descrivo scherzosamente Unix come “il sistema operativo per le persone a cui piace scrivere”. Naturalmente, il fatto che abbia persino una riga di comando ne è una testimonianza; tuttavia, agli utenti della riga di comando non piace digitare così tanto. Perché altrimenti così tanti comandi avrebbero nomi così brevi come cp, ls, mv e rm . In effetti, uno degli obiettivi più preziosi della riga di comando è la pigrizia: fare più lavoro con il minor numero di tasti. Un altro obiettivo è non dover mai sollevare le dita dalla tastiera e raggiungere il mouse.In questo capitolo esamineremo le funzionalità di bash che rendono l’uso della tastiera più veloce ed efficiente.

Appariranno i seguenti comandi: 

clear                          Cancella la schermata del terminale

history                       Visualizza o modifica l’elenco cronologico

Modifica dalla riga di comando

bash usa una libreria (una raccolta condivisa di routine che possono usare diversi programmi) chiamata Readline per implementare la modifica della riga di comando. Ne abbiamo già visto un po ‘. Sappiamo, ad esempio, che i tasti freccia spostano il cursore, ma ci sono molte altre funzionalità. Pensa a questi come strumenti aggiuntivi che possiamo impiegare nel nostro lavoro. Non è importante impararli tutti, ma molti sono molto utili. Seleziona e scegli come desideri.

NOTA: Alcune delle sequenze di tasti trattate in questo capitolo (in particolare quelle che usano il tasto alt) possono essere intercettate dalla GUI per altre funzioni. Tutte le sequenze di tasti dovrebbero funzionare correttamente quando si utilizza una console virtuale.

Movimento del cursore

La Tabella 8-1 descrive i tasti utilizzati per spostare il cursore.

Tabella 8-1: Comandi di movimento del cursore

Chiave                                    Azione

ctrl-A                                    Sposta il cursore all’inizio della riga.

ctrl-E                                    Sposta il cursore alla fine della riga.

ctrl-F                                    Sposta il cursore in avanti di un carattere; come il tasto freccia destra.

ctrl-B                                    Sposta il cursore indietro di un carattere; come il tasto freccia sinistra.

alt-F                                      Sposta il cursore in avanti di una parola.

alt-B                                     Sposta il cursore indietro di una parola.

ctrl-L                                    Cancella lo schermo e sposta il cursore nell’angolo in alto a sinistra. Il comando clear fa la stessa cosa.

Modifica del testo

Poiché è possibile che durante la composizione dei comandi possiamo commettere un errore, abbiamo bisogno di un modo per correggerli in modo efficiente. La Tabella 8-2 descrive i comandi da tastiera utilizzati per modificare i caratteri sulla riga comandi.

                                Tabella 8-2: comandi di modifica del testo

  Chiave                                      Azione                

ctrl-D                                    Elimina il carattere nella posizione del cursore.

ctrl-T                                    Traspone (scambia) il carattere nella posizione del cursore con quello che lo precede.

alt-T                                     Traspone la parola nella posizione del cursore con quella che la precede.

alt-L                                     Converte i caratteri dalla posizione del cursore alla fine della parola in minuscolo.

alt-U                                    Converte i caratteri dalla posizione del cursore alla fine della parola in maiuscolo.

Tagliare e incollare il testo

La documentazione di Readline usa i termini killing and yanking per fare riferimento a ciò che chiameremmo comunemente tagliare e incollare (vedere la Tabella 8-3). Gli elementi che vengono tagliati vengono memorizzati in un buffer (un’area di memoria temporanea in memoria) chiamata kill-ring.

Tabella 8-3: Comandi taglia e incolla

Chiave                                Azione

ctrl-K                            Taglia il testo dalla posizione del cursore alla fine della riga.

ctrl-U                            Taglia il testo dalla posizione del cursore all’inizio della riga.

alt-D                             Taglia il testo dalla posizione del cursore alla fine della parola corrente.

alt-backspace              Taglia il testo dalla posizione del cursore all’inizio della parola corrente.

                                      Se il cursore si trova all’inizio di una  parola, taglia la parola precedente.

ctrl-Y                             Incolla testo dal kill-ring e lo  inserisce nella posizione del cursore

La chiave Meta

Se ti avventuri nella documentazione di Readline, che puoi trovare nella sezione “READLINE” della pagina man di bash, troverai il termine meta chiave. Sulle tastiere moderne, questo è mappato al tasto alt; tuttavia, non è stato sempre così. Nei tempi bui (prima dei PC ma dopo Unix), non tutti avevano il proprio computer. Ciò che avrebbero potuto avere era un dispositivo chiamato terminale. Un terminale era un dispositivo di comunicazione che presentava uno schermo di visualizzazione del testo e una tastiera e abbastanza elettronica al suo interno per visualizzare caratteri di testo e spostare il cursore. Era collegato (di solito tramite cavo seriale) a un computer più grande o alla rete di comunicazione di un computer più grande. C’erano molte marche di terminali diverse e tutte avevano tastiere e set di funzioni di visualizzazione diversi. Poiché tendevano tutti almeno a comprendere ASCII, gli sviluppatori di software che desideravano applicazioni portatili scrivevano al minimo comune denominatore. I sistemi Unix hanno un modo elaborato di gestire i terminali e le loro diverse caratteristiche di visualizzazione. Poiché gli sviluppatori di Readline non potevano essere sicuri della presenza di un tasto di controllo aggiuntivo dedicato, ne inventarono uno e lo chiamarono meta. Mentre il tasto alt funge da meta-chiave sulle tastiere moderne, puoi anche premere e rilasciare il tasto esc per ottenere lo stesso effetto che tieni premuto il tasto alt se stai ancora usando un terminale (cosa che puoi ancora fare in Linux! ).

Completamento

Un altro modo in cui la shell può aiutarti è attraverso un meccanismo chiamato completamento. Il completamento si verifica quando si preme il tasto Tab durante la digitazione di un comando. Vediamo come funziona.

Data una home directory che assomiglia a questa:

[me @ linuxbox ~] $ ls

Desktop ls-output.txt Immagini Modelli Video  Documenti Music Public

prova a digitare quanto segue, ma non premere invio:

[me @ linuxbox ~] $ ls l

Ora premi tab.

[me @ linuxbox ~] $ ls ls-output.txt

Vedi come la shell ha completato la linea per te? Proviamo un altro.

Ancora una volta, non premere Invio.

[me @ linuxbox ~] $ ls D

Premi tab.

[me @ linuxbox ~] $ ls D

Nessun completamento, proprio niente.

Ciò è accaduto perché D corrisponde a più di una voce nella directory.

Perché il completamento abbia successo, l ‘”indizio” che gli dai deve essere inequivocabile.

Se andiamo oltre, come per quanto segue:

[me @ linuxbox ~] $ ls Do

e quindi premere tab:

[me @ linuxbox ~] $ ls Documents

il completamento è andato a buon fine.  Mentre questo esempio mostra il completamento di nomi di percorso, che è il suo uso più comune, il completamento funzionerà anche su variabili (se l’inizio della parola è $), nomi utente (se la parola inizia con ~), comandi (se la parola è il prima parola sulla riga) e nomi host (se l’inizio della parola è @). Il completamento del nome host funziona solo per i nomi host elencati in / etc / hosts. Un certo numero di sequenze di controllo e meta-chiave sono associate al completamento, come elencato nella Tabella 8-4.

Tabella 8-4: comandi di completamento

Azione                 Chiave

ALT-?                   Visualizza un elenco di possibili completamenti. Sulla maggior parte dei sistemi, puoi anche farlo premendo il                               tasto Tab una seconda volta, il che è molto più semplice.

alt- *                    Inserisci tutti i possibili completamenti. Ciò è utile quando si desidera utilizzare più di una possibile                                                     corrispondenza. Ce ne sono molti altri che sono piuttosto oscuri. Un elenco appare nella pagina man di bash                                     sotto “READLINE”.

Completamento programmabile

Le versioni recenti di bash hanno una funzione chiamata completamento programmabile. Il completamento programmabile consente all’utente (o più probabilmente al proprio fornitore di distribuzione) di aggiungere ulteriori regole di completamento. Di solito questo viene fatto per aggiungere supporto per applicazioni specifiche. Ad esempio, è possibile aggiungere completamenti per l’elenco di opzioni di un comando o abbinare determinati tipi di file supportati da un’applicazione. Ubuntu ha un set abbastanza grande definito di default. Il completamento programmabile è implementato dalle funzioni della shell, una sorta di mini script della shell che tratteremo nei capitoli successivi.

Se sei curioso, prova quanto segue:

set | less

Ora vedi se riesci a trovarli. Non tutte le distribuzioni le includono per impostazione predefinita.

Utilizzando la cronologia

Come abbiamo scoperto nel Capitolo 1, bash mantiene una cronologia dei comandi che sono stati immessi. Questo elenco di comandi viene conservato nella directory home in un file chiamato bash_history. La funzione di cronologia è una risorsa utile per ridurre la quantità di digitazione da eseguire, soprattutto se combinata con la modifica della riga di comando.

Ricerca nella cronologia

In qualsiasi momento, è possibile visualizzare i contenuti dell’elenco cronologico dei comandi nel modo seguente:

[[email protected] ~]$ history | less

Per impostazione predefinita, bash memorizza gli ultimi 500 comandi che abbiamo inserito, sebbene la maggior parte delle distribuzioni moderne impostino questo valore su 1.000. Vedremo come regolare questo valore nel Capitolo 11.

Diciamo che vogliamo trovare i comandi che abbiamo usato per elencare / usr / bin.

Questo è il modo per farlo:

[me @ linuxbox ~] $ history | grep / usr / bin

E diciamo che tra i nostri risultati abbiamo una riga contenente un comando interessante come questo:

88 ls -l / usr / bin> ls-output.txt

88 è il numero di riga del comando nell’elenco cronologico.

Potremmo usarlo immediatamente usando un altro tipo di espansione chiamata espansione della storia.

Per usare la nostra linea scoperta, potremmo fare questo:

[me @ linuxbox ~] $! 88 bash espande! 88 nei contenuti dell’88a riga nell’elenco cronologico.

Ci sono altre forme di espansione della storia che tratteremo nella prossima sezione. Bash offre anche la possibilità di effettuare ricerche nell’elenco cronologico in modo incrementale.

Ciò significa che possiamo dire a bash di cercare nell’elenco della cronologia mentre inseriamo i caratteri, con ogni personaggio aggiuntivo che perfeziona ulteriormente la nostra ricerca.

Per avviare la ricerca incrementale, premi ctrl-R seguito dal testo che stai cercando.

Quando lo trovi, puoi premere Invio per eseguire il comando o premere ctrl-J per copiare la riga dall’elenco cronologico alla riga di comando corrente.

Per trovare la ricorrenza successiva del testo (spostando “in alto” l’elenco della cronologia), premere nuovamente Ctrl-R.

Per uscire dalla ricerca, premi ctrl-G o ctrl-C.

Qui lo vediamo in azione:

[me @ linuxbox ~] $

Prima premi ctrl-R.

(Reverse-i-search) ` ‘:

Il prompt cambia per indicare che stiamo eseguendo un contrario ricerca incrementale. È “inverso” perché stiamo cercando da “ora” a qualche tempo fa.

Successivamente, iniziamo a digitare il nostro testo di ricerca.

In questo esempio, stiamo cercando / usr / bin:

(reverse-i-search) `/ usr / bin ‘: ls -l / usr / bin> ls-output.txt

Immediatamente, la ricerca restituisce il nostro risultato.

Con il nostro risultato, possiamo eseguire il comando premendo invio, oppure possiamo copiare il comando nella nostra riga di comando corrente per ulteriori modifiche premendo ctrl-J.

Copiamolo.

Premi Ctrl-J.

[me @ linuxbox ~] $ ls -l / usr / bin> ls-output.txt

Il nostro prompt della shell ritorna e la nostra riga di comando è caricata e pronta

La Tabella 8-5 elenca alcuni dei tasti usati per manipolare l’elenco della cronologia.

 Tabella 8-5: comandi storici

Azione                    Chiave

ctrl-P                   Passa alla voce della cronologia precedente. Questa è la stessa azione della freccia su.

ctrl-N                   Passa alla voce successiva della cronologia. Questa è la stessa azione della freccia giù.

alt- <                    Sposta all’inizio (in alto) dell’elenco cronologico.

alt->                     Sposta alla fine (in basso) dell’elenco cronologico, ovvero la riga di comando corrente.

ctrl-R                   Ricerca incrementale inversa. Questo cerca in modo incrementale dal comando corrente

                             allinea l’elenco della cronologia.

alt-P                     Ricerca inversa, non incrementale. Con questa chiave, digitare la stringa di ricerca e

premere Invio prima di eseguire la ricerca.

alt-N                     Ricerca in avanti, non incrementale.

ctrl-O                   Esegue l’elemento corrente nell’elenco cronologico e passa a quello successivo.

Questo è utile se si sta tentando di rieseguire una sequenza di comandi in ordine cronologico.

Espansione della storia

La shell offre un tipo specializzato di espansione per gli elementi nell’elenco della cronologia usando ! carattere. Abbiamo già visto come il punto esclamativo può essere seguito da un numero per inserire una voce dall’elenco cronologico.

Esistono diverse altre funzioni di espansione, come descritto nella Tabella 8-6.

Tabella 8-6: comandi di espansione della cronologia

Azione                                      Sequenza

!!                                Ripeti l’ultimo comando. Probabilmente è più facile premere la freccia su ed entra.

! number                  Ripete il numero della voce dell’elenco cronologico.

! string                      Ripete l’ultima voce dell’elenco cronologico che inizia con string.

!? string                    Ripete la voce dell’elenco della cronologia precedente contenente la stringa.

 Utilizzare con attenzione i moduli ! String e !? String a meno che tu non sia assolutamente sicuro del contenuto delle voci dell’elenco cronologico.

Molti altri elementi sono disponibili nel meccanismo di espansione della storia, ma questo argomento è già troppo arcano e le nostre teste potrebbero esplodere se continuiamo.

La sezione “ESPANSIONE STORIA” della pagina man di bash è piena zeppa di dettagli.

Sentiti libero di esplorare!

                                                       SCRIPT

Oltre alla funzionalità della cronologia dei comandi in bash, la maggior parte delle distribuzioni Linux include un programma chiamato script che può essere utilizzato per registrare un’intera sessione della shell e memorizzarla in un file.

La sintassi di base del comando è la seguente:

                             script file

Dove “file” è il nome del file utilizzato per la memorizzazione della registrazione. Se non viene specificato alcun file, viene utilizzato il dattiloscritto del file.

Vedi la pagina man dello script per un elenco completo delle opzioni e funzionalità del programma.

Riassumendo

In questo capitolo, abbiamo trattato alcuni dei trucchi della tastiera forniti dalla shell per aiutare i dattilografi a ridurre i loro carichi di lavoro. Col passare del tempo e diventando più coinvolti con la riga di comando, possiamo fare riferimento a questo capitolo per raccogliere più di questi trucchi. Per ora, considerali opzionali e potenzialmente utili.

Translate »