私が作業しているサーバーでは、常にディレクトリで作業する必要があります/foo/bar
。そのディレクトリにはサイトディレクトリのリストがあります。それぞれの中それらディレクトリは各開発者のためのディレクトリです。したがって、ツリーは次のようになります。
/foo/bar/
site1/
userA/
userB/
userC/
site2/
userA/
userB/
userC/
site3/
userA/
...
.bash_profileにルートディレクトリのエイリアスを設定したので、fb=/foo/bar
私のワークフローは次のようになります。
$ cd $fb
$ cd site2
$ cd userA
1行目と3行目は決して変わりません。私はいつもuserA
変更したサイトディレクトリのディレクトリに移動します。
私の質問:これをシェルスクリプトとしてビルドする必要なしに「site2」パラメータだけを渡す単一のコマンドに圧縮する賢い方法はありますか?それともシェルスクリプトが唯一の方法ですか?
答え1
Bash機能でできることはいくつかあります。
site() {
cd /foo/bar/site${1}/userA
}
これを .bashrc に入れてこのように呼び出してください。
site 2
/foo/bar/site2/userAに移動します。
答え2
このようなbash機能を使用してください。
function myCD() {
local site
local user
case $# in
0) read -p site: site
read -p user: user
;;
1|2)
site=${1}
user=${2:-userA}
;;
*)
echo "don't accept more as 2 arguments" >&2
return 1
;;
esac
cd ${fb}/${site}/${user}
}
答え3
次のエイリアスも使用できます。
alias site2="cd /foo/bar/site2/userA"
CDPATH 環境変数を確認することもできます。シェルのマニュアルページを参照してください。
答え4
ホームディレクトリに接続するだけです。
ln -s /foo/bar/site{$1}/userA ~/workspace/$1
これにより、すべてユーザーにローカルで表示されます。新しいサイトを追加する前に待つ必要はありません。
または私がしたことをやってください。 SSHを介してローカルワークステーションのホームディレクトリに直接インストールします。 IDEなど何でも通常より効率的です。
mkdir ~/workspace/site1
sshfs -o idmap=user $USER@server:/foo/bar/baz/site1/userA ~/workspace/site1
削除するには、
fusermount -u ~/workspace/site1
~からUbuntu ヘルプ
これをログインスクリプトとビンゴに入れると、すべてのワークスペースが私たちに属します!