Linux:シェルスクリプトを使用せずに複雑なcdコマンドのショートカットを作成できますか?

Linux:シェルスクリプトを使用せずに複雑なcdコマンドのショートカットを作成できますか?

私が作業しているサーバーでは、常にディレクトリで作業する必要があります/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 ヘルプ

これをログインスクリプトとビンゴに入れると、すべてのワークスペースが私たちに属します!

関連情報