Wenn man Beispiele für Shell-Befehle angibt, wird jeder Zeile oft das vorangestellt, um $
zu verdeutlichen, dass sie im Terminal ausgeführt werden sollen. Zuletzt begegnete mir das beidiese Github-Seite.
$ sudo apt-get install curl netcat-openbsd bc pv
$ wget https://raw.githubusercontent.com/neutronth/speedtest-lite/master/speedtest-lite
Wenn diese Zeilen dreimal angeklickt werden, ist das Dollarzeichen (das Teil dieser Zeile ist) natürlich Teil der Auswahl. Gibt es eine Möglichkeit, mein Terminal (ich verwende Terminator) so einzustellen, dass $
es ignoriert wird, wenn es das erste Zeichen eines Befehls ist?
Antwort1
Ich habe mich daran gemacht, diese Frage zu beantworten, und es stellte sich heraus, dass es etwas komplizierter war, als ich dachte. Mit ein wenig Bash-Magie:
cat file | while read x; do OUTPUT=$(echo $x | sed 's/^.//'); eval $OUTPUT; done
Dabei wird die Datei auf die Standardausgabe gedruckt, jede Zeile gelesen, das erste Zeichen entfernt und das Ergebnis in $OUTPUT gespeichert. Anschließend wird die Zeile in $OUTPUT als Befehl mit eval ausgeführt. Seien Sie vorsichtig, wenn Sie eval verwenden, da dieses Skript eine ganze Datei als Befehle ausführt.