Jak mohu hledat v historii příkazového řádku příkazy, které jsem použil dříve?

149

Kromě zobrazení historie, existuje způsob, jak filtrovat svou historii?

Řekněme, že chci vyhledat příkaz, který začínal s "ssh"?

    
dané Blankman 02.11.2011 02:25

10 odpovědí

231

Stiskněte Ctrl + R a zadejtessh. Ctrl + R spustí vyhledávání z posledního příkazu do starého příkazu (zpětné vyhledávání). Pokud máte více než jeden příkaz, který začíná sssh, opakovaně stiskněte Ctrl + R , dokud nenajdete shodu.

Po nalezení shody můžete stisknutím klávesy Enter provést příkaz nebo levé / pravé kurzorové tlačítko pouze pro výběr textu příkazu.

Neexistuje žádná výchozí volba pro Ctrl + R pro obrácení směru hledání, ale zde naleznete několik doporučení.

    
odpověděl Prince John Wesley 02.11.2011 02:32
77

Pokud chcete pouze prohledat svou historii, stačí použíthistory | grep ssh, nahrazující ssh pro cokoli chcete vyhledat.

    
odpověděl ssmy 02.11.2011 02:36
13

Stisknutím klávesy Ctrl + R spustíte reverzní režim iSearch, zadáním příkazu "ssh" p>     

odpověděl Sergey 02.11.2011 02:33
13

Já dělám nepatrné rozdíly výše, funguje dobře pro mě (pokud máte na mysli svou historii bashů

Ve svém domovském adresáři vytvořím soubor s názvem

.inputrc

Uvnitř to jde

"\e[5~": history-search-backward
"\e[6~": history-search-forward

Upozornění: Zdá se, že výše uvedené neplatí už v 14.04, takže to dělá totéž -

"\e[A":history-search-backward
"\e[B":history-search-forward

Pak zadejte velkou část předchozího příkazu. pomocí tlačítek up / page dn stránky vyhledávají historii vždy začínající stránkou

    
odpověděl doug 02.11.2011 02:42
5

Zde je další metoda s použitím klasických příkazů (pravděpodobnější bude pracovat napříč distros). Historie příkazů je uložena v souboru.bash_history ve vašem domovském adresáři, takže můžete provést následující kroky:

grep "ssh" ~/.bash_history

Nezapomeňte na příznak-i, pokud potřebujete hledání malých a malých písmen.

    
odpověděl DisgruntledGoat 02.11.2011 10:49
2

Našel jsem následující funkci někde na internetu a využil ji skvěle. Vložte to do složky~/.bashrc:

hgrep () { 
    history | egrep --color=auto --recursive "$@" | egrep --color=auto --recursive -v "hgrep $@"
}

Nyní znovu načtěte shell:exec bash. Nyní máte nový příkaz, který můžete použít takto:

hgrep ssh

Zobrazí seznam odpovídajících příkazů z historie. Chcete-li spustit příkaz, zadejte příkaz! následovaný číslem příkazu. Zde je příklad:

~:$ hgrep scp
  207  tn scp foreign-teachers __HOST__:unity.log __HOST__:compiz.log .
  421  tn scp scott-laptop __HOST__:Scott\ Severance.asc .
  422  tn scp scott-laptop __HOST__:'Scott\ Severance.asc' .
  468  tn scott-desktop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
  469  tn scott-laptop scp -r Backgrounds/* __HOST__:Pictures/Backgrounds
  470  scp -r Backgrounds/* 192.168.1.2:Pictures/Backgrounds
~:$ !207

Líbí se mi tento přístup lépe než Ctrl + R , protože umožňuje mnohem flexibilnější vyhledávání a můžu vidět více výsledků najednou.     

odpověděl Scott Severance 09.11.2011 04:14
2

Umístěte to do složky~/.bashrc:

  

alias hgrep = 'historie grep - color = auto '

příklad:

    
odpověděl hadj messaoud 15.10.2017 12:59
1

Pokud používáte shell v Emacsu (M-x shell) můžete použítM-r (odpovídá Ctrl + R v terminál ).

    
odpověděl N.N. 26.08.2012 17:33
1

Historie je dobrá, ale omezená - dávám přednost nastavení mého prostředí bash, takže se přihlásím všechny příkazů, které jsem kdy spustil, kromě adresáře, ve kterém byly spuštěny. Spouštím příkaz pro seznam všech příkazů, které jsem spustil v aktuálním adresáři, který můžu pipetovat na grep atd. - nazývá se to "dish" viz:

Odkaz

Pokud chcete přerušit pronásledování, stačí to zadat ve vašem souboru .bashrc ( Odkaz )

Existuje také skutečně užitečný příkaz, který dostanete zdarma, nazvaný "dishg" - nebo dish globální - který vytiskne každý příkaz, který kdy běžel, bez ohledu na adresář. Je zřejmé, že je to užitečné pouze při použití s ​​grep a ocasem atd. ...

Používám to už léta a je to doslova první věc, kterou instaluji, když nastavím novou schránku. Zaznamenává příkazy spuštěné do textových souborů do skrytého adresáře (~ / .dish). Nikdy jsem neměl problém s diskovým prostorem ...

    
odpověděl David Woolford 26.08.2018 01:53
0

Chcete napsat tuto poznámku jako komentář @ ssmy , ale nemohl získat formátování v komentáři ke spolupráci.

Po prohledávání historie pomocíhistory | grep ssh můžete spustit příkaz, který chcete, zadáním jeho čísla s vykřičníkem, např. !42.

Příklad:

$ history | grep ssh
  5 ssh me@someserver.net
 13 ssh me@someotherserver.net
 42 ssh me@thisone.com
$ !42
    
odpověděl magikMaker 31.01.2018 22:12