Wie lege ich einen Alias ​​für eine bestimmte Datei oder ein bestimmtes Verzeichnis fest?

9

Es gibt mehrere Dateien, mit denen ich oft arbeite. Zum Beispiel einige Konfigurationsdateien oder Protokolldateien. Angenommen, die Apache-Protokolldatei. Ich will tailoder grepes oft . Anstatt zu schreiben:

tail -50 /var/log/apache2/error_log

Ich schreibe lieber

tail -50 apachelog

Das fungiert also apachelogals Alias ​​für diesen Dateinamen. Aber wenn ich einen Alias ​​in meinem definiere bashrc, muss es ein ganzer Befehl sein; Es kann (anscheinend) kein Alias ​​für einen Dateinamen sein, damit Sie später darauf verweisen können. Gibt es einen Weg, dies zu erreichen?

HINWEIS: Ich habe eine Vielzahl von Dateien und eine Vielzahl verschiedener Befehle, die ich ausführen möchte. Daher ist das Erstellen von Funktionen oder Aliasen für all diese verschiedenen Optionen nicht meine bevorzugte Lösung.


quelle

Antworten:

10

Sie können eine Variable definieren und mit a $ihren Wert abrufen:

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

Du wirst es in Bash nicht besser machen. In zsh können Sie globale Aliase definieren, die überall in der Befehlszeile erweitert werden:

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

Aber ich empfehle es nicht, denn wenn Sie die Zeichenfolge jemals apachelogals Argument an einen Befehl übergeben möchten , müssen Sie daran denken, sie zu zitieren.

Gilles 'SO - hör auf böse zu sein'
quelle
Gute Antwort, insbesondere der Teil "Diesen nicht empfehlen". Das klingt nach einem Rezept für eine Katastrophe mit einer schlechten Alias-Namenswahl ...
Shadur
8

Sie können eine Funktion erstellen und Ihren Befehl "rückwärts" schreiben.

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

apachelog tail -50
Glenn Jackman
quelle
2

Ein Alias ​​zu einem Verzeichnis ist Link. Aus diesem Grund besteht eine Möglichkeit darin, eine Reihe von Links zu den gewünschten Dateien in einem Verzeichnis zu erstellen. Dann alias rtail to tail, damit es nach Dateien in diesem Verzeichnis sucht.

Roman B.
quelle
0

Tragen Sie dies in Ihr ~ / .bashrc ein

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

Mach eine Quelle ~ / .bashrc oder starte eine neue Bash-Sitzung ...

dann müssen Sie nur noch "tailapache" eingeben

Rainer Bendig
quelle