In der Bash-Sprache auf Linux-PCs/Servern stellt dieser Artikel vor, wie man das Ausrufezeichen (!) deaktiviert, das als Befehl oder Sonderzeichen erkannt wird.
Ich habe zuvor über das Escapen von Ausrufezeichen geschrieben.
In einfachen Fällen funktioniert die oben genannte Methode, aber sie führt zu Fehlern, wenn sie in Anführungszeichen eingeschlossen ist.
Fall, in dem Escapen funktioniert:
xsv select '!path' -d "\t" - <<< "$( awk '{print NR "\t" $s}' <<< "$( data-music-csv | removeEmptyLines )" )" | xsv sort --select rate -N -R | xsv search --select genre "${2:-".*"}" | xsv table | shuf | tail -1 | awk 1
Fall, in dem es zu einem Fehler führt:
id="$( xsv select '!path' -d "\t" - <<< "$( awk '{print NR "\t" $s}' <<< "$( data-music-csv | removeEmptyLines )" )" | xsv sort --select rate -N -R | xsv search --select genre "${2:-".*"}" | xsv table | shuf | tail -1 | awk 1 )"
Ich habe auch keine Ahnung, wie man dies escaped, also deaktivieren wir es einfach.
set +H

$ : !music
: music-random
$ set +H
$ : !music
$
Jetzt kann der !-Befehl nicht mehr verwendet werden. Wenn Sie ihn regelmäßig verwenden und es ein Problem ist, dass er nicht verwendet werden kann, können Sie ihn mit set -H zurücksetzen.
Wie auch unten geschrieben, ist das ! beängstigend, nicht wahr? Da Befehle wie rm -rf . mit !r ausgeführt werden können, ist es zu gefährlich.
quoting - Can’t use exclamation mark (!) in bash? - Unix & Linux Stack Exchange