Wenn Ihr Workflow mit vielen sich wiederholenden Aktionen gefüllt ist, schadet es nie, nach Möglichkeiten zur Verbesserung und Optimierung Ihres Workflows zu suchen. Der heutige Q & A-Beitrag von SuperUser enthält einige hilfreiche Vorschläge für Leser, die ihren Workflow verbessern möchten.

Die heutige Question & Answer-Sitzung wird von SuperUser zur Verfügung gestellt - einer Unterteilung von Stack Exchange, einer Community-basierten Gruppierung von Q & A-Websites.

Screenshot mit freundlicher Genehmigung von Matt Joyce (Flickr).

Die Frage

SuperUser-Leser-Münze möchte wissen, wie das erste Wort in einem Bash-Befehl schnell geändert werden kann:

I would like to improve my workflow in bash and realized that I often want to execute the same command to a different executable.

Some Examples

1.) Git

2.) Bash

I know that I can hit Ctrl+a then Del to remove the first word, but I am wondering if there is a quicker way to do it.

Gibt es eine schnellere Möglichkeit für Münze, das erste Wort in Bash-Befehlen zu ändern?

Die Antwort

SuperUser-Mitwirkende Spiff, Hastur, jjlin. und Gustavo Giraldez haben die Antwort für uns. Zuerst, Spiff:

!$ expands to the last word of your previous command. So you could do:

Or

Your examples happened to only repeat the last word, so !$ worked fine. If you actually had a lot of arguments that you wanted to repeat, and you just wanted to change the first word, you could use !*, which expands to all words of the previous command except the zeroth.

See the “HISTORY EXPANSION” section of the bash man page. There is a lot of flexibility there.

Gefolgt von der Antwort von Hastur:

I would like to add a warning (see the answer from Spiff above). With !$, you do not have full visual control of the line you are running. The results can be harmful sometimes, especially if you incur a misprint. It takes what it needs from the history to expand on.

So if you write the last command with a blank space at the beginning, then this command will probably not finish from the history. When you execute your new command with !$, the shell will not take the parameters from the last command line typed, but only from the last part of the history.

Here are some more helpful words and commands.

Dann die Antwort von jjlin:

Ctrl+a to go to the beginning of the line, then Alt+d to delete the first word.

Und unsere letzte Antwort von Gustavo Giraldez:

The delete word shortcut is actually Meta+d, and Meta is usually mapped to Alt on Linux machines. On platforms where this is not the case, an alternative to get the Meta modifier is to use Esc as a prefix. You can read more about the Meta Key here.


Haben Sie etwas zur Erklärung hinzuzufügen? Ton aus in den Kommentaren. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Hier geht es zum vollständigen Diskussionsthread.

Top-Tipps:
Kommentare: