Verwenden von Alias, um Backticks in bash widerzuspiegeln

719
Galen

Entschuldigung, wenn dies anderswo beantwortet wird, konnte ich für mein Leben keine Lösung für meinen speziellen Fall finden, was etwas seltsam ist, gebe ich zu. (Hinweis: Alle "Using" -Wörter in diesem Beitrag erscheinen aus irgendeinem Grund blau, sollten aber nicht sein und ich weiß nicht, wie ich das verhindern kann).

Ich benutze bash in MacOS. Ich habe ein paar Aliase in meiner .bashrc, die einfach etwas in das Terminalfenster drucken, um mir das Einprägen von Befehlen zu erleichtern, oder schnell jemandem ein Beispiel zeigen (im Code unten erstelle ich den Alias ​​in der Befehlszeile, aber in Wirklichkeit bin ich immer dabei) Schreibe Aliase in .bashrc):

556 ~ alias howtotensorboard="echo tensorboard --logdir=logs/ --port=6001" 557 ~ howtotensorboard tensorboard --logdir=logs/ --port=6001 

Wenn ich Echo nur in der Befehlszeile verwende, kann ich vor einem Backtick mit einem Backslash einen Backtick in das Fenster drucken:

559 ~ echo Using \`which python\` etc Using `which python` etc 

Wenn Sie jedoch dasselbe in einem Alias ​​ausführen, wird tatsächlich "which python" ausgeführt, anstatt es im Fenster zu drucken:

560 ~ alias howtobacktick="echo Using \`which python\` etc" 561 ~ howtobacktick Using /usr/bin/python etc 

TL; DR, ich möchte in .bashrc einen Alias ​​setzen, der ein Echo verwendet, um einen Backtick auszudrucken, sodass ich am Ende genau das in bash tun kann:

558 ~ howtobacktick Using `which python` etc 

Ich habe ein paar Variationen innerhalb des Alias ​​in .bashrc ausprobiert und keine davon hat funktioniert. Wie bekomme ich das gewünschte Verhalten? Und gibt es eine Möglichkeit, dies speziell mit Echo zu tun?

4

1 Antwort auf die Frage

3
Arkadiusz Drabczyk
$ alias howtobacktick='echo Using \`which python\` etc' $ howtobacktick Using `which python` etc 

BEARBEITEN :

Dies liegt daran, dass Backticks ( `) und andere Sonderzeichen nicht speziell in Anführungszeichen behandelt werden. Vergleichen Sie:

$ echo 'Using `which python` etc' Using `which python` etc $ echo "Using `which python` etc" Using /usr/bin/python etc 
Wow, ich habe alles ausprobiert, außer ein einziges Zitat zu verwenden, das war das Einzige, was ich brauchte. Es war so einfach. Wissen Sie, warum die Verwendung eines einfachen Zitats funktioniert, und doppelte Anführungszeichen nicht? Galen vor 6 Jahren 0