Programmazione Ruby. Terminale per principianti - parte 2
Damian Watroba
Software Engineer
Questa volta abbiamo preparato un'altra serie di comandi utili per aiutarvi a familiarizzare con l'uso del terminale. La prima parte dell'esercitazione è disponibile qui: Terminale per principianti - parte 1.
Terminale - Teoria
Dove mi trovo?
data - Se abbiamo questa necessità e desiderio, possiamo controllare la data corrente nel terminale.
damian@rubydev:~$ data
wto, 7 sty 2020,
Adesione e quotazione
gatto (concatenare) - questo comando ha molti usi, ma il più popolare è la visualizzazione del contenuto dei file.
Nell'esempio qui sotto, si possono vedere due file - ruby_1.txt e ruby_2.txt - insieme al loro contenuto. Il cat [nome del file] mostra il contenuto di un singolo file, mentre il comando cat [nome file 1] [nome file 2] visualizza il contenuto di entrambi i file nell'ordine corretto.
C'è un'altra cosa che possiamo fare con il gatto reindirizza l'output standard a un nuovo file utilizzando il comando > segno. Ciò significa che il contenuto visualizzato sullo schermo verrà reindirizzato a un file dichiarato. Se il file indicato non esiste nella posizione specificata, verrà creato automaticamente.
Cosa abbiamo qui?
ps (stato dei processi) - stampa le informazioni di base sui processi del sistema. Questo comando è paragonabile al Task Manager di Windows, dove è presente un elenco di tutte le applicazioni e i processi in esecuzione. Ogni applicazione, programma o comando in esecuzione diventa un processo con un identificatore unico, il cosiddetto PID (Process IDentifier).
Come si può notare, il ps non ha mostrato molto. Per controllare tutti i processi attivi, dovremo chiamare il comando ps con un aux argomento.
Per quanto riguarda le procedure di sistema, è possibile utilizzare il sistema BSD:
ps ax
ps axu
uccidere - A volte un'applicazione o un programma smette di rispondere. Questo è il caso in cui uccidere è un comando utile. A uccidere un processo, tutto ciò che si deve fare è completare l'opzione uccidere con il suo PID.
Come si trova il PID di quel processo? È meglio usare il già citato ps aux comando. Può accadere che uccidere da solo non è sufficiente, perché il processo attende la fine di un altro processo dipendente. Pertanto, uccidere è spesso utilizzato anche con l'opzione -9 significa l'interruzione immediata del processo in corso. Significa la terminazione immediata del processo in esecuzione, quindi prima di usare questa opzione, assicuratevi che tutte le modifiche importanti siano state salvate. Vediamo un esempio di questo tipo di comando:
damian@rubydev:~$ kill -9 1234
Eco!
eco - è il comando che restituisce il testo affidatogli. Analogamente al caso di gattoè possibile indirizzare il testo inserito in un file con l'aiuto del comando eco comando.
Può essere utile
Quando si vuole visualizzare la cronologia dei comandi precedentemente inseriti, si può utilizzare il comando storia comando.
Se si vuole cancellare la finestra del terminale, è necessario il comando chiaro comando.
Il uscita come dice il nome, chiude il terminale o la scheda attualmente aperta.
L'inizio e la fine
Il testa visualizza l'inizio di un file o dello standard output. Il valore predefinito è quello delle prime dieci righe. È possibile personalizzarlo con il comando -n dove è possibile inserire qualsiasi numero intero sotto n. Per illustrare meglio questo aspetto, utilizzerò un esempio.
Avremo bisogno di un file di testo. Utilizziamo il già citato storia e il comando di reindirizzamento > carattere.
damian@rubydev:~$ history > history.txt
In questo modo è stato creato un file con l'intera cronologia dei comandi. Quindi, utilizzando head -15 history.txtè possibile visualizzare i primi quindici comandi immessi nel terminale.
Allo stesso modo, il coda mostrerà le righe finali del file selezionato.
Ricerca
grep (stampa globale di espressioni regolari) serve a cercare nel testo una stringa che corrisponda all'espressione regolare (RegExp) data. Si usa molto spesso per trovare un'espressione specifica in un file o per "filtrare" l'output restituito. A tale scopo, utilizziamo il file storia.txt e verificare la frequenza con cui il file ps è stato usato finora:
damian@rubydev:~$ grep ps history.txt
82 echo "Lorem ipsum rubydev 1" > ruby_1.txt
84 echo "Lorem ipsum rubydev 2" > ruby_2.txt
92 ps
93 ps aux
94 ps --help
95 man ps
96 ps -h
98 ps --help
99 ps -ejH
100 ps aux
101 man ps
102 ps -aux
103 ps aux
109 history | grep ps
113 echo "lorem ipsum rubydev" > rubydev.rb
Come si può vedere, grep ha trovato anche parole che contengono la frase ps. L'espressione utilizzata nel nostro esempio è ps solo. Ho in programma di scrivere un articolo separato sulle espressioni regolari, ma per il momento vi invito a esplorare l'argomento da soli. Le conoscenze di base sono sufficienti al momento.
Combinazione di comandi
| (pipe) è un simbolo che consente di combinare diversi comandi (processi) e di avviarli contemporaneamente. In particolare, è possibile combinare l'output (stdout) di un comando con l'input (stdin) dell'altro. È una funzione molto utile.
L'output (stdout) del programma storia sarà ricercato dal comando grep e restituisce tutte le stringhe con la corrispondenza ps espressione.
storia | coda -5
In questo caso, utilizzando l'opzione coda con il comando -5 visualizzerà le ultime cinque righe dell'output (stdout) del programma storia comando.
Questa combinazione è particolarmente utile quando si cerca il PID del processo che si vuole terminare. Ricordate che l'esecuzione del comando grep creerà anche un processo, quindi di solito si vedrà il PID del file grep nell'ultima riga.
Accesso a file e directory
Prima di passare al comando che modifica il tipo di permessi di accesso, è bene ricordare che ogni sistema operativo dispone dei cosiddetti diritti di accesso. Ciò significa che ogni directory o file contiene metadati relativi a chi vi ha accesso. La prima colonna del seguente "output" ci dice tutto (informazioni di output visualizzate nella finestra del terminale):
storia | coda -5
L'accesso a file e directory è definito da tre componenti. Il primo (utente) indica un singolo utente, il secondo (gruppo) indica un gruppo, mentre il terzo (altro) si applica a tutti gli altri utenti.
d - determina se si tratta di una directory o di un file (d - directory, f - file)
rwx - diritti dell'utente
r-x - permessi per il gruppo
r-x - autorizzato per tutti gli altri utenti
Per semplificare, si può dividere in tre parti:
Passiamo ora al significato stesso di questi diritti:
r (read) - permette di leggere il contenuto
w (scrittura) - permette di modificare il contenuto
x (execute) - consente di eseguire un file o di aprire una directory.
I permessi dei file o delle directory possono essere modificati utilizzando il comando chmod (change mode). Il modo più semplice per modificare i permessi è utilizzare il sistema incorporato e fornire il numero del permesso per l'utente, il gruppo e altri.
Per mettere in pratica queste conoscenze, modifichiamo i permessi per i file precedentemente elencati wideo per i gruppi e gli altri utenti, togliendo tutti i permessi per questi due, ma lasciando il permesso completo solo per il singolo utente. Secondo la tabella precedente, "nessun diritto" è indicato dal numero 0. Subito dopo il chmod è necessario inserire tre cifre, ognuna delle quali specifica i diritti per la categoria data (utente - gruppo - altri). Alla fine, si deve indicare il nome del file o della directory. Il comando dovrebbe avere il seguente aspetto:
damian@rubydev:~$ chmod 700 Wideo
damian@rubydev:~$ ls -l | tail -1
drwx------ 2 damian damian 4096 sty 6 17:41 Wideo
Sintesi
Esiste un intero sciame di altri comandi e il modo più semplice per padroneggiarli tutti è esercitarsi a risolvere problemi specifici. Se volete saperne di più, Raccomando il lessico tascabile dei comandi di Linux. A mio parere, è un modo piacevole per ammazzare il tempo durante il trasporto pubblico.