Bashを使用したディレクトリの変更

Bashを使用したディレクトリの変更

cd現在のディレクトリ内でディレクトリを選択するより簡単な方法があるかどうか疑問に思います。

たとえば、現在のディレクトリの番号が付けられたリストのみを取得し、cd 1などのタスクを実行する方法はありますか?現在のディレクトリのサブディレクトリ間で簡単に移動できる他の方法はありますか?cd 2cd 3cd

答え1

autocdでこのオプションを設定すると、~/.bashrc名前のみを入力してディレクトリを変更できます。タブ補完機能を使用すると、単に最初の一意の文字を入力してクリックすると、目的のディレクトリTabに移動できます。

マニュアルから:

設定されている場合、ディレクトリ名として指定されたコマンド名は、cdコマンドの引数と同じように実行されます。このオプションは対話型シェルでのみ使用されます。

次のオプションを追加してください~/.bashrc

shopt -s autocd 

Zshを使用している場合は、以下を使用してこのオプションを設定してください。

setopt autocd 

答え2

~/.bashrcに機能を追加してください。

mycd() { local x; shopt -s {null,dot}glob; select x in ../ */; do cd "$x"; break; done; }

使用法:mycd

答え3

使用済み!デフォルトでは、切り替えたいディレクトリの一意のプレフィックスを入力してからを押しますTab。より正確には、を押してTab最初のユニークプレフィックスを完成させます。

いくつか変更するだけで可能ですラインオプションを読む。特に、設定show-all-if-ambiguous可能な完了項目が複数ある場合は、すぐにリストを表示するか、show-all-if-unmodifiedあいまいさのため現在プレフィックスを完了できなくなった場合にのみリストを表示します。これらのオプションはファイルに入ります~/.inputrc。たとえば、次のようになります。

set show-all-if-ambiguous on

Tab可能な限り、回転を繰り返し押すようにbashを設定できます。これを行うには、次のキーをバインドします。menu-completeデフォルト値の代わりにcomplete。あなたの~/.inputrc

"\t": menu-complete

インストールによっては、cd完了時にディレクトリのみを使用するか、すべてのファイルを使用できます。すべてのファイルを提供する場合は、状況に応じた完成を有効にする必要があります。確実にするバッシュ完了パッケージがインストールされ(ほとんどのディストリビューションで利用可能)、次の行があります。

. /etc/bash_completion

あなたのもの~/.bashrc(または/etc/bash.bashrcあなたのディストリビューションにある場合)。

ジッシュメニューから完成を選択する可能性を含む、bashにはない対話型使用のための多くの優れた機能を備えた代替シェルです。一度試してみることもできます。

答え4

現在のディレクトリファイルパスを環境変数(たとえば...)に割り当てることで、移行したい各ディレクトリに対して単一の文字プレースホルダを使用することもできます。

    a=`pwd`
    b=`pwd`

など。その後、以下を使用して各ディレクトリに移動できます。

    cd $a
    cd $b

引用符の間でコマンドを実行することを意味する「バックティック」と変数に出力を割り当てるには、等号を使用する必要があります。

単一の文字変数を作成してパスを割り当てることもできます。たとえば、次のようになります。

    c="/home/user/projects/c++/headers/docs"

その後、次を使用してそのディレクトリに変更できます。

    cd $c

関連情報