Comment définir un alias pour un fichier ou un répertoire spécifique?

9

Il y a plusieurs fichiers avec lesquels je travaille souvent. Par exemple, certains fichiers de configuration ou fichiers journaux. Disons le fichier journal Apache. Je veux souvent tailou grepil. Au lieu d'écrire:

tail -50 /var/log/apache2/error_log

Je préfère écrire

tail -50 apachelog

Cela apachelogfonctionne donc comme un alias pour ce nom de fichier. Mais si je définis un alias dans my bashrc, il doit s'agir d'une commande entière; il (apparemment) ne peut pas être un alias pour un nom de fichier afin que vous puissiez le référencer plus tard. Existe-t-il un moyen d'y parvenir?

REMARQUE: j'ai une grande variété de fichiers et une grande variété de commandes différentes que je veux exécuter, donc la création de fonctions ou d'aliasses pour toutes ces différentes options ne sera pas ma solution préférée.


la source

Réponses:

10

Vous pouvez définir une variable et utiliser a $pour rappeler sa valeur:

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

Tu ne vas pas faire mieux en bash. Dans zsh, vous pouvez définir des alias globaux, qui sont développés partout sur la ligne de commande:

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

Mais je ne le recommande pas, car maintenant si jamais vous voulez passer la chaîne apachelogen argument à une commande, vous devez vous rappeler de la citer.

Gilles 'SO- arrête d'être méchant'
la source
Bonne réponse, surtout la partie "Ne pas recommander". Cela ressemble à une recette pour un désastre avec un mauvais choix de nom d'alias ...
Shadur
8

Vous pouvez créer une fonction et écrire votre commande "à l'envers"

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

apachelog tail -50
glenn jackman
la source
2

Un alias vers un répertoire est un lien. C'est pourquoi une possibilité est de créer un tas de liens vers les fichiers d'intérêt dans un répertoire. Ensuite, alias rtail to tail pour qu'il recherche les fichiers dans ce répertoire.

Roman B.
la source
0

Mettez ceci dans votre ~ / .bashrc

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

faire une source ~ / .bashrc ou démarrer une nouvelle session bash ...

alors il vous suffit de taper "tailapache"

Rainer Bendig
la source