GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kann ',,' als Alias ​​für '..' verwendet werden?

Aliasse sind nicht dazu gedacht, aber Sie können eine Funktion namens cd erstellen das ist ein Wrapper für die echte cd . Dieser funktioniert für mich! Legen Sie es einfach in Ihren .bash_profile ein oder Ihre Profildatei Ihrer Wahl.

cd () { if [ "$1" = ",," ]; then builtin cd ..; else builtin cd "[email protected]"; fi; }

Oder mit Kommentaren und hübscher Formatierung:

cd ()
{
  if [ "$1" = ",," ]; then  # if first argument is ",,"...
    builtin cd ..           # call the builtin cd with ".." instead...
  else
    builtin cd "[email protected]"         # else call builtin cd with original arguments 
  fi
}

BEARBEITEN

Danke @derobert für den Hinweis auf if then else ist hier besser als && || . Außerdem ist mir gerade aufgefallen (*facepalm *), dass diese Implementierung nur funktioniert, wenn irgendwelche Nicht-Pfad-Argumente (d. h. -L -P ) sind nicht das erste Argument. Seien Sie also gewarnt, wenn Sie die schlechte Angewohnheit haben, cd -L ,, einzugeben das wird dir nicht helfen. Und das ist nicht trivial, um richtig damit umzugehen, denke ich.


ZSH:

Wenn Sie zsh verwenden alias -g ,,=".." ist das, was Sie brauchen, aber dies führt dazu, dass ",", überall erweitert wird, nicht nur, wenn es mit cd verwendet wird .

Ab man zshbuiltins :

Wenn die -g Flag vorhanden ist, definieren Sie einen globalen Alias; globale Aliase werden expandiert, auch wenn sie nicht an der Kommandoposition vorkommen.

BASH:

Wenn auf bash beschränkt (da die Frage mit bash gekennzeichnet ist), lesen Sie Folgendes:

Dies ist jedoch, wie gewünscht, eine reine Alias-Lösung Dies wird mehr als nötig tun und den Benutzer möglicherweise frustrieren (siehe die Warnung am Ende meines Beitrags).

Zitieren von man bash :

Wenn das letzte Zeichen des Alias-Werts ein Leerzeichen ist, wird das nächste Befehlswort nach dem Alias ​​ebenfalls auf Alias-Erweiterung geprüft.

Daher reicht es aus, cd zu aliasieren mit einem zusätzlichen Leerzeichen (um das Erweitern des nächsten Arguments zu ermöglichen) und dann mit dem Alias ​​,, bis .. . Siehe das

alias cd='cd '
alias ,,='..'

bietet genau das, was Sie brauchen.

Beachten Sie, dass dies nicht nur für bash richtig ist (und seine alias Implementierung), sondern alle POSIX-kompatiblen Shells. Zitieren eines Beispiels aus man 1p alias (Das Handbuch beschreibt diese Funktion nicht explizit, sondern nur anhand eines Beispiels):

  1. Richten Sie nohup so ein, dass es mit einem Argument umgehen kann, das selbst ein Aliasname ist:

           alias nohup="nohup "
    

Warnung: Wie @PeterCordes in seinem Kommentar schreibt, wird es automatisch andere verursachen Aliase, die erweitert werden sollen, wenn sie nach cd geschrieben werden . Möglicherweise müssen Sie cd \grep schreiben wenn Sie das Verzeichnis in eines mit dem Namen grep ändern möchten aber Ihr grep ist ein Alias ​​für grep --color=auto . Ohne den Backslash cd meldet den Fehler "zu viele Argumente" (Sie können nicht cd in zwei Verzeichnisse gleichzeitig)!.


Aliasse müssen das erste Wort sein eines Befehls. Außerdem muss der Alias ​​durch ein Wort ersetzt werden daher keine Leerzeichen).

Bash-Referenzhandbuch:Aliasse

Aliasse ermöglichen es, ein Wort durch eine Zeichenfolge zu ersetzen wenn es als erstes Wort verwendet wird eines einfachen Befehls.

Sie könnten beide mit .. aliasieren und ,, muss cd .. sein .

$ alias ..="cd .."
$ alias ,,="cd .."
$ cd /tmp && pwd
/tmp
$ ,, && pwd
/

Linux
  1. Kann ein Bash-Skript mit einer Datei verknüpft werden?

  2. Wie man `alias Sudo !!`?

  3. Einen Befehl ausführen, der von einem Alias ​​verdeckt wird?

  4. Kann das Farbthema an einen Puffer gebunden werden?

  5. Kann die Grub-Schriftgröße angepasst werden?

So erstellen Sie Bash-Aliase

13 Möglichkeiten, wie Sie Linux helfen können

So erstellen Sie einen SSH-Alias ​​unter Linux

Alias-Befehl unter Linux

So erstellen Sie einen Alias ​​unter Linux

Linux-Alias-Befehl