2

出力を複数の引数に分割せずにBASHシェルでコマンド置換を行う方法はありますか?

あるディレクトリのパス(GUIファイルブラウザのロケーションバーから)をクリップボードにコピーしてから、次のコマンドを発行します。コマンドxselは、この場合はディレクトリのパスであるクリップボードの内容を返します。

cd `xsel`

ただし、一部のパスにはスペースが含まれている場合や、BASHで使用される特殊文字が含まれている場合もあります。

コマンドの出力を単一の引数として、BASHが特殊文字をいじることなく渡すにはどうすればよいですか?

4

3 に答える 3

5
cd "$(xsel)"

すべての特殊文字($とスペースを含む)を処理するようです。

私のテスト文字列はboo*;cd.*($\: $_

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

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

$ cd "$(xsel)"
$ pwd
/tmp/boo*;cd.*($\: $_
于 2009-09-01T11:15:23.330 に答える
2

やってみました:

cd "`xsel`"

パスにドル($)またはバックスラッシュ(\)が含まれていない限り、これで問題は解決します。

于 2009-09-01T10:59:27.903 に答える
0

プログラムでこれを行っていない場合、Linuxのほとんどの端末では、マウスを中クリックするだけでクリップボードから貼り付けることができます。もちろん、@ daveが提案するように、貼り付けの前後に引用符を付ける必要があります。

于 2009-09-01T11:10:45.977 に答える