Použil jsem
history | less
pro získání řádků předchozích příkazů az čísel na levé straně jsem našel řádek, který jsem chtěl opakovat (např. 22) a udělal
!22
na příkaz Prompt a fungovalo to - provádění sady příkazů na řádku, který jsem tehdy udělal. Nedokážu přijít na to, kde je vykřičník používán, co představuje, pokud jde o kroky podniknuté bashem, a kde je použít. Z dokumentace nevidím vysvětlení, které je „hmatatelné“.
!
je funkce, která se původně objevila v C Shell , ve dnech, kdy jste mohli počítat s tím, ž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="\!$ "
), abyste se mohli rychle podívat na obrazovku a získat čísla pro minulé příkazy.
Nyní, když můžete použít klávesy se šipkami a podobně Ctrl-R Abych prohledal historii příkazů, pro tuto funkci moc nevidím.
Jednou z variant, které by se vám mohly hodit, je !!
, který znovu provede předchozí příkaz. Sama o sobě nenajdu !!Enter rychlejší než jen ↑Enter, ale může být užitečné, když se spojí do většího příkazu.
Příklad: Běžná chyba pilota na Sudo
založené systémy mají zapomenout předpona Sudo
pro příkaz, který vyžaduje zvláštní oprávnění. Začátečník přepíše celý příkaz. Pečlivý student edituje příkaz z historie příkazů Shell. Osvícený jeden typ Sudo !!
.
Bash vám umožní zakázat !
zpracování ve skořápce s set +o histexpand
nebo set +H
. Můžete jej deaktivovat v Zsh pomocí set -K
.
Pokud zde již není odpověď, určitě existuje na Super User, protože jsem ji nedávno četl. Na stránce bash man najdete obrovskou sekci nazvanou HISTORIE ROZŠÍŘENÍ .
Můžete udělat celý hostitel více než jen spustit poslední příkaz nebo číslo příkazu X. Můžete dělat věci jako !cat
pro spuštění posledního příkazu, který začal s cat
. Nebo !?bash?:s/bash/csh/
spustí poslední příkaz obsahující bash
, ale nahradí jej csh
.
S !
jako:
!-3
!ls
a mnohem více. Viz 15 příkladů rozšíření historie linií Linuxu, které byste měli znát
Samozřejmě můžete udělat !!
pro opětovné použití posledního příkazu v bash Shell. A pak je !$
znovu použít poslední část posledního příkazu.
např. zobrazit nějaký soubor
less path/to/your/file.txt
Pokud nyní chcete upravit stejný soubor, můžete použít !$
získat pouze cestu k souboru od posledního příkazu
vim !$
UPRAVIT:
Všechny argumenty předchozího příkazu můžete použít s !*
např .: Tím vytvoříte některé soubory a odstraníte je všechny
$ touch a.txt b.txt c.txt d.txt
$ rm !*
Opět můžete použít konkrétní argument předchozího příkazu
např. Tím se vytvoří 4 soubory a odstraní se 3. soubor (c.txt)
$ touch a.txt b.txt c.txt d.txt
$ rm !:3
Podobně můžete použít řadu argumentů z posledního příkazu následujícím způsobem
$ touch a.txt b.txt c.txt d.txt
$ rm !:2-4
Tím se znovu použijí argumenty 2 až 4, které vyhodnocují výraz rm b.txt c.txt d.txt
Můj přítel mi poslal e-mailem toto:
Je součástí historické knihovny GNU). V bash se používá k opětovnému spouštění příkazů ve vaší historii. Pokud chcete být hardcore, grep for history_expansion_char v bash-4.1/lib/readline/histexpand .c pro podrobnosti o implementaci.