
Bashを使用して現在のパスの特定の部分を別のものに「置き換える」最も簡単な方法は何ですか?現在のパスがこの形式の場合、最も短いコマンドを使用してそのディレクトリに/xxxxx/foo/yyyyy
どのように移動できますか?/xxxxx/bar/baz/yyyyy
答え1
必要に応じて、シェル機能を利用してこの機能を提供できます。
change() { path=`pwd`; cd `echo $path | sed "s/$1/$2/"`; }
/foo/bar/ から呼び出されます:
change "bar" "gazi"
この例では、 ""は必要ありませんが、名前にスペース文字を含むディレクトリなどの特殊文字列には必要です。
答え2
それほど短くはありませんが、効果的です。cd ${PWD/foo/bar\/baz}
答え3
cd ../../bar/baz/yyyyy
cd $(echo $PWD | sed 's|foo|bar/baz|')
2つ目は「よりクール」に見えますが、1つ目はより短いです。
答え4
/xxxxx/foo/yyyyy
withに変更し、cd /xxxxx/foo/yyyyy
このコマンドの直後に別のディレクトリに変更したいと仮定すると、を使用できます!!:s/foo/bar\/baz/
。つまり、最後のコマンドを繰り返してfoo
に置き換えますbar/baz
。
cd
これは、2つの間でいくつかのコマンドを実行するときに使用できます!cd:s/foo/bar\/baz/
。つまり、前のcd
コマンドを繰り返して置き換えます。
より多くの例と履歴コマンドを表示するには、次の点を確認してください。バッシュリファレンスマニュアル。