1.7. El terminal com a eina de treball
1.7.5. Recuperació d’ordres mitjançant l’historial d’ordres
Pot ser convenient tenir l’opció de repetir una ordre que executada anteriorment en una sessió de shell . Recordar una línia d’ordres llarga i complexa que vàreu escriure de manera incorrecta us pot estalviar problemes. Afortunadament, algunes característiques del shell us permeten recordar línies d’ordres anteriors, editar aquestes línies o completar una línia d’ordres parcialment escrita.
L’historial del shell és una llista de les ordres que heu ingressat abans. Fent servir l’ordre history
en un shell bash, podeu veure els vostres ordres anteriors. Després, utilitzant diverses característiques del shell, podeu recuperar línies d’ordres individuals d’aquesta llista i canviar-les com desitgeu.
Per provar una mica d’edició de línia d’ordres, escriviu el següent:
$ ls /usr/bin | sort -f | less
Aquesta ordre mostra el contingut del directori /usr/bin
, ordena el contingut en ordre alfabètic (sense importar majúscules o minúscules) i passa la sortida a less
. L’ordre less
mostra la primera pàgina de sortida, després de la qual pots navegar per la resta de la sortida d’una línia (pressiona enter) o a pàgines (pressiona la barra espaiadora) alhora. Simplement pressioneu la tecla q quan hàgiu acabat. Ara, suposem que voleu canviar la vostra línia d’ordres al terminal d’usr/bin a /bin
i no voleu escriure massa. Si us col·loqueu en la línia d’ordres, i seguiu els següents passos, podreu canviar part de la línia d’ordres:
- Pressioneu la fletxa cap amunt (
↑
). Això mostra l’ordre més recent del teu historial de shell. Prova de pressionar-la més d’una vegada. - Pressioneu Ctrl + A. Això mou el cursor al principi de la línia d’ordres.
- Pressioneu Ctrl + E. Això mou el cursor al final de la línia d’ordres.
- Pressioneu Ctrl+F o la fletxa dreta (
→
). Repeteix aquesta ordre diverses vegades per col·locar el cursor sota la primera barra (/
). - Pressioneu Ctrl+D. Escriu aquesta ordre quatre vegades per eliminar
/usr
de la línia. - Pressioneu Enter. Executa la línia d’ordres un cop has decidit què executar.
Mentre s’edita una línia d’ordres, en qualsevol moment podeu escriure caràcters normals per afegir-los a la línia d’ordres. Els caràcters apareixen en la posició del cursor de text. Podeu utilitzar la fletxa dreta →, esquerra ← per moure el cursor d’un extrem a un altre de la línia d’ordres. També podeu prémer les tecles de fletxa amunt ↑ i avall ↓ per recórrer les anteriors ordres a la llista de l’historial per seleccionar una línia d’ordres per editar.
Després d’escriure una línia d’ordres, tota la línia es guarda a la llista d’historial del teu shell. La llista s’emmagatzema en el shell actual fins que sortiu del terminal. A més, cada ordre que s’escriu en la línia d’ordres i s’executa, tingui sentit o no, s’escriu en un arxiu d’historial, on qualsevol ordre pot ser recordada per ser executada novament en una altra sessió. Un cop es recupera una ordre, es pot modificar la línia d’ordres, com s’ha descrit anteriorment.
Per veure la vostra llista d’historial, utilitzeu l’ordre history
. Escriviu l’ordre sense opcions o seguida d’un número per llistar aquesta quantitat de les ordres més recents. Per exemple,
$ history 9
2012 date 2013 date +'%d/%m/%y' 2014 date +'%A, %B %d, %Y' 2015 ls 2016 ls Scripts/ 2017 ls 2018 echo $PATH 2019 ls /usr/bin | sort -f | less 2020 history 9
En lloc de simplement executar una línia d’ordre de l’historial de manera immediata, es pot recuperar una línia en particular i editar-la. Se’n mostren diversos exemples.
Exemples
$ !n
: Executar el número d’ordre. Reemplaceu la n amb el número de la línia d’ordre i aquesta línia s’executarà. Per exemple, així és com podeu repetir l’ordre de data que es mostra com el número d’ordre 2012 en la llista d’historial anterior:
$ !2012
date Wed 19 Apr 16:26:58 CEST 2023
$ !!
: Executar ordre anterior. Executa la línia d’ordre anterior. Aquí us mostrem com executar immediatament aquesta mateixa comanda date
:
$ !!
date Wed 19 Apr 16:29:06 CEST 2023
$ !?string?
: Executeu l’ordre que conté un string
(cadena). Això executa l’ordre més recent que conté una cadena de caràcters específica. Per exemple, podeu executar novament l’ordre date
buscant només una part d’aquesta línia d’ordre de la següent manera:
$ !?at?
date Wed 19 Apr 16:32:04 CEST 2023