web-dev-qa-db-ja.com

ディレクトリを変更するためのコマンドラインショートカット

複数のハードドライブにまたがるディレクトリに移動する簡単な方法を探しており、ターミナル内のショートカットと同等のものを設定したいと考えています。

Windowsでは、mklinkを使用してこれを実現し、ディレクトリにジャンプするシンボリックリンク、または現在のファイルパスの末尾に場所を追加するジャンクションを作成します。

これは本当にナビゲーションに関するものなので、リンクや何かである必要もありません。おそらく、cd $myDir(推奨)。

そのようなことは可能ですか、それとも本当に自分のディレクトリをよりよく学ぶ必要があるのですか?

6
user1695505

ファイルシステムのレイアウトに慣れることは、すべて有能なユーザーになることの一部です。その目的を念頭に置いて過ごす時間は、時間の浪費ではありません。ただし、そうは言っても、実際にファイルシステム内を移動しやすくすることができます。 Linux/UNIXでは、各「ドライブ」(構成に応じて物理ドライブまたは論理ドライブ)が表されるWindowsとは異なり、ストレージを構成するデバイスの数に関係なく、ファイルシステムは単一のツリーとして表示されます。独立したツリーによるデフォルト設定。

この問題に対処する方法はたくさんあります。それぞれが異なるディレクトリを指す一連のシェル変数を設定することは確かに可能です。 cd $SomeDirを発行すると、シェルは変数$SomeDirを展開してコマンドラインで置き換え、最終的に実行されると、cdが変数に格納されているディレクトリの名前を受け取ります。これはおそらく最も簡単な方法であり、シェル変数に絶対パスを設定すると、ファイルシステムのどこからでも機能するはずです。

ターゲットディレクトリへのシンボリックリンクを使用することもできます(ディレクトリへのハードリンクは、ほとんどのUNIXではサポートされていません)。ただし、これを有効にするには、カーネルがシンボリックリンクを解決できるように、パス引数に十分な情報を指定する必要があります。つまり、シンボリックリンクへの絶対パス、またはカーネルがリンクを検出できるようにするための十分な相対パスを指定する必要があるため、リンクをたどることができます。

シェルによっては、使用できるかどうかにかかわらず、シェルのcdpath機能を使用する方法もあります。これはbashzshtcshなどでサポートされています。この手法では、環境変数CDPATHをコロンで区切られたディレクトリ名のリストに設定します。これは、cdを実行したときに検索されます。 $CDPATH上のディレクトリの1つに、cdに渡された名前と一致する名前のサブディレクトリが含まれている場合、シェルは現在の作業ディレクトリを変更します。たとえば、CDPATH/usr/localが含まれていて、システムにディレクトリ/usr/local/wwwがある場合、cd wwwを発行すると$CDPATHの内容が検索され、 wwwと呼ばれる/usr/localのサブディレクトリを検索し、存在する場合は、現在の作業ディレクトリを/usr/local/wwwに変更します。シェルは$CDPATH内のディレクトリを指定された順序で検索するため、$CDPATHに、cdに引数として渡すサブディレクトリを含む複数のディレクトリが含まれている場合、最初の試合が勝つ。これは、私をもはや_cdpathから失うほど頻繁に私を捕らえました。

10
D_Bye

次のように、いくつかのエイリアスを設定できます。

$ alias abc="cd /home/user/Desktop/Folder"

これらを長期間保存するには、それらを.bashrcファイルに追加します。

これは、探しているナビゲーションだけの場合に機能します。ただし、上記の「abc」は、スクリプトを作成する場合には使用できません。

個人的には、長期的には、ディレクトリ構造[の関連部分]を覚えて覚えるのも簡単だと思います。エイリアスが多すぎると、覚えておくことが多くなります。エイリアスは、時間内に使用する必要がある別のコンピュータでは機能しません。

4
Jack

zユーティリティ- https://github.com/rupa/z をお勧めします(これはjという名前の別のユーティリティ。

zが行うことは、シェルのcd関数をオーバーライドして、アクセスするすべてのディレクトリをログに記録するという副作用を追加することです。これらのディレクトリは、ファイル~/.zに「frecency」の降順で格納されているため、より頻繁に、より最近アクセスされたディレクトリはより高く表示されます。

次に、cdをしばらく使用してこのインデックスを作成した後、新しいz $DIRコマンドを使用して、$DIRで最も高いサブストリング~/.zを含むディレクトリにジャンプできます。

4
yoniLavi