GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist der Unix-Befehl, um herauszufinden, welche ausführbare Datei einem bestimmten Befehl entspricht?

Der zu verwendende Befehl variiert von Shell zu Shell.

Nur eine eingebaute Shell wird einem korrekt sagen, was die Shell für einen bestimmten Befehlsnamen tun wird, da nur eingebaute Aliase vollständig über Aliase, Shell-Funktionen, andere eingebaute Funktionen und so weiter Bescheid wissen können. Denken Sie daran:Nicht alle Befehle entsprechen in erster Linie ausführbaren Dateien.

  • Für die Bourne Again-Shell bash , der eingebaute ist der type Befehl:

    $ type '['
    [ is a shell builtin
    
  • Für die Fischschale, fish , Die type builtin funktioniert ähnlich wie bash. Um nur den Pfad zu einer ausführbaren Datei zu erhalten, verwenden Sie command -v :

    $ type cat
    cat is /bin/cat
    $ command -v cat
    /bin/cat
    
  • Für die Korn-Shell ksh , der eingebaute ist der whence Befehl — mit type zunächst als gewöhnlicher Alias ​​für whence -v eingerichtet und die command eingebaut mit -v Option entspricht whence :

    $ whence -v ls
    ls is a tracked alias for /bin/ls
    
  • Für die Z-Shell zsh , der eingebaute ist der whence Befehl, mit dem command eingebaut mit -v Option entspricht whence und die eingebauten type , which , und where Äquivalent zu whence mit den Optionen -v , -c , und -ca bzw..

    $ whence ls
    /bin/ls
    
  • Für die TC-Shell tcsh , der eingebaute ist der which Befehl – ​​nicht zu verwechseln mit einem externen Befehl mit diesem Namen:

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

Weiterführende Literatur

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

Sie können which verwenden dazu:

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

Es funktioniert durch Suchen nach PATH für ausführbare Dateien, die mit den Namen der Argumente übereinstimmen. Beachten Sie, dass dies nicht mit Shell-Aliassen funktioniert:

[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 , funktioniert jedoch:

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

which tut nicht (notwendigerweise) die ausführbare Datei zurückgeben. Es gibt den ersten übereinstimmenden Datei-Namen zurück es findet im $PATH (oder mehreren gleichnamigen Dateien, wenn which -a verwendet wird )... Das eigentliche ausführbare Datei kann mehrere Links entfernt sein.

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

Der Befehl, der das aktuelle findet ausführbar ist readlink -e ,
(in Verbindung mit which )

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

Um alle zwischengeschalteten Links zu sehen :

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. Wie finde ich heraus, welche Gruppe ein bestimmter Benutzer hat?

  2. Wie finde ich Zeilenenden in einer Textdatei heraus?

  3. So kombinieren Sie den Befehl „tar“ mit „find“

  4. So finden Sie heraus, welche Datei sich in einem bestimmten Sektor befindet

  5. So finden Sie die .pid-Datei für einen bestimmten Prozess

Linux:Finden Sie heraus, auf welcher Portnummer ein Prozess lauscht

was ist der zuverlässigste befehl, um die tatsächliche größe einer datei zu finden linux

Was ist das Äquivalent zum Linux-Dateibefehl für Windows?

Wie finde ich die platzraubendsten Verzeichnisse oder Dateien heraus?

Öffnen Sie eine Datei, die durch das Ergebnis eines Befehls in vim angegeben wird

Was ist die korrekte find -exec-Syntax