GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è il comando unix per scoprire quale file eseguibile corrisponde a un determinato comando?

Il comando da usare varia da shell a shell.

Solo un built-in della shell dirà correttamente cosa farà la shell per un dato nome di comando, poiché solo i built-in possono conoscere completamente alias, funzioni della shell, altri built-in e così via. Ricorda:non tutti i comandi corrispondono a file eseguibili in primo luogo.

  • Per la shell Bourne Again, bash , l'integrato è type comando:

    $ type '['
    [ is a shell builtin
    
  • Per il guscio di pesce, fish , Il type builtin funziona in modo simile a bash. Per ottenere solo il percorso di un eseguibile, usa command -v :

    $ type cat
    cat is /bin/cat
    $ command -v cat
    /bin/cat
    
  • Per il Korn Shell, ksh , l'integrato è il whence comando — con type inizialmente impostato come alias ordinario per whence -v e il command integrato con -v opzione equivalente a whence :

    $ whence -v ls
    ls is a tracked alias for /bin/ls
    
  • Per la shell Z, zsh , l'integrato è whence comando, con il command integrato con -v opzione equivalente a whence e il built-in type , which e where equivalente a whence con le opzioni -v , -c e -ca rispettivamente.

    $ whence ls
    /bin/ls
    
  • Per la TC Shell, tcsh , l'integrato è which command — da non confondere con nessun comando esterno con quel nome:

    > which ls
    ls: aliased to ls-F
    > which \ls
    /bin/ls
    

Ulteriori letture

  • https://unix.stackexchange.com/questions/85249/

Puoi usare which per questo:

[email protected]:~$ which ls
/bin/ls

Funziona cercando il PATH per i file eseguibili corrispondenti ai nomi degli argomenti. Nota che non funziona con gli alias della shell:

[email protected]:~$ alias listdir=/bin/ls
[email protected]:~$ listdir /
bin    dev   initrd.img      lib32   media  proc  selinux  tmp  vmlinuz
...
[email protected]:~$ which listdir
[email protected]:~$

type , tuttavia, funziona:

[email protected]:~$ type listdir
listdir is aliased to `/bin/ls'

which non (necessariamente) restituire il file eseguibile. Restituisce il primo file corrispondente nome trova nel $PATH (o in più file con nome simile quando si usa which -a )... L'effettivo l'eseguibile può essere a più collegamenti di distanza.

  • which locate
    /usr/bin/locate
    `
  • file $(which locate)
    /usr/bin/locate: symbolic link to /etc/alternatives/locate'

Il comando che trova il file effettivo eseguibile è readlink -e ,
(insieme a which )

  • readlink -e $(which locate)
    /usr/bin/mlocate

Per vedere tutti i link intermedi :

f="$(which locate)"             # find name in $PATH
printf "# %s\n" "$f"
while f="$(readlink "$f")" ;do  # follow links to executable
    printf "# %s\n" "$f"
done

# /usr/bin/locate
# /etc/alternatives/locate
# /usr/bin/mlocate

Linux
  1. È possibile scoprire quale programma o script ha creato un determinato file?

  2. Linux:scopri chi ha effettuato l'accesso al server

  3. Come scoprire quale gruppo ha un determinato utente?

  4. Qual è l'equivalente del comando File Linux per Windows?

  5. Apre un file dato dal risultato di un comando in vim

Linux:scopri su quale numero di porta è in ascolto un processo

qual è il comando più affidabile per trovare la dimensione effettiva di un file linux

Come combinare il comando 'tar' con 'find'

Come scoprire le directory o i file che consumano più spazio?

Come scoprire quale file si trova su un particolare settore

Qual è la sintassi corretta di find -exec