Frage

Gibt es eine Möglichkeit Befehl Substitution in bash-Shell zu tun, ohne Ausgabe in mehrere Argumente zu brechen?

Ich kopiere den Pfad ein Verzeichnis (aus der Adressleiste in einem GUI-Dateibrowser) in die Zwischenablage und fügen Sie den folgenden Befehl eingeben, in dem der Befehl xsel den Inhalt der Zwischenablage zurückgibt, die den Pfad des Verzeichnisses, in diesem Fall:

cd `xsel`

Aber einige Pfad Leerzeichen enthalten oder können sogar einige Sonderzeichen durch BASH verwendet werden, enthalten.

Wie kann ich die Ausgabe eines Befehls als ein einziges Argument übergeben und ohne BASH mit Sonderzeichen durcheinander?

War es hilfreich?

Lösung

cd "$(xsel)"

scheint alle Sonderzeichen (einschließlich $ und Leerzeichen) zu behandeln.

Mein Test-String war boo*;cd.*($\: $_

$ mkdir "$(xsel)"
$ ls
boo*;cd.*($\: $_

$ file boo\*\;cd.\*\(\$\\\:\ \$_/
boo*;cd.*($\: $_/: directory

$ cd "$(xsel)"
$ pwd
/tmp/boo*;cd.*($\: $_

Andere Tipps

Haben Sie versucht:

cd "`xsel`"

Das sollte die Arbeit tun, es sei denn, Sie haben Dollar ($) oder Back-Schrägstriche (\) in dem Weg.

Wenn Sie dies nicht programmatisch tun, die meisten Terminals in Linux kann Sie aus der Zwischenablage mit einer mittleren Maustaste auf der Maus einfügen. Natürlich müssen Sie noch Anführungszeichen vor und nach der Paste setzen, wie @ Dave schlägt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top