GNU/Linux >> Tutoriales Linux >  >> Linux

15 ejemplos para dominar la historia de la línea de comandos de Linux

Cuando usa la línea de comandos de Linux con frecuencia, usar el historial de manera efectiva puede ser un gran aumento de la productividad. De hecho, una vez que haya dominado los 15 ejemplos que he proporcionado aquí, encontrará que usar la línea de comandos es más agradable y divertido.

1. Muestra la marca de tiempo usando HISTTIMEFORMAT

Por lo general, cuando escribe el historial desde la línea de comandos, muestra el número de comando y el comando. Para propósitos de auditoría, puede ser beneficioso mostrar la marca de tiempo junto con el comando como se muestra a continuación.

# export HISTTIMEFORMAT='%F %T '
# history | more
1  2008-08-05 19:02:39 service network restart
2  2008-08-05 19:02:39 exit
3  2008-08-05 19:02:39 id
4  2008-08-05 19:02:39 cat /etc/redhat-release

2. Buscar en el historial usando Control+R

Creo firmemente que esta puede ser la característica de la historia que usa con más frecuencia. Cuando ya haya ejecutado un comando muy largo, simplemente puede buscar en el historial usando una palabra clave y volver a ejecutar el mismo comando sin tener que escribirlo por completo. Presiona Control+R y escribe la palabra clave . En el siguiente ejemplo, busqué rojo , que mostraba el comando anterior “cat /etc/redhat-release ” en la historia que contenía la palabra rojo.

# [Press Ctrl+R from the command prompt,
which will display the reverse-i-search prompt]
(reverse-i-search)`red': cat /etc/redhat-release
[Note: Press enter when you see your command,
which will execute the command from the history]
# cat /etc/redhat-release
Fedora release 9 (Sulphur)

A veces desea editar un comando del historial antes de ejecutarlo. Por ej. puedes buscar httpd , que mostrará servicio httpd detener desde el historial de comandos, seleccione este comando y cambie la parada para comenzar y vuelva a ejecutarlo como se muestra a continuación.

# [Press Ctrl+R from the command prompt,
which will display the reverse-i-search prompt]
(reverse-i-search)`httpd': service httpd stop
[Note: Press either left arrow or right arrow key when you see your
command, which will display the command for you to edit, before executing it]
# service httpd start

3. Repite el comando anterior rápidamente usando 4 métodos diferentes

En algún momento puede terminar repitiendo los comandos anteriores por varias razones. Las siguientes son las 4 formas diferentes de repetir el último comando ejecutado.

  1. Use la flecha hacia arriba para ver el comando anterior y presione enter para ejecutarlo.
  2. Escriba !! y presione enter desde la línea de comando
  3. Escriba !-1 y presione enter desde la línea de comando.
  4. Presiona Control+P mostrará el comando anterior, presione enter para ejecutarlo

4. Ejecutar un comando específico del historial

En el siguiente ejemplo, si quiere repetir el comando #4, puede hacer !4 como se muestra a continuación.

# history | more
1  service network restart
2  exit
3  id
4  cat /etc/redhat-release

# !4
cat /etc/redhat-release
Fedora release 9 (Sulphur)

5. Ejecuta el comando anterior que comienza con una palabra específica

Escribe ! seguido de las primeras letras del comando que le gustaría volver a ejecutar. En el siguiente ejemplo, al escribir !ps y enter, se ejecutó el comando anterior comenzando con ps, que es 'ps aux | grep yp'.

# !ps
ps aux | grep yp
root     16947  0.0  0.1  36516  1264 ?        Sl   13:10   0:00 ypbind
root     17503  0.0  0.0   4124   740 pts/0    S+   19:19   0:00 grep yp

6. Controla el número total de líneas en el historial usando HISTSIZE

Agregue las siguientes dos líneas al .bash_profile y vuelva a iniciar sesión en el shell bash para ver el cambio. En este ejemplo, solo se almacenarán 450 comandos en el historial de bash.

# vi ~/.bash_profile
HISTSIZE=450
HISTFILESIZE=450

7. Cambie el nombre del archivo de historial usando HISTFILE

De forma predeterminada, el historial se almacena en ~/.bash_history expediente. Agregue la siguiente línea a .bash_profile y vuelva a iniciar sesión en bash Shell, para almacenar el comando de historial en el archivo .commandline_warrior en lugar del archivo .bash_history. Todavía tengo que descubrir un uso práctico para esto. Puedo ver que esto se usa cuando desea realizar un seguimiento de los comandos ejecutados desde diferentes terminales usando un nombre de archivo de historial diferente.

# vi ~/.bash_profile
HISTFILE=/root/.commandline_warrior

Si tiene una buena razón para cambiar el nombre del archivo de historial, compártala conmigo, ya que me interesa saber cómo está utilizando esta función.

8. Elimine la entrada repetida continua del historial usando HISTCONTROL

En el siguiente ejemplo, pwd se escribió tres veces, cuando haces el historial, puedes ver las 3 ocurrencias continuas. Para eliminar duplicados, establezca HISTCONTROL en Ignorados como se muestra a continuación.

# pwd
# pwd
# pwd
# history | tail -4
44  pwd
45  pwd
46  pwd [Note that there are three pwd commands in history, after
executing pwd 3 times as shown above]
47  history | tail -4

# export HISTCONTROL=ignoredups
# pwd
# pwd
# pwd
# history | tail -3
56  export HISTCONTROL=ignoredups
57  pwd [Note that there is only one pwd command in the history, even after
executing pwd 3 times as shown above]
58  history | tail -4

9. Borre duplicados en todo el historial usando HISTCONTROL

Los ignorados que se muestran arriba eliminan los duplicados solo si son comandos consecutivos. Para eliminar los duplicados en todo el historial, configure HISTCONTROL en borrados como se muestra a continuación.

# export HISTCONTROL=erasedups
# pwd
# service httpd stop
# history | tail -3
38  pwd
39  service httpd stop
40  history | tail -3

# ls -ltr
# service httpd stop
# history | tail -6
35  export HISTCONTROL=erasedups
36  pwd
37  history | tail -3
38  ls -ltr
39  service httpd stop
[Note that the previous service httpd stop after pwd got erased]
40  history | tail -6

10. Obligar al historial a no recordar un comando en particular usando HISTCONTROL

Cuando ejecuta un comando, puede indicarle al historial que ignore el comando configurando HISTCONTROL para ignorar el espacio Y escribiendo un espacio delante del comando como se muestra a continuación. Veo que muchos administradores de sistemas junior se emocionan con esto, ya que pueden ocultar un comando del historial. Es bueno entender cómo funciona ignorespace. Pero, como práctica recomendada, no oculte nada del historial a propósito.

# export HISTCONTROL=ignorespace
# ls -ltr
# pwd
#  service httpd stop [Note that there is a space at the beginning of service,
to ignore this command from history]
# history | tail -3
67  ls -ltr
68  pwd
69  history | tail -3

11. Borre todo el historial anterior usando la opción -c

En algún momento, es posible que desee borrar todo el historial anterior, pero desea que el historial siga avanzando.

# history -c

12. Sustituir palabras de los comandos del historial

Cuando esté buscando en el historial, es posible que desee ejecutar un comando diferente pero usar el mismo parámetro del comando que acaba de buscar.

En el siguiente ejemplo, !!:$ junto al comando vi obtiene el argumento del comando anterior al comando actual.

# ls anaconda-ks.cfg
anaconda-ks.cfg
# vi !!:$
vi anaconda-ks.cfg

En el siguiente ejemplo, !^ junto al comando vi obtiene el primer argumento del comando anterior (es decir, el comando cp) al comando actual (es decir, el comando vi).

# cp anaconda-ks.cfg anaconda-ks.cfg.bak
anaconda-ks.cfg
# vi  !^
vi anaconda-ks.cfg

13. Sustituya un argumento específico por un comando específico.

En el siguiente ejemplo, !cp:2 busca el comando anterior en el historial que comienza con cp y toma el segundo argumento de cp y lo sustituye por el comando ls -l como se muestra a continuación.

# cp ~/longname.txt /really/a/very/long/path/long-filename.txt
# ls -l !cp:2
ls -l /really/a/very/long/path/long-filename.txt

En el siguiente ejemplo, !cp:$ busca el comando anterior en el historial que comienza con cp y toma el último argumento (en este caso, que también es el segundo argumento como se muestra arriba) de cp y lo sustituye por el comando ls -l como se muestra a continuación.

# ls -l !cp:$
ls -l /really/a/very/long/path/long-filename.txt

14. Deshabilite el uso del historial usando HISTSIZE

Si desea deshabilitar el historial por completo y no quiere que bash Shell recuerde los comandos que ha escrito, configure HISTSIZE en 0 como se muestra a continuación.

# export HISTSIZE=0
# history
# [Note that history did not display anything]

15. Ignora comandos específicos del historial usando HISTIGNORE

A veces, es posible que no desee saturar su historial con comandos básicos como pwd y ls. Use HISTIGNORE para especificar todos los comandos que desea ignorar del historial. Tenga en cuenta que agregar ls a HISTIGNORE ignora solo ls y no ls -l. Por lo tanto, debe proporcionar el comando exacto que le gustaría ignorar del historial.

# export HISTIGNORE="pwd:ls:ls -ltr:"
# pwd
# ls
# ls -ltr
# service httpd stop

# history | tail -3
79  export HISTIGNORE="pwd:ls:ls -ltr:"
80  service httpd stop
81  history
[Note that history did not record pwd, ls and ls -ltr]

Lecturas recomendadas

Bash 101 Hacks, por Ramesh Natarajan . Paso la mayor parte de mi tiempo en el entorno Linux. Entonces, naturalmente, soy un gran admirador de la línea de comandos de Bash y las secuencias de comandos de Shell. Hace 15 años, cuando estaba trabajando en diferentes versiones de *nix, solía escribir mucho código en C shell y Korn shell. Años más tarde, cuando comencé a trabajar en Linux como administrador del sistema, prácticamente automaticé todas las tareas posibles utilizando scripts de shell Bash. Basado en mi experiencia con Bash, he escrito el libro electrónico Bash 101 Hacks que contiene 101 ejemplos prácticos tanto en la línea de comandos de Bash como en las secuencias de comandos de shell. Si ha estado pensando en dominar Bash, hágase un favor y lea este libro, que lo ayudará a tomar el control de su línea de comandos y secuencias de comandos de shell de Bash.

Impresionantes artículos de Linux

Los siguientes son algunos 15 ejemplos impresionantes artículos que pueden resultarle útiles.

  • Comando Unix LS:15 ejemplos prácticos
  • ¡Contrólate con el Grep! – 15 ejemplos prácticos de comandos Grep
  • Linux Crontab:15 impresionantes ejemplos de trabajos de Cron
  • ¡Mami, lo encontré! — 15 ejemplos prácticos de comandos de búsqueda de Linux

Linux
  1. 7 ejemplos de comandos Linux df

  2. 8 ejemplos de comandos TR de Linux

  3. Ejemplos de comandos rm en Linux

  4. Ejemplos de comandos ps en Linux

  5. ctrl + r en la línea de comandos del terminal linux/ubuntu

Comando Diff en Linux con ejemplos

Comando de historial en Linux con ejemplos

Domina la línea de comandos de Linux

Uso del comando sed de Linux con ejemplos

15 ejemplos prácticos de comandos Grep en Linux / UNIX

Ejemplos de comandos id en Linux