よく知られているディレクトリに「cd」するために必要な入力を短縮できますか


11

私はターミナルを開いてから、パスが非常に長い同じディレクトリにCDをたくさん入れています。

これは私がたくさんcdしていて、タブを使って物事を大幅にスピードアップしていることを意味します。

このディレクトリへのリンクのようなものを用意して、そこにcdするだけで、深くネストされたディレクトリにすばやく移動できれば、すばらしいでしょう。

これは可能ですか?


1
githubプロジェクトにcdして実行するような小さな(関連する)タスクを実行する(bash)スクリプトがいくつかありますgit status。私にもいくつかのエイリアスがあります.bash_profile。正確にはあなたが求めているものではなく、関連しています。
キーサー2013

回答:


24

複雑なパスをcd頻繁に処理する方法は次のとおりです。

mkdir ~/Links
ln -s /complexpath/there ~/Links

これはシンボリックリンクを作成します

~/Links/there

この新しい使用するには、Linksログインシェルがある場合に、効率的にディレクトリをbash 自分でこのコマンドを含める~/.profile(すべてのBourneスタイルのシェルで使用されますbashkshzsh:...)

CDPATH=~/Links:.
export CDPATH

これは、すべてのcdについて、シェルが2つのディレクトリ内を調べてローカルパス名を見つけることを意味します。

~/Links
.

テストするためにセッションを再起動する必要はありません。実行するだけです。

. ~/.profile

つまり、私を読んでください~/.profile。(~/.bashrc変更しない場合に同じ変数の初期化を繰り返す必要がないため、これを自分の中に置く必要はありません。)

テストが完了すると、セッションを再開できます;)。

これからは、行きたいと思うthereたびにタイプしなければなりません:

cd there

これは、私が見た中で最もエレガントな一般的なソリューションです。私は通常、(エイリアシングのような一般的な目的地のエイリアスを作成cdoraするcd $ORACLE_HOMEと、このような...)
bmike

誰かがFinderインターフェイスを介して単純な同等物に興味を持っているでしょうか?
dan 2013

11

エイリアスを定義することは、長いコマンドを短い省略形にする非常に簡単な方法です。エイリアスを正しく設定したら、.bashrcファイル(またはその他の起動ファイル)にセクションを作成して、起動する新しいシェルごとにこれらのエイリアスを再入力する必要がないようにすることができます。

.bashrc:

alias ws4='ssh qsv-rhws4'
alias httpdlog='cd /var/log/httpd/'
alias EC2='ssh -i BMTestEC2.pem ec2-user@xxxxxxxx.compute.amazonaws.com'

ログアウトして再びログインするか(または単にを実行. ~/.bashrc)、入力するだけでhttpdlogCDを実行できます。またはws4、実際にsshコマンドなどを実行します。

これにより、ホームディレクトリがごちゃごちゃに見えるような(大量の)空のリンクを作成する必要がなくなります。


10

autojumpまたはzを使用してみてください。

2つのいずれかをインストールした後、cd通常どおりにあなたはあなたが最も訪問したディレクトリを学習し、パスの一部を入力するだけでそれらに移動することができます:

$ cd /very/long/path/foobar
$ cd
$ z foobar
$ echo $PWD
/very/long/path/foobar

私は2つのzを好みます。


autojumpについては知らないが、 'z'スクリプトは揺れる!
クリス2013

7

autojumpとzに似ていますが、より良いIMHOであるfasdを強くお勧めします。ウェブサイトから:

Fasd(「高速」と発音が似ている)は、コマンドラインの生産性向上ツールです。Fasdは、POSIXシェルのファイルとディレクトリへの迅速なアクセスを提供します。これは、autojump、z、vなどのツールに触発されています。Fasdは、アクセスしたファイルとディレクトリを追跡しているため、コマンドラインですばやく参照できます。

fasdという名前は、デフォルトの推奨エイリアスf(files)、a(files / directories)、s(show / search / select)、d(directories)に由来します。

Fasdはファイルとディレクトリを「頻度」、つまり「頻度」と「最新性」の両方でランク付けします。「周波数」という用語は、Mozillaによって最初に作り出され、Firefox(リンク)で使用されました。


4

または、エイリアスを作成することもできます。以下を.bashrcや.aliasesのようなものに投げます

alias shortcut='cd ~/path/to/deep/deep/deep/directory/'

次に、そのファイルがsourcedであることを確認します。私のエイリアスは.bashrcにあります。これは、.bash_profileの次の行を使用してソースします。 source ~/.bashrc


2

便利なシンボリックリンクを追加することは、1つまたは2つの特別なディレクトリでは問題ありませんが、非常にすぐに管理が面倒になります。はるかに優れた解決策は、この目的のために、およびその他のシェル使用可能な環境変数CDPATH使用するbashことです。

CDPATHコロンで区切られた(のようなPATH)ディレクトリ名を探す場所のリストです。絶対パス名と相対パス名の両方を含めることができます。私は私のようなものに設定していexport CDPATH=".:..:$HOME/work/repos:$HOME/projects:<etc>"ます。

これでcd pdftools 、どこからでも入力できるようになり、に移動し~/projects/pdftoolsます。(シンボリックリンクを使用するcd ~/pdftoolsと、HOMEディレクトリにいなかった場合は入力する必要があります。)サブディレクトリにショートカットすることもできますcd pdftools/bin

..私の中のCDPATH私が入力できますcd sisterdir代わりにcd ../sisterdir、私はどこかで新しいディレクトリを作成するときに、期待できるとしてなど、CDPATH彼らは自動的によって発見されますcd新しいシンボリックリンクやエイリアスを作成する必要はありません- 。

この機能はbash_completion、たとえばDebianシステムで配布されたファイルを使用するとさらに便利になります。私のOS Xボックスには付属していなかったので、コピーを取得しましたが、正常に動作します。(とそれを取得brew、またはちょうどから手動でダウンロードしてくださいここに。)このファイルは、コマンドライン補完の強化を定義し、私が入力できるようにcd pdf<TAB>し、pdftoolsディレクトリが見つかりから展開されてどこかCDPATH


1

確かに:シンボリックリンクを作成する

ln -s /some/really/long/path/to/somewhere/ ~/shortcut
cd ~/shortcut


1

または、魚の殻をインストールしてみることもできます。

http://fishshell.com/

これはコマンドの優れた予測です。また、大文字と小文字を区別せずに大文字と小文字を区別せずに入力できます。

魚の欠点は、独自のスクリプト言語があり、bash互換ではないことです。


1

「cd」と入力してから、フォルダをFinderからターミナルにドラッグし、フルパスで貼り付けます。おそらくそれほどエレガントではないかもしれませんが、いくつかの保存済みのショートカットではなく、すべてのフォルダで機能しますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.