28 gennaio, 2020

Gestire la linea di comando del terminale


Non è vero che con Linux si usa sempre il terminale, quello che Windows chiama Prompt dei comandi (o almeno una volta era così, non so se vale ancora, non sono aggiornato), ma a volte è comodo, anzi --a dirla tutta-- sì, si usa così.

Per esempio con Python è normale invocare lo script seguito dal nome del (o dei) file(s) di dati, di output, dei parametri (se ci sono), anzi per questi la prassi è di indicarli per primi. No, non ho un esempio --anzi sì: un classico, il classico Hello World!

Questa è la versione più semplice in C, che metto nel file di testo hw.c

#include <stdio.h>
int main() {
   printf("Hello, World!");
   return 0;
}


Siccome mi conosco come pasticcione di solito (anche se in questo caso è ridondante) comincio con verificare che non ci siano errori (l'opzione -c compila, crea il file binario hw.o ma non l'eseguibile):

$ gcc -c hw.c
$


ok, nessun messaggio, sembra tutto a posto, creo l'eseguibile:

$ gcc -o hw hw.o
$ ./hw
Hello, World!$


quasi ok! cioè funziona ma manca l'a-capo finale, correggo il codice

#include <stdio.h>
int main() {
   printf("Hello, World!\n");
   return 0;
}


e ricompilo, questa volta --più fiducioso-- tutto in una passata:

$ gcc -o hw hw.c
$ ./hw
Hello, World!
$


ok! l'esempio è probabilmente troppo semplice ma si vede che i comandi dati nel terminale sono tutti molto simili e conviene quindi richiamarli con i tasti freccia.  (si può verificare con history, anzi --meglio-- history | tail -10).

Quando i comandi sono meno brevi, composti da parole più lunghe, ripercorrere tutta la riga di comando può essere tedioso. E allora ecco le scorciatoie per la gestione della riga. Uh, uso lo script per il testo colorato raccontato qui, questo è il file dei dati e-cmd:

_RESpostamento del cursore_ec
_ReHome_ec o _ReC-a_ec     : inizio della linea
_ReEnd_ec  o _ReC-e_ec     : fine della linea
frecce _Re<-_ec e _Re->_ec : un carattere per volta
_ReC_ec-frecce       : una parola per volta

_RECancellazione_ec
_ReC-k_ec : cancella fino alla fine della riga
_ReM-d_ec : cancella fino alla fine della parola
_ReC-w_ec : cancella fino all'inizio della parola

_REIncollare il testo cancellato_ec
_ReC-y_ec : incolla l'ultimo testo cancellato

_RECopiare_ec
_ReC-C_ec : copia il testo selezionato

_REIncollare_ec
_ReC-V_ec : incolla il testo negli appunti (clipboard)


che compilo ed eseguo


Ok! Ah! dimenticavo C-x sta per Ctrl+x e M-x per Alt+x (M sta per Meta), secondo le convenzioni di Emacs; per M-d il tasto Alt si è reso necessario perché C-d è predefinito e importantissimo (chiude il terminale). Notare inoltre che nel copia/incolla c'è il Maiusc.

H/T per SR, prezioso revisore remoto 🤩
🔴🔵

Nessun commento:

Posta un commento