複数のハードドライブにまたがるディレクトリを簡単にナビゲートする方法を探して、端末にショートカットと同じ機能を設定したいと思います。
Windowsは、mklink
そのディレクトリに移動するためのシンボリックリンクを作成するか、現在のファイルパスの末尾に場所を追加する接続を作成することによってこれを行います。
これは実際にナビゲーションに関するものなので、リンクなどである必要はありません。おそらくcd $myDir
(好ましくは)いくつかの環境変数を設定できます。
これは可能ですか、それともカタログをよりよく学ぶべきですか?
答え1
ファイルシステムのレイアウトに慣れるのは、有能なユーザーになるための一部です。この目標のために費やす時間は無駄な時間ではありません。ただし、これによりファイルシステムをより簡単に移動できます。 Linux/UNIX では、各「ドライブ」(構成に応じて物理的または論理的)が表示される Windows とは異なり、ストレージを構成するデバイスの数に関係なく、ファイルシステムは単一のツリーとして表示されます。デフォルト設定は独立したツリーで構成されています。
この問題を解決する方法はいくつかあります。もちろん、それぞれ異なるディレクトリを指す複数のシェル変数を設定できます。コマンドを実行すると、cd $SomeDir
シェルは変数を$SomeDir
展開し、コマンドラインでその変数を置き換えて、最後の実行時に変数に保存cd
されたディレクトリ名を受け取ります。これはおそらく最も簡単な方法です。シェル変数を絶対パスで埋めると、ファイルシステムのどこでも動作します。
ターゲットディレクトリへのシンボリックリンクも使用できます(ほとんどのUNIXはディレクトリへのハードリンクをサポートしていません)。ただし、これを機能させるには、カーネルがシンボリックリンクを確認できるように、パスパラメータに十分な情報を提供する必要があります。つまり、シンボリックリンクへの絶対パス、またはカーネルがリンクをたどるようにリンクを見つけるのに十分な相対パスを提供する必要があります。
シェルによって使用可能または使用不可になる別の方法は、シェルのcdpath
機能を使用することです。これはbash
、zsh
およびtcsh
他の間違いなくサポートされます。この手法を使用するCDPATH
と、実行時にコロンで区切られたディレクトリ名のリストに環境変数を設定できますcd
。ディレクトリの1つ$CDPATH
に渡されたサブディレクトリと名前が一致するサブディレクトリが含まれており、システムにディレクトリがある場合は、コマンドを実行して内容を探し、呼び出しサブディレクトリを探し、存在する場合は現在の作業ディレクトリをそのディレクトリに変更します。します。シェルは指定された順序でディレクトリを検索するので、引数として渡したサブディレクトリを含むディレクトリが複数ある場合、cd
CDPATH
/usr/local
/usr/local/www
cd www
$CDPATH
/usr/local
www
/usr/local/www
$CDPATH
$CDPATH
cd
最初のゲームで勝利してください。。これは私があまりにも頻繁に問題に遭遇し、もはや私たちではありません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
./
:
だから、行きたくない場合でも、出発することを心配する必要はありません。する正規化されたパスの使用(デフォルトではcd
aまたはaで.
始まるすべてのパラメータ/
) cd
まったく説明しないでください。