私たちのサーバーには、テスト、ステージング、およびプロダクション用の複数の重複フォルダ構造があります。マイナーな変更を除いて、フォルダ構造は通常3つすべて同じです。
私はWordPressプラグインを開発するときに開発フォルダ構造(例えば~/dev/com/wp-content/plugins/myplugin
)を掘り下げます。私はそれが~/staging/com/wp-content/plugins/myplugin
存在することを知っています。
現在の作業ディレクトリがある場合は、~/dev/com/wp-content/plugins/myplugin
簡単に切り替えることができます。~/staging/com/wp-content/plugins/myplugin
いいえ完全なディレクトリ構造を入力しますか?
次のようなものを入力したいcdx
~/staging
、さらにcdx
../../../../../staging
現在のディレクトリパスを使用して新しいディレクトリに移動するコマンドを実行します。明らかに、新しいフォルダに正しい構造が含まれていないとエラーが発生します。
完全なディレクトリ構造の入力に停止しましたか?それとももっと良い方法がありますか?
答え1
文字列置換を使用してくださいbash
。
$ a="~/dev/com/wp-content/plugins/myplugin"
$ echo ${a/dev/staging}
~/staging/com/wp-content/plugins/myplugin
だから、次の関数:
cdx ()
{
cd "${PWD/$1/$2}"
}
その後、フォルダからにcdx dev staging
切り替えます。いくつかの検証で機能名を指定できます。dev
staging
cd
cd ()
{
if [ $# != 2 ]
then
builtin cd "$@"
else
builtin cd "${PWD/$1/$2}"
fi
}
影響:
~ # cd /tmp
/tmp # cd tmp srv
/srv # cd
~ # cd -
/srv
/srv # cd tmp var
/srv #
cd
これは、2つのパラメータを除くすべてのケースで一般的な動作を維持します。
答え2
この機能をディレクトリに追加し、.bash_profile
作業cdstaging
できるディレクトリを入力します。~/dev
~/staging
もちろん、名前は好きなように変更できます。また、逆方向関数を作成することもできます。関数名を変更して"1s@dev@staging@"
逆方向にするだけです。
cdstaging ()
{
OLDPATH=$(pwd | sed -e "1s@$HOME@~@")
NEWPATH=$(echo $OLDPATH | sed -e "1s@dev@staging@")
cd $NEWPATH
}
答え3
またはksh
:zsh
cd dev staging