Come usare quale comando su Linux

Una finestra di terminale in esecuzione su un computer portatile Linux.

Fatmawati Achmad Zaenuri/Shutterstock



Il Linux |_+_| comando identifica il binario eseguibile che viene avviato quando si invia un comando alla shell. Se hai diverse versioni dello stesso programma sul tuo computer, puoi usare |_+_| per scoprire quale utilizzerà la shell.

Binari e percorsi

Quando si tenta di eseguire un programma o un comando dalla finestra del terminale, la shell (di solito, bash sulle distribuzioni moderne) deve trovare quel comando e lanciarlo. Alcuni comandi, come cd , storia , e pwd , sono integrati nella shell, quindi Bash non deve lavorare troppo per trovarli.





10 comandi di base di Linux per principianti IMPARENTATO 10 comandi di base di Linux per principianti

Ma come fa Bash a individuare altri comandi, programmi e binari autonomi esterni? Bene, Bash usa il percorso, che in realtà è una raccolta di percorsi, ognuno dei quali punta a una directory. Quindi cerca in ciascuna di quelle directory un eseguibile che corrisponda al comando o al programma che stai cercando di eseguire. Quando ne trova uno, Bash lo avvia e abbandona la ricerca.

Puoi usare |_+_| per controllare il |_+_| variabile d'ambiente e vedere le directory nel tuo percorso. Per farlo, digita quanto segue, quindi premi Invio:



which

L'elenco di output separa ogni percorso con i due punti (:). Sul computer che stiamo utilizzando, Bash cercherà le seguenti directory in questo ordine:

  • which
  • echo
  • $PATH
  • /usr/local/sbin
  • /usr/local/bin
  • /usr/sbin
  • /usr/bin
  • /sbin
  • /bin
Annuncio pubblicitario

Ci sono molte cartelle chiamate |_+_| e |_+_| nel file system, il che può creare confusione.



Guarda quei percorsi

Diciamo che abbiamo una versione aggiornata di un programma chiamato |_+_|. È nella nostra directory corrente e possiamo eseguirlo digitando il seguente comando:

/user/games

Non è un gran programma: stampa solo il numero di versione e poi si chiude. La nuova versione è 1.2.138.

Per eseguire un programma nella directory di lavoro corrente, devi digitare ./ davanti al nome del programma, in modo che Bash sappia dove trovarlo.

Poiché vogliamo eseguire questo particolare programma da qualsiasi directory, sposteremo l'eseguibile nella cartella |_+_| directory. Bash troverà quel programma nel percorso e lo eseguirà per noi.

Non abbiamo bisogno dell'eseguibile nella nostra directory corrente, né abbiamo bisogno di digitare ./ davanti al nome del programma, come mostrato di seguito:

/usr/local/games

Ora, proviamo a eseguire il programma digitando:

/snap/bin

Annuncio pubblicitario

Qualcosa funziona, ma non è il nostro nuovo programma aggiornato. Piuttosto, è la versione precedente, 1.2.105.

Il quale comando

Il problema che abbiamo dimostrato sopra è il motivo per cui |_+_| comando è stato progettato .

In questo esempio, useremo |_+_| e passa il nome del programma che stiamo studiando come parametro della riga di comando:

/sbin

|_+_| segnala che è stata trovata una versione di |_+_| nel |_+_| directory. Poiché tale posizione appare nel percorso prima della directory in cui abbiamo spostato l'aggiornamento |_+_|, Bash utilizza quella versione precedente del programma.

Tuttavia, se usiamo |_+_| (tutti) come mostrato di seguito, |_+_| continua la ricerca anche se trova una corrispondenza:

/bin

Quindi elenca tutte le corrispondenze in una qualsiasi delle directory nel percorso.

Annuncio pubblicitario

Quindi, questo è il problema: c'è una versione precedente del programma in una directory che è anche nella patch. E quella directory viene cercata prima della directory in cui è stata rilasciata la nuova versione del programma.

Per verificare, possiamo digitare quanto segue ed eseguire esplicitamente ogni versione del programma:

htg ./htg

Questo spiega il problema e la soluzione è semplice.

In realtà, abbiamo delle opzioni. Possiamo eliminare la vecchia versione in |_+_| o spostalo da |_+_| a |_+_|.

Guarda quei risultati

Due risultati non significano necessariamente due file binari.

Diamo un'occhiata a un esempio in cui useremo il |_+_| comando con |_+_| (all) e cerca le versioni di |_+_| programma:

/usr/bin

|_+_| riporta due posizioni che ospitano una versione del |_+_| programma, ma è vero? Sarebbe strano avere due versioni diverse (o la stessa versione in più posizioni) di |_+_| installato su un computer Linux. Quindi, non accetteremo l'output da |_+_|. Invece, scaviamo un po' più a fondo.

Possiamo usare |_+_|, |_+_| (elenco lungo), e |_+_| (leggibile dall'uomo) opzioni per vedere cosa sta succedendo:

which

Annuncio pubblicitario

La dimensione del file è indicata come nove byte! Non è sicuramente una copia completa di |_+_|.

Il primo carattere dell'elenco è una l. Un file normale avrebbe un trattino (-) come primo carattere. La l è un simbolo che significa collegamento simbolico . Se ti sei perso questo dettaglio, il |_+_| il simbolo indica anche che questo è un collegamento simbolico , che puoi considerare come una sorta di scorciatoia. Questo punta alla copia di |_+_| in |_+_|.

Riproviamo con la versione di |_+_| tra |_+_|:

which

Questa voce è ovviamente un vero eseguibile binario. Il primo carattere dell'elenco è un trattino (-), il che significa che è un file normale e la dimensione del file è 167 KB. Quindi, solo una copia di |_+_| è installato, ma c'è un collegamento simbolico ad esso da un'altra directory, che Bash trova anche quando cerca il percorso.

IMPARENTATO: Come utilizzare il comando ls per elencare file e directory su Linux

Controllo di più comandi contemporaneamente

Puoi passare più programmi e comandi a |_+_| e li controllerà in ordine.

Ad esempio, se digiti:

which

|_+_| funziona attraverso l'elenco dei programmi e dei comandi che gli hai fornito ed elenca il risultato per ciascuno di essi.

Quale quale è quale?

Se sei così propenso, puoi anche usare |_+_| su se stesso digitando quanto segue:

htgAnnuncio pubblicitario

Oltre a curiosare nel file system Linux per curiosità, |_+_| è più utile quando ci si aspetta un insieme di comportamenti da un comando o un programma, ma ne ottieni un altro.

Puoi usare |_+_| in questi casi per verificare che il comando che Bash sta lanciando sia quello che vuoi usare.

Comandi Linux
File catrame · pv · gatto · tac · chmod · presa · differenza · sed · Con · uomo · spinto · popd · fsck · testdisk · seguito · fd · pandoc · cd · $PATH · awk · giuntura · jq · piega · unico · journalctl · coda · stato · ls · fstab · buttato fuori · meno · chgrp · chown · rev · Guarda · stringhe · genere · rinominare · cerniera lampo · decomprimere · montare · smontare · installare · fdisk · mkfs · rm · rmdir · rsync · df · gpg · noi · nano · mkdir · a partire dal · ln · toppa · convertire · rclone · brandello · SRM
Processi alias · schermo · superiore · Bello · renice · progresso · strace · sistema · tmux · chsh · storia · in · lotto · libero · quale · dmesg · usermod · ps · chroot · xargs · tty · mignolo · lsof · vmstat · tempo scaduto · parete · · uccisione · dormire · sudo · il suo · volta · gruppoaggiungi · usermod · gruppi · lshw · spegnimento · riavviare · fermare · spegni · passwd · lscpu · crontab · Data · bg · fg
Rete netstat · ping · traceroute · ip · ss · chi è · fail2ban · bmon · voi · dito · nmap · ftp · arricciare · wget · chi · chi sono · In · iptables · ssh-keygen · ufw

IMPARENTATO: I migliori laptop Linux per sviluppatori e appassionati

LEGGI SUCCESSIVO Foto del profilo di Dave McKay Dave McKay
Dave McKay ha usato per la prima volta i computer quando era in voga il nastro di carta perforata, e da allora ha programmato. Dopo oltre 30 anni nel settore IT, ora è un giornalista tecnologico a tempo pieno. Durante la sua carriera ha lavorato come programmatore freelance, manager di un team internazionale di sviluppo software, project manager di servizi IT e, più recentemente, come Data Protection Officer. I suoi scritti sono stati pubblicati da howtogeek.com, cloudavvyit.com, itenterpriser.com e opensource.com. Dave è un evangelista di Linux e un sostenitore dell'open source.
Leggi la biografia completa

Articoli Interessanti