Terminál VII
Někdy se prostě vyplatí použít příkaz, který jste již použili. Tyto potíže v dnešním dílu řešíme, řekneme si několik způsobu jak se k tomu dá přistoupit. Zajímavé je také předávání použitých parametrů, tomu se věnuji ve druhé části
Opakování příkazů
Někdy se naskytne situace, že chcete spustit příkaz, který jste v dávné historii použili. Uvedu příklad na sobě: Spouštím pravidelně pod wine Warcraft III (mimochodem, ta hádanka, co nikdo minule nepoznal s tím souvisí) příkazem:
ondrej@ondrej-Lenovo-IdeaPad-Y570 ~ $ wine ~/.wine/drive_c/Program\ Files/Warcraft\ III/Frozen\ Throne.exe
Pokud chci si znovu trochu pohrát nemusím šipkou nahoru hledat, kde je příkaz v historii a napíši pouze !wine. Jak to funguje? Projde se historie příkazů a první na který se narazí a bude začínat na „wine“ se spustí. Pokud chci pouze příkaz zobrazit, stačí zadat !wine:p.
Práce s historií
Spouštění čísly
Příkaz history vypíše historii našich příkazů, dá se s tím celkem elegantně pracovat přes grep, to si zkuste. My se ovšem zaměříme na použití číselného označení v historii příkazů ke spouštění příkazů
… //Spousta příkazů
493 sudo apt-get install eclipse
494 cd ~/.wine/drive_c/Program\ Files/Warcraft\ III/
495 cd ~/test/
496 ls *.pdf
497 mv *13*.pdf ~/test2/
498 rm *
499 cd ..
500 rmdir test
501 cd test2/
502 history
Z nějakého nepochopitelného důvodu budu chtít zase smazat obsah složky „test2“, berte to pouze jako příklad, samozřejmě, že by šlo použít rm *, ale tady je to jako „demonstrace síly“.
!498 tedy provede rm * stejného efektu dosáhneme i pomocí !-5, což se překládá jako „od tohoto kroku jdi pět zpátky a ten příkaz proveď“. Samozřejmě i zde lze použít :p k pouhému vypsání provedeného příkazu.
Opakujeme parametry
Parametry v dalším příkazu přidáme jako !* takže další příkaz se spustí se všemi parametry jako předchozí. (Práce s více soubory, apod.). Existuje také více variant předání parametrů, takže dále třeba !^ předá první argument, !$ poslední, ze také zkombinovat a předat !^ !$. Lze také zadávat pořadí argumentu pokud zdvojíme vykřičníky. Takže příkaz !^ !!:2 předá první a druhý argument (První určí počátek počítání, druhý pořadí). Lze také zadat rozsah předávaných argumentů ve tvaru !!:x-y. Na řadě je příklad… Máme soubory, kterým chceme změnit práva(chmod) a pak je přesunout.
ondrej@ondrej-Lenovo-IdeaPad-Y570 ~/ $ mv !!:2-4 /var/www/
mv soubor.txt linux.txt truhlari.txt /var/www/
Znovu opakujeme parametry a jinak
Je sice příjemné nasadit znovu argumenty, ale možnost měnit je to posouvá ještě o kus dále. Například smažeme soubor „soubor1.txt“ a pak chceme smazat i „soubor2.txt“
ondrej@ondrej-Lenovo-IdeaPad-Y570 ~/test $ rm !$:s/1/2/
rm soubor2.txt
Vypadá to složitě? Možná, ale je to velmi jednoduché. !$ předá poslední parametr, tj. soubor1.txt. Poté nasleduje dvojtečka, což indikuje činnost. „S“ z anglick. substitute (nahradit) funguje takto. Po prvním lomítku následuje řetězec k nahrazení a dalším lomítkem je ten kterým má být nahrazeno. Třetí lomítko to uzavírá… Připomínám, že přidání :p se postará o to, že se pouze vypíše.
Tento typ substitucí je tak typický, že pro něj existuje i zkratka: druhý řádek výpisu (viz příklad výše) lze nahradit za ^1^2. Což funguje jako předchozí příkaz a jeho překlad: „V předchozím případě vyměň „1“ za „2“ a proveď ten příkaz“.
Procházení historie příkazů
Hledání v historii
Ctrl + R spustí historii, zde stačí zadávat text a program zpětně hledá poslední výskyt takového řetězce. Šipkami na klávesnici lze text umístit na nový řádek terminálu a pracovat s ním, popř. i spustit.
Pokud nejste s nabízeným příkazem spokojeni znovu zmáčkněte Ctrl + R program bude hledat dále a vy si tak můžete vybrat to co jste opravdu chtěli najít.
Co příště?
Další díl bude o právech, vašich, roota a dalších. Možná se dostaneme i na „agresivní psaní“, tedy dravé a mocné způsoby, jak klávesnicí totálně ovládnout vstup. Jdeme stále hlouběji a začíná to být zajímavé.