Die meisten meiner Aliasnamen haben folgende Form: alias p='pwd'
Ich möchte einen Alias, git commit
damit es funktioniertgit commit -v
Beim Versuch, einen Alias mit einem Leerzeichen zu erstellen, tritt jedoch ein Fehler auf:
$ alias 'git commit'='git commit -v'
-bash: alias: `git commit': invalid alias name
git config
nicht zu antwortengit-config
git
Befehle mit Aliasnamen, mit nur ein wenig von Shell - Skript. (Ich poste diesen Kommentar nicht als Kritik, BTW. Diese Antwort wurde fast ein Jahr nach Ihrer gepostet! IchSie sprechen von einem Befehl, der ein Leerzeichen enthält, aber hier ist der Befehl
git
und es ist kein Leerzeichen enthalten.Um einen git commit- Befehl aufzurufen , müssten Sie ihn schreiben
Im Allgemeinen enthalten Befehle in ihren Namen kein Leerzeichen, weshalb es umständlich ist, sie in einer Shell aufzurufen. Ich glaube daher, dass Sie einen solchen Befehl nicht auf Ihrem System finden.
Mit csh, tcsh oder zsh können Sie einen der oben genannten Aliasnamen vergeben, nicht jedoch mit bash oder ksh (obwohl pdksh dies zulässt, aber Sie nicht zulassen, dass Sie sie verwenden). In zsh:
Macht den
git command
Befehl (wenn er nur als'git command'
(mit einfachen Anführungszeichen) aufgerufen wird ) zu einem Alias für dengit
Befehl mit den Argumentencommit
und-v
. Nicht das, wonach du gesucht hast, würde ich allerdings raten.Da
alias
nur Aliasbefehle möglich sind , können Sie hier nur dengit
Befehl als Alias verwenden , und Sie müssen einen Alias für etwas festlegen, das ein "-v" nach "commit" in die Liste der Argumente einfügt. Am besten mit der Lösung von @ jw013, aber wenn Sie aus irgendeinem Grund keinen Alias verwenden können oder möchten, können Sie eine Funktion verwenden, um die Aufgabe zu erledigen:quelle
In Bash können Sie keinen Alias für einen Befehl mit Leerzeichen erstellen.
Ich verwende jedoch die folgende Funktion in meinem .bashrc als Problemumgehung.
So funktioniert es: Sie beginnen mit dem Befehl, den Sie aufrufen möchten. In meinem Fall ist es das
sudo
.Anschließend erwähnen Sie, welche Parameter erforderlich sind. In diesem Fall
pacman -Syu
.Wenn ausgelöst, welchen Befehl soll er ausführen? In der obigen Aussage ist es
pacup.sh
.Else, welcher Befehl ausgeführt werden soll,
sudo $@
.$@
Dies ist, wie Sie anhand der erraten haben, die Parameterliste, die der Befehl annimmt.Wenn Sie den Befehl für Ihren speziellen Fall eingeben, ist dies:
Diese Lösung ist jedoch für den allgemeineren Fall gedacht, in dem Sie Befehle mit Leerzeichen als Alias verwenden möchten.
In Ihrem speziellen Fall würde ich Ihnen empfehlen, die Lösung von jw013 zu verwenden, um Aliasnamen für Ihre git-Befehle zu verwenden
git-config
quelle
if [[ $1 == 'commit' ]]...
? Die Erweiterung von $ @ kann mehr Argumente für das Festschreiben enthalten, die Sie tatsächlich behalten möchten.Aus der Bash-Alias-Manpage
Da nur das erste Wort markiert ist, können Sie keinen Alias mit mehreren Wörtern erstellen. In dieser Frage Super User , eine Abhilfe eine Funktion vorgesehen ist:
Es kann angepasst werden
git
.quelle
\ls
umgeht ein Alias fürls
.[_!%,@]
), erweitert werden soll. Erweiterungen wie zshs Aliasing von '\ ls' oder ksh / dash / bash / zshs Aliasing von werden nicht verboten,a-b
da sonst keine einzige POSIX-Shell existieren würde. Es heißt nur, dass ein portables Skript (keine Shell) keinen solchen Alias verwenden sollte.'git commit'
in einer POSIX-Shell an der Position eines Befehls schreiben , muss ein eingebautes Dienstprogramm, eine Funktion oder ein externer Befehl aufgerufen werden.Auch wenn die richtige Lösung darin besteht, Aliase wie in jw013 vorgeschlagen zu verwenden, können Sie NEST-Aliase verwenden, um einen Alias mit Leerzeichen zu erstellen.
Zum Beispiel habe ich einen Alias zum Löschen eines Zweigs sowohl lokal als auch remote, aber ich möchte, dass der Benutzer den Zweig immer angibt:
quelle
Aus diesem Beispiel sollte diese Arbeit:
Aber mit deinen Befehlen:
quelle