Historie příkazů

Historie příkazů je funkcionalita, která uživateli umožňuje vyvolávat předchozí příkazy a po případné úpravě je znovu provádět. Je obsažena v mnoha shellech a jiných programech ovládaných pomocí příkazového řádku.

Historie

V Unixu se historie příkazového řádku objevila v roce 1978, kdy ji ve svém C shellu implementoval Bill Joy[1] inspirovaný mechanismem historie v Interlispu.[2] Protože využívání historie zrychluje a usnadňuje práci, získala si oblibu mnoha uživatelů a v novějších shellech, jako je ksh nebo Bash je standardním rysem. Její užitečnost je zřejmá, např. v následujících použitích:

  • opakované provedení stejného příkazu nebo krátké posloupnosti příkazů, např. když vývojář opakovaně používá několik příkazů pro překlad a spuštění programu
  • oprava chyby nebo opakované provádění příkazu pouze s malými změnami

Kombinace s editací příkazového řádku

Současné implementace kombinují historii s editací příkazového řádku. Kurzorové klávesy nahoru a dolů se používají pro výběr příkazu z historie a kurzové klávesy vlevo a vpravo pro pohyb v řádku na místo, kde uživatel může jednoduše zadat požadovanou změnu. Některé implementace používají menu: stiskem určité funkční klávesy, např.F7, se zobrazí nabídka posledních příkazů, ze které si uživatel může vybrat zadáním čísla. V této podobě zpřístupnil historii příkazového řádku příkaz DOSKEY v DR DOSu, jehož funkcionalita je vestavěna do interpretu Cmd.exe v Microsoft Windows.

Odkazy na předchozí příkazy

C-shell zavedl odkazy na předchozí příkazy, které jsou tvořeny znakem vykřičník ! následovaným dalšími znaky pro výběr příkazu, jeho části nebo provedení určité úpravy před vložením příkazu zpět do příkazového řádku. Například:

!! celý předchozí příkaz
!p p-tý příkaz (čísla příkazů vypisuje příkaz history)
!-p p-tý příkaz od konce
!abc příkaz, které začíná znaky abc
!?string poslední použitý příkaz, který obsahuje řetězec string
!$ poslední slovo předchozího příkazu
!^ první argument předchozího příkazu
!* všechny argumenty předchozího příkazu
!:n n-tý argument předchozího příkazu
!:m-n m-tý až n-tý argument předchozího příkazu
!:n-$ všechny argumenty od n-tého až po poslední z předchozího příkazu
!p:m-n m-tý až n-tý argument p-tého příkazu

Používání těchto odkazů není příliš intuitivní, ale funguje i případech, kdy nelze použít editaci příkazového řádku, např. kvůli špatně nastavenému terminálu nebo terminálovému emulátoru s omezenou funkčností. Užitečným, stručným a často použitelným výrazem je odkaz na poslední parametr posledního příkazu – !$.

Záznam historie do souboru

Některé implementace, např. Bash, podporují záznam historie příkazů do souboru,[3][4] takže je lze používat i po odhlášení a opakovaném přihlášení.

Odkazy

Reference

V tomto článku byl použit překlad textu z článku Command history na anglické Wikipedii.

  1. JOY, Bill. An Introduction to the C shell [online]. 2018-07-13. Dostupné v archivu pořízeném z originálu. 
  2. TEITELMAN, Warren; MASINTER, Larry. Duben 1981 [cit. 2024-04-28]. Dostupné online. 
  3. Bash programming/Bash History - Wikiversity [online]. Dostupné online. 
  4. Bash Reference Manual [online]. Dostupné online. 

Související články