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

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

複数のハードドライブにまたがるディレクトリを簡単にナビゲートする方法を探して、端末にショートカットと同じ機能を設定したいと思います。

Windowsは、mklinkそのディレクトリに移動するためのシンボリックリンクを作成するか、現在のファイルパスの末尾に場所を追加する接続を作成することによってこれを行います。

これは実際にナビゲーションに関するものなので、リンクなどである必要はありません。おそらくcd $myDir(好ましくは)いくつかの環境変数を設定できます。

これは可能ですか、それともカタログをよりよく学ぶべきですか?

答え1

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

この問題を解決する方法はいくつかあります。もちろん、それぞれ異なるディレクトリを指す複数のシェル変数を設定できます。コマンドを実行すると、cd $SomeDirシェルは変数を$SomeDir展開し、コマンドラインでその変数を置き換えて、最後の実行時に変数に保存cdされたディレクトリ名を受け取ります。これはおそらく最も簡単な方法です。シェル変数を絶​​対パスで埋めると、ファイルシステムのどこでも動作します。

ターゲットディレクトリへのシンボリックリンクも使用できます(ほとんどのUNIXはディレクトリへのハードリンクをサポートしていません)。ただし、これを機能させるには、カーネルがシンボリックリンクを確認できるように、パスパラメータに十分な情報を提供する必要があります。つまり、シンボリックリンクへの絶対パス、またはカーネルがリンクをたどるようにリンクを見つけるのに十分な相対パスを提供する必要があります。

シェルによって使用可能または使用不可になる別の方法は、シェルのcdpath機能を使用することです。これはbashzshおよびtcsh他の間違いなくサポートされます。この手法を使用するCDPATHと、実行時にコロンで区切られたディレクトリ名のリストに環境変数を設定できますcd。ディレクトリの1つ$CDPATHに渡されたサブディレクトリと名前が一致するサブディレクトリが含まれており、システムにディレクトリがある場合は、コマンドを実行して内容を探し、呼び出しサブディレクトリを探し、存在する場合は現在の作業ディレクトリをそのディレクトリに変更します。します。シェルは指定された順序でディレクトリを検索するので、引数として渡したサブディレクトリを含むディレクトリが複数ある場合、cdCDPATH/usr/local/usr/local/wwwcd www$CDPATH/usr/localwww/usr/local/www$CDPATH$CDPATHcd最初のゲームで勝利してください。。これは私があまりにも頻繁に問題に遭遇し、もはや私たちではありませんcdpath

答え2

次のエイリアスを設定できます。

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

これらの内容を長期間保存するには、.bashrcファイルに追加してください。

ナビゲーションだけを探している場合はこれが機能します。しかし、スクリプトを書きたい場合、上記の「abc」は役に立ちません。

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

答え3

私がお勧めしたいのはユーティリティ -https://github.com/rupa/z (これは他の名前の影響を受けます。ジェイ)。

これが行うことは、シェルのcd機能をオーバーライドして、訪問するすべてのディレクトリを記録する副作用を追加することだけです。これらのディレクトリは~/.z「頻度」に応じて降順にファイルに保存されるため、最近より頻繁にアクセスした場合はそのディレクトリがより高く表示されます。

その後、cd時間の経過とともにこのインデックスを作成し、新しいコマンドを使用して最も高い位置に表示されるサブストリングを含むディレクトリz $DIRに移動できます。$DIR~/.z

答え4

持っている$CDPATH

mkdir -p ./1/2/3/4/dir ./3/2/1/dir ./12/dir
CDPATH=":$HOME/1/2/3/4:$HOME/3/2/1:$HOME/12:"
cd dir

頻繁にアクセスする中央パスのリストをその値に入れると、フルパスを指定せcdずにそのサブパスにアクセスできます。cd見つけた最初の一致にあなたを配置します。stdout表示されると、位置が印刷されます。

出力:

/home/mikeserv/1/2/3/4/dir

値は:コロンで区切られます$PATH。そのため、ディレクトリ名が異常な場合に問題が発生する可能性があります。しかし、それは非常に便利かもしれません。これはPOSIXの指定- すべての最新のシェルで動作する必要があります。

 cd ..; rm -rf dir; cd dir

出力:

/home/mikeserv/3/2/1/dir

:ただし、コロンを使用して値を開くことを確認してください。ほとんどのシェルでこれを使用すると、先行することなく現在のディレクトリのサブディレクトリにアクセス$CDPATHできます。これが先行する空のフィールドが表すものです。cd./:

だから、行きたくない場合でも、出発することを心配する必要はありません。する正規化されたパスの使用(デフォルトではcdaまたはaで.始まるすべてのパラメータ/ cdまったく説明しないでください。

関連情報