GNU/Linux >> Znalost Linux >  >> Linux

Jaký je unixový příkaz ke zjištění, jaký spustitelný soubor odpovídá danému příkazu?

Příkaz, který se má použít, se liší shell od shellu.

Pouze vestavěný shell řekne správně, co shell udělá pro daný název příkazu, protože pouze vestavěné mohou plně vědět o aliasech, funkcích shellu, dalších vestavěných a tak dále. Pamatujte:Ne všechny příkazy v první řadě odpovídají spustitelným souborům.

  • Pro shell Bourne Again, bash , vestavěný je type příkaz:

    $ type '['
    [ is a shell builtin
    
  • Pro rybí skořápku fish , type vestavěný funguje podobně jako bash. Chcete-li získat pouze cestu ke spustitelnému souboru, použijte command -v :

    $ type cat
    cat is /bin/cat
    $ command -v cat
    /bin/cat
    
  • Pro Korn Shell, ksh , vestavěný je whence příkaz — s type původně nastaven jako běžný alias pro whence -v a command vestavěný s -v možnost ekvivalentní whence :

    $ whence -v ls
    ls is a tracked alias for /bin/ls
    
  • Pro Z Shell, zsh , vestavěný je whence pomocí příkazu command vestavěný s -v možnost ekvivalentní whence a vestavěné type , which a where ekvivalentní whence s možnostmi -v , -c a -ca respektive.

    $ whence ls
    /bin/ls
    
  • Pro TC Shell, tcsh , vestavěný je which příkaz — nezaměňovat s žádným externím příkazem s tímto názvem:

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

Další čtení

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

Můžete použít which pro toto:

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

Funguje to tak, že vyhledáte PATH pro spustitelné soubory odpovídající názvům argumentů. Všimněte si, že nefunguje s aliasy shellu:

[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 , nicméně funguje:

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

which ne (nutně) vrátit spustitelný soubor. Vrátí první odpovídající název souboru najde v $PATH (nebo více podobných pojmenovaných souborů při použití which -a )... skutečný spustitelný soubor může být vzdálen několik odkazů.

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

Příkaz, který vyhledá aktuální spustitelný soubor je readlink -e ,
(ve spojení s which )

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

Chcete-li zobrazit všechny mezilehlé odkazy :

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. Najděte soubory a adresáře v Linuxu pomocí příkazu find

  2. Jak zjistit, co dělá příkaz Linuxu

  3. Je možné zjistit, jaký program nebo skript vytvořil daný soubor?

  1. Je možné zjistit, který Vim/tmux má soubor otevřený?

  2. Jak zjistit, jaký soubor je v konkrétním sektoru

  3. Otevřete soubor daný výsledkem příkazu ve vim

  1. Jaká jsou legitimní použití příkazu `touch`?

  2. Jaká je správná syntaxe find -exec

  3. Jak najít soubor .pid pro daný proces