bashで「〜」のようなカスタムの「ディレクトリエイリアス」を作成できますか?


13

bashでは、を使用してホームディレクトリに移動しcd ~、実際にを使用して任意のコマンドでホームディレクトリを参照でき~ます。

他のディレクトリを参照するために、新しいカスタムの「ディレクトリエイリアス」(?)を作成できますか?仮説の例:

make_alias "~~" /mnt/photon/work/foo_project/

cp ~/home.png ~~/set_8/home_4.png

もしそうなら、それをどのように行うことができますか?それができない場合、それは設計によるものであり、なぜそうなのですか?

いい~ですね:どこでどのように設定され、この「〜」にバインドされますか?


1
特に役に立ちませんが、グローバルエイリアスを使用すると、ZSH を使用できますが、BASHは使用できません。:エイリアス-g ~~ = '/ mnt / photon / work / foo_project /'
SuperMagic

1
@SuperMagic:グローバルエイリアスも好きです。しかし、2番目の例(cp ~~ / set ...)では失敗します。名前付きディレクトリの方が適切です。n=/mnt/photon/work/foo_project次にcp foo ~n/bar。(OPに関する注意:zshにも限定されます)。
mpy

1
@OliverSalzburg:これは重複だとは思わない。もう1つの質問は、単一文字の再マッピング(@または_)についてです。これは、bashでは不可能ですが、~~確かに可能です(ハックですが可能です)。また、この再マッピングがどのように行われるかについては答えません。
Dennis

関連する質問されました:superuser.com/questions/541767
n611x007

回答:


25

チルダはエイリアスではなく、bashのシェル展開の一部です(*.txtまたはと同様$((1 + 2)))。

Bashチルダ拡張は、次のチルダプレフィックスをサポートします。

~            The value of $HOME

~/foo        $HOME/foo

~fred/foo    The subdirectory foo of the home directory of the user fred

~+/foo       $PWD/foo

~-/foo       ${OLDPWD-'~-'}/foo

~N           The string that would be displayed by `dirs +N'

~+N          The string that would be displayed by `dirs +N'

~-N          The string that would be displayed by `dirs -N'

dirsディレクトリスタックを使用します。を使用pushdしてディレクトリを追加できます。

に関する特定の質問に答えるために~~、はい、ディレクトリをそれにマップすることが可能です。というユーザーを作成し、そのホームディレクトリとして~設定/mnt/photon/work/foo_project/します。

sudo useradd '~'
sudo sed -i 's#:/home/~:[^:]*$#:/mnt/photon/work/foo_project:/bin/false#' /etc/passwd

もちろん、はるかに「より賢い」アプローチは~/.bashrc、コマンドであなたのディレクトリを指すシェル変数を定義することです

foo=/mnt/photon/work/foo_project

$foo通常どおり、を介してアクセスできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.