¿Cómo establecer un alias para un archivo o directorio específico?

9

Hay varios archivos con los que trabajo a menudo. Por ejemplo, algunos archivos de configuración o archivos de registro. Digamos el archivo de registro de Apache. A menudo quiero tailo grepeso. En lugar de escribir:

tail -50 /var/log/apache2/error_log

Prefiero escribir

tail -50 apachelog

Entonces eso apachelogfunciona como un alias para este nombre de archivo. Pero si defino un alias en mi bashrc, debe ser un comando completo; (aparentemente) no puede ser un alias para un nombre de archivo para que pueda consultarlo más adelante. ¿Hay una manera de lograr esto?

NOTA: Tengo una gran variedad de archivos y una gran variedad de comandos diferentes que quiero ejecutar, por lo que crear funciones o alias para todas esas opciones diferentes no será mi solución preferida.


fuente

Respuestas:

10

Puede definir una variable y usar a $para recuperar su valor:

apachelog=/var/log/apache2/error_log
tail -50 $apachelog

No te va a ir mejor en bash. En zsh, puede definir alias globales, que se expanden en todas partes en la línea de comando:

alias -g apachelog=/var/log/apache2/error_log
tail -50 apachelog

Pero no lo recomiendo, porque ahora si alguna vez desea pasar la cadena apachelogcomo argumento a un comando, debe recordar citarla.

Gilles 'SO- deja de ser malvado'
fuente
Buena respuesta, especialmente la parte "No recomiendo esto". Eso suena como una receta para el desastre con un nombre de alias pobre ...
Shadur
8

Puede crear una función y escribir su comando "al revés"

apachelog() {
  "$@" /var/log/apache2/error_log
}

apachelog tail -50
Glenn Jackman
fuente
2

Un alias a un directorio es un enlace. Es por eso que una posibilidad es crear un montón de enlaces a los archivos de interés en un directorio. Luego, alias rtail to tail para que busque archivos en ese directorio.

Roman B.
fuente
0

Pon esto en tu ~ / .bashrc

 alias tailapache='tail -50 /var/log/apache2/error_log'

hacer una fuente ~ / .bashrc o iniciar una nueva sesión de bash ...

entonces solo necesitas escribir "tailapache"

Rainer Bendig
fuente