GNU/Linux >> Znalost Linux >  >> Linux

Jak najdu nápovědu pro bodový příkaz `.` v *nix?

Nejprve byste měli vyvolat type . , pravděpodobně dostanete něco jako:

. is a shell builtin

Builtiny jsou součástí vašeho shellu, nemají vlastní manuálové stránky. Některým se může zdát, že je mají, např. echo je vestavěný v Bash, ale s největší pravděpodobností existuje samostatný spustitelný soubor jako /bin/echo ve vašem systému a v tomto případě man echo odkazuje na poslední . Tyto dva echo s pravděpodobně nejsou přísně ekvivalentní.

Váš shell může poskytovat informace o jakékoli vestavěné službě prostřednictvím help vestavěný; zkuste help help , help type a nakonec:

help .

Builtiny mohou být také uvedeny na manuálové stránce vašeho shellu. Např. (v mém Debianu) Vestavěné prvky Bash jsou pokryty přímo v man bash , ale pro Zsh vestavěné man zsh říká mi, abych spustil man zshbuiltins . Obecně shelly mohou nebo nemusí vysvětlovat jejich vestavěné prvky.


Zkuste použít man sh nebo man bash nebo manuálovou stránku pro jakýkoli shell, který používáte. (Možná man $SHELL .)

Oficiálně se tomu neříká příkaz "point", ale source příkaz. Hledání slova source může být užitečné.

např. bash man page (hledejte „každý vestavěný příkaz“) a rychle najdete dokumentaci.

Pokud jde o vysvětlení použití, mohu to udělat přímo zde. Budu to jen označovat jako source příkaz, s vědomím, že jej lze zkrátit pouze na období, kdy používáte nějaké shelly, au některých shellů tento příkaz může být potřeba (protože tečka může být rozpoznána, ale celé slovo source nemusí být).

Pokud použijete source váš shell přečte každý řádek ze souboru skriptu a pokusí se jej spustit. K souboru potřebujete oprávnění ke čtení. (Nezáleží na tom, zda máte oprávnění ke spouštění.) Pokud proměnnou upravíte, může to ovlivnit váš aktuální shell.

Pokud se na druhou stranu pokusíte soubor spustit, váš shell požádá operační systém, aby se o tento požadavek postaral. To bude vyžadovat oprávnění ke spuštění. (Na některých systémech, jako je OpenBSD, k tomu nebudete potřebovat oprávnění ke čtení. Na jiných systémech, včetně mnoha unixových variací, ano.) Soubor může muset začínat vhodnou hlavičkou (např. #!/bin/sh ), takže operační systém rozpozná, že se jedná o soubor skriptu. Operační systém spustí kopii požadovaného shellu a řekne mu, aby spustil obsah skriptu. Pokud se změní prostředí shellu (např. proměnná získá novou hodnotu, změní se pracovní adresář (s cd ), je přesměrován deskriptor souboru (s exec ), atd.), ovlivní to pouze pod-shell, který byl zavolán pro skript, a nemůže změnit prostředí v nadřazeném shellu, který volal soubor skriptu.


Nikdo jiný se o tom nezmínil, protože se na to často zapomíná.

Vaše největší vodítko by pocházelo z užitečného příkazu whatis .

[email protected] ~ $ whatis .
builtins (1)         - bash built-in commands, see bash(1)
[email protected] ~ $ whatis source
builtins (1)         - bash built-in commands, see bash(1)
[email protected] ~ $ whatis bash
bash (1)             - GNU Bourne-Again SHell
[email protected] ~ $ whatis lynx
lynx (1)             - a general purpose distributed information browser for the World Wide Web
[email protected] ~ $ whatis linux
linux: nothing appropriate.
[email protected] ~ $ whatis whatis
whatis (1)           - display one-line manual page descriptions

UPRAVIT:

Někteří lidé v komentářích poukázali na to, že to není v některých distribucích - možná je to instalovatelný balíček nebo nějak povolený - měl jsem to standardně v gentoo;)

Zahrnuje úžasné which - které vám řekne, který spustitelný soubor se nazývá, a whereis which poskytuje všechny cesty ke spustitelnému souboru, který pojmenujete, a jsou to manuálové stránky (pokud existuje ve více cestách).


Linux
  1. Jak vytvořit prostředí Clean Shell pro dočasné použití?

  2. Jak spustit aplikaci po nastavenou dobu v prostředí Shell?

  3. Jak nakonfigurovat omezený Bash Shell v Linuxu

  1. Jak integrovat příkaz MV po příkazu Najít?

  2. Jak vyloučit adresář v find . příkaz

  3. Jak hledat soubory pomocí regulárního výrazu ve skriptu linuxového shellu

  1. Jak získat dokončování bash pro aliasy příkazů?

  2. Jak nechat typ-ahead použít pro vyhledávání v historii Bash (ctrl-r)?

  3. Jak zakázat alias v Bash pro jeden příkaz?