web-dev-qa-db-ja.com

〜(チルダ)記号のように機能してディレクトリを表すコマンド

cd ~/scripts。これは私の家のscriptsディレクトリに移動します。これと同様に、cd xxx/mywork->が「mywork」ディレクトリ/ home/work/softwareに移動するように、他のディレクトリに入ることができる「エイリアス」のような設定が必要です。コマンドでxxx/home/work/softwareに設定したい。

5
vaidhyanathan

使用しているシェルはわかりませんが、zshにはこれに対するサポートが組み込まれています。それは 名前付きディレクトリ と呼ばれます。

これを設定するには、次のようなコードを.zshrcに追加します。

mywork=/home/work/software  #set variable
: ~mywork    #Reference variable with a tilde in a no-op statement

次に、次のようにコマンドラインで使用できます。

$ cd ~mywork

またはこれ:

$ cd ~mywork/sub/directories

これを設定する構文がどのように/なぜ機能するかについての完全な説明はここにあります: 名前付きディレクトリ

3
Sildoreth

CDPATHを設定すると、求めている内容に近づくことができるようです。

cd

    cd [-L|[-P [-e]] [-@] [directory]

    Change the  current working directory to  directory.  [...] If
    the Shell variable CDPATH exists, it is used as a search path:
    each directory name in CDPATH  is searched for directory, with
    alternative  directory names  in CDPATH  separated by  a colon
    (‘:’).  If directory begins with a slash, CDPATH is not used.

このように、CDPATH/home/workがある場合、cd software/home/work/softwareに移動します。

特定の質問に近いものが必要な場合は、シンボリックリンクを使用してディレクトリを設定し、そのディレクトリを配置する方がよいでしょう。例:mkdir ~/.links、次にCDPATH=~/.links、次に~/.links内に、myworkから/home/work/softwareへのシンボリックリンクを作成します。次に、cd myworkがそこに到達するはずです。

2
dhag

これは正確にはあなたが求めているものではありませんが、 [〜#〜] z [〜#〜]bashzsh)これは、「頻度」に基づいて最も使用されているディレクトリを追跡し、ジャンプできるようにします。

あなたの例では、次のようになります。

z software

そしてそれはおそらくディレクトリを次のように変更するでしょう:

 /home/work/software
0
FloHimself

私はここで提案に従いました: http://jeroenjanssens.com/2013/08/16/quickly-navigate-your-filesystem-from-the-command-line.html そして決して振り返りませんでした。このユーティリティの鍵は、「cd」がディレクトリへのシンボリックリンクと、次のようなシェル関数をたどることです。

export JJPATH=$HOME/.jjlinks    
function jj {
    cd -P "$JJPATH/$1" 2>/dev/null || echo "No such link: $1"
}

ディレクトリ$ HOME/.jjlinksに、必要なすべてのシンボリックリンクを隠しておきます。あなたが現在あなた自身を見つけている深くネストされたディレクトリへのそのようなリンクを作るための他の単純なシェル関数があります。

私はこの提案の作者に敬意を表して「jj」を使用しました(それに加えて、ほとんどの場合、右手の人差し指がここにあります)。

 jj pj7

すぐにディレクトリを「〜/ projects/sequence/hepatocyte/seq_783/bin /」に変更します

0
Theophrastus