/xxxxx/foo/yyyyyyから/xxxxx/bar/yyyyyyにディレクトリを変更する最速の方法

/xxxxx/foo/yyyyyyから/xxxxx/bar/yyyyyyにディレクトリを変更する最速の方法

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/yyyyywithに変更し、cd /xxxxx/foo/yyyyyこのコマンドの直後に別のディレクトリに変更したいと仮定すると、を使用できます!!:s/foo/bar\/baz/。つまり、最後のコマンドを繰り返してfooに置き換えますbar/baz

cdこれは、2つの間でいくつかのコマンドを実行するときに使用できます!cd:s/foo/bar\/baz/。つまり、前のcdコマンドを繰り返して置き換えます。

より多くの例と履歴コマンドを表示するには、次の点を確認してください。バッシュリファレンスマニュアル

関連情報