0

現在のディレクトリをすばやく保存して後で開くことができるように、いくつかのエイリアスを検討しています。

ALIAS cdo='pwd|sed 's/ /\ /g' > ~/.cdo'
AIIAS cdn='cd "$(cat ~/.cdo)"'

sed コマンドは明らかにスペースを扱います。

ただし、変数の解釈を必要とする、修正できない奇妙な問題がまだあります。

jk@bt:~# cd Hello\ World/
jk@bt:~/Hello World# pwd|sed 's/ /\\ /g' > ~/.cdo
jk@bt:~/Hello World# cat ~/.cdo
/home/jk/Hello\ World
jk@bt:~/Hello World# cd ..
jk@bt:~# cd "$(cat ~/.cdo)"
bash: cd: /home/jk/Hello\ World: No such file or directory
4

2 に答える 2

2

マスキングを二重にしているように見えます。

スペースを処理する 1 つの方法は、バックスラッシュでスペースを個別にマスクすることです。

 cd here\ I\ go 

または、それらすべてを二重引用符でマスクするには:

 cd "here I go" 

これも許可されますが:

 cd here" I "go

ただし、それらを混在させると、文字通りバックスラッシュが必要になります。

 cd "here\ I\ go" 

それが起こっていることです。

あまり一般的ではありませんが、タブと改行もファイルに含めることができることに注意してください。それらのマスキングは同じように機能しますが、ファイルからの読み取りは異なる場合があり、複数の空白はシェルによって単一の空白に圧縮されることがよくあります。

于 2012-06-05T15:32:28.920 に答える
1

\ファイル名が と の間"にない場合はでエスケープする必要があります"

cdn でエスケープするcdoが使用しない"

ALIAS cdo='pwd|sed 's/ /\ /g' > ~/.cdo'
AIIAS cdn='cd $(cat ~/.cdo)'

エスケープして使用しない""(私はこれが良いと思います)

ALIAS cdo='pwd > ~/.cdo'
AIIAS cdn='cd "$(cat ~/.cdo)"'
于 2012-06-05T15:30:51.137 に答える