GNU/Linux >> Znalost Linux >  >> Linux

Jak zjistit, zda mužská stránka, na kterou se dívám, je ta správná?

Například,

[fakename]$ type echo
echo is a shell builtin

Ale man echo mi dává GNU coreutils verzi echo . Jaký je nejjednodušší způsob, jak zjistit, zda je manuálová stránka, na kterou se dívám, správná, tj. ta pro nástroj, který bych získal, kdybych jej přímo vyvolal?

Přijatá odpověď:

Ty ne, opravdu. Ne bez znalostí mimo manuálovou stránku.

V případě echo (a printf a test , …), je to často vestavěný shell, takže to musíte vědět a přečíst si dokumentaci shellu. (A echo se notoricky liší v různých implementacích, použijte printf místo toho.)

Ve většině, ne-li ve všech shellech, můžete zjistit, zda je něco vestavěné pomocí type command , např. type echo vypíše echo is a shell builtin . (type je specifikováno POSIX, ale např. fish to také podporuje, i když to není POSIXy.) V Bash byste pak četli man bash , online dokumentaci nebo použijte vestavěný příkaz help (který je specifický pro Bash a o kterém musíte vědět, že existuje).

I když příkaz není vestavěný, je možné, že existuje několik příkazů se stejným názvem, rename je slavný příklad (viz Proč je nástroj pro přejmenování na Debian/Ubuntu jiný než na jiných distribucích, jako je CentOS?). Nyní by váš operační systém měl mít správnou manuálovou stránku pro aktuálně nainstalovaný nástroj, a např. v Debianu systém „alternativy“ aktualizuje odpovídající manuálové stránky také při změně alternativ příkazů. Ale pokud čtete online manuálovou stránku, musíte si toho být vědomi.

Mnoho nástrojů má možnost příkazového řádku jako --version což by vám mohlo říct, jaká implementace tento příkaz je. (Ale ne téměř všechny nástroje to mají. Myslím, že je to původně GNUismus, takže GNU nástroje to mají, stejně jako ty, které náhodou zkopírovaly vlastní.) V případě rename , náhodou to funguje při rozlišování dvou různých implementací:

debian$ rename --version
/usr/bin/rename using File::Rename version 0.20
centos$ rename --version
rename (util-linux-ng 2.17.2)

Kromě toho může mít váš systém alias nebo funkci se stejným názvem nástroje, obvykle za účelem úpravy chování nástroje. V takovém případě nemusí platit výchozí hodnoty uvedené v manuálové stránce. Aliasy pro ls jsou běžné, stejně jako aliasy přidávající -i do rm nebo mv . Ale type foo by vám také řekl, jestli foo je alias nebo funkce.

Související:Proč nemohu získat výstup pgrep přímo do proměnné ve skriptu bash?
Linux
  1. Jak zjistit, co znamená „errno“?

  2. Jak mohu najít verzi Fedory, kterou používám?

  3. Jak poznat hodnotu vestavěného makra v RPM?

  1. Co znamenají čísla na mužské stránce?

  2. Jak přidat položky manuálové stránky pro vlastní elektrické nástroje?

  3. Jak zjistit, zda bootuji pomocí Uefi?

  1. Jak poznám název souboru skriptu ve skriptu Bash?

  2. Jak přimět CRON, aby volal na správné PATH

  3. Jak přidat položku do databáze manuálových stránek Linuxu