GNU/Linux >> Znalost Linux >  >> Linux

Rozumíte vykřičníku (!) v Bash?

Použil jsem

history | less

získat řádky předchozích příkazů a z čísel na levé straně jsem našel řádek, který jsem chtěl zopakovat (např. 22) a udělal

!22

na příkazovém řádku a fungovalo to - provedení sady příkazů na řádku, který jsem v té době udělal. Nemohu zjistit, kde se používá vykřičník, co představuje z hlediska akcí prováděných bash a kde jej použít. Z dokumentace nevidím vysvětlení, které by bylo ‚hmatatelné‘.

Přijatá odpověď:

! vyvolá expanzi historie, funkci, která se původně objevila v prostředí C, v dobách, kdy jste se mohli spolehnout na to, že terminály budou mít klávesy se šipkami. Je to zvláště užitečné, pokud do výzvy přidáte aktuální číslo příkazu (PS1="!$ " ), takže se můžete rychle podívat na obrazovku a získat čísla pro minulé příkazy.

Nyní můžete používat klávesy se šipkami a věci jako Ctrl-R pro prohledávání historie příkazů nevidím pro tuto funkci mnoho využití.

Jedna z jeho variant, která by se vám mohla stále hodit, je !! , který znovu provede předchozí příkaz. Sama o sobě nenacházím ! ! Zadejte rychleji než jen Zadejte , ale může být užitečné, když je zkombinován do většího příkazu.

Příklad: Běžná chyba pilota v sudo založené na systémech je zapomenout na sudo prefix u příkazu, který vyžaduje zvláštní oprávnění. Nováček přepíše celý příkaz. Pilný student upraví příkaz z historie příkazů shellu. Osvícený píše sudo !! .

Zpracovává se ! tímto způsobem je v Bash standardně povolen v interaktivních shellech a lze jej zakázat pomocí set +o histexpand nebo set +H . Můžete jej deaktivovat v Zsh pomocí set -K .


Linux
  1. Jak používat příkaz historie v Linuxu

  2. Bash tipy pro každý den na příkazovém řádku

  3. Jak vymazat historii příkazového řádku BASH v Linuxu

  1. Jak vymazat historii Bash na Linuxu

  2. Co má příkaz export dělat v Linuxu?

  3. Co dělá -e v bash shebang?

  1. Rozdíl mezi operátory Bash [[ Vs [ Vs ( Vs ((?

  2. Příkaz „eval“ v Bash?

  3. Pochopení proměnných v Bash Shell pod Linuxem