特定のディレクトリに切り替えるためのショートカット


12

Ubuntuターミナルでは、コンピューターが起動するたびに特定のディレクトリに切り替えるのにかなりの時間を費やしています。このプロセスを簡単にする方法はありますか?使用できるホットキーやクイックディレクトリ変更(電話の短縮ダイヤルなど)はありますか?

 eg:
    cd 1:Changes to saved directory one

この質問が出されてから4年が経ち、今日まで誰もCDPATHに言及していませんでした。:(
小次郎

私はこれがあなたのコンソールに依存するかもしれないと思いますが、Kubuntu端末にはブックマークメニューがあり、そこでディレクトリをブックマークしてジャンプすることができます!
ピクセル

回答:


12

次の2つのオプションがあります。

  1. bashターミナルを開くたびに特定のディレクトリに移動する場合は、~/.bashrcファイルを編集してcd Directory、たとえば、行を追加するだけcd ~/Desktopです。

  2. 複数のショートカットが必要な場合は、いつでもグローバル変数を使用できます。グローバル変数は、~/.bashrc次のようにファイルに設定export a=/tmpできcd $aます/tmp

.bashrcファイルを編集した後、ターミナルを再起動するか、新しいターミナルを開く必要があることに注意してください。


3
ターミナルの再起動を回避するには、を使用するsource ~/.bashrcか、短くしてください. ~/.bashrc
ゲルハルトバーガー

18

また、を見てautojump、以前にアクセスしたディレクトリを使用してデータベースを構築し、そこにジャンプできます。だから例えば

/home/user/this/long/and/annoyingly/deep/directory/workstuff

一度訪れたら、次の方法でジャンプできます

j workstuff

あるいは

j stuff

部分一致でも機能するためです。複数のディレクトリが一致する場合、最も訪問されたディレクトリにジャンプし、これが目的のディレクトリではない場合は、コマンドを繰り返して2番目のディレクトリに移動します。

しかし、それは良くなります!ディレクトリも持っている場合

/home/user/stuff

あなたがやる

j stuff 

そして、TabTabTabあなたは(最も訪問された順に)得る

$ j stuff__
stuff__1__/home/user/this/long/and/annoyingly/deep/directory/workstuff
stuff__2__/home/user/stuff

そして、あなたはちょうどあなたが望むディレクトリの番号を押すことができます!

インストールするには、使用するだけでsudo apt-get install autojump、追加する必要があります

source /usr/share/autojump/autojump.bash

あなたの~/.bashrc

詳細はこちら:https : //github.com/wting/autojump(また、srcからこれをインストールする方法についての説明もあり、最新バージョンを入手できます)


1
端末のcrtl + rは、以前のコマンドで「部分一致」も検索します。本当に便利です。
ダン

6

Bash エイリアスは、一般的にコマンドを実行するためのショートカットを作成するのに役立ちます。

  • ~/.bashrc、次のような行を追加してエイリアスを作成します。

    alias jump1='cd /long/path/name/that/is/frequently/used'
    
  • ターミナルを閉じて再度開くか、を実行しsource ~/.bashrcます。

  • これからは、jump1実行してその長いcdコマンドを実行できます。

こちらもご覧ください:


4

すでにいくつかの良い答えがありますが、ファイルシステムの深いパスにあるディレクトリ間を非常に迅速に移動できるようにするために、古いビルトインpushdpopdBashビルトインの完全性について言及したいと思いました。burger.gaautojump言及されているブックマークとは対照的に、使用して作成されるディレクトリスタックは一時的なものです。pushd

GNU マニュアルにあるようにpushdおよびpopdは、一時ディレクトリスタックを構築するために使用されるBashビルトインです。

最近訪れたディレクトリのリスト。pushdビルトインは、現在のディレクトリを変更するときにスタックにディレクトリを追加し、popdビルトインは、スタックから指定されたディレクトリを削除し、現在のディレクトリを削除されたディレクトリに変更します。dirsビルトインは、ディレクトリスタックの内容を表示します。

慣れるまで少し時間がかかりますが、このブログこのサイトには、役に立つチュートリアルがたくさんあります。Bashのマンページに含まれているため、コマンド用の個別のマンページはありませんが、クイックリファレンスについては、GNU Bashページを表示できます。

明確な説明がしてあり、この非常に有用な製品と正確に私が使用する方法であるpushdpopd

まず、dirsまたはdirs -lを使用して、スタック上のディレクトリをリストし、スタックdirs -cをクリアします。

ある意味では、あなたが入力することにより、戻りたい場所をブックマークします

pushd /home/mike/Pictures/Canon/2012_07_01

そして、スタックにさらにディレクトリを追加できるので、次のようなディレクトリリストが表示されます。これには、3つの指定フォルダと~ホームフォルダが含まれます。

dirs
~/Downloads/folder/interest ~/Music/artist/album ~ ~/Pictures/Canon/2012_07_01

実際にはpopd、スタックからディレクトリを削除するため、すぐに使用する必要はありません。最善の方法はpushd、スタックの回転に使用することです。これにより、ディレクトリを切り替えて、必要に応じて順序を変更できます。この便利なスタックローテーションの詳細については、Bashのマンページを参照してください。

上記のdirsリストに示すようにスタックの配置が正確な場合pushd +3、特定のピクチャフォルダーに切り替えてスタックの一番上に配置します(~ディレクトリスタックでカウントしないため、+ 4ではなく+3です)。

pushd +3
~/Pictures/Canon/2012_07_01 ~/Downloads/folder/interest ~/Music/artist/album ~

そのため、プロンプトは次のようになります。

~/Pictures/Canon/2012_07_01$

スタックからそれらを削除せずにこれを実行し続けることができますがcd、でディレクトリスタックに追加されたフォルダ以外のフォルダは、ディレクトリスタックをpushd変更します。

必要な順序でディレクトリスタックを配置したら、使用popdしてディレクトリをすばやく循環し、ホームフォルダーに戻ることができます。たとえば、次の場所Picturesに戻ることができますDownloads

popd
~/Downloads/folder/interest ~/Music/artist/album ~

プロンプトが表示されます

~/Downloads/folder/interest$

一般的に、この利点は、ディレクトリスタックとその中のアイテムの順序を設定し、pushdそれらの各ディレクトリで編集する3つのファイルがある場合、それらpopdを削除しながらすぐにそれぞれに戻ることができることですディレクトリスタックから。その後、あなたの最後でpopdあなたはに戻ります~。特に深いディレクトリがあり、それを使用してディレクトリスタックをセットアップし、ディレクトリ間をすばやく移動できる場合に特に役立ちます。

さらに、この質問には、コマンドラインで作業するときに役立つと思われるいくつかのヒントが含まれています。


2

より高速に実行するためのコマンドラインの方法がいくつかありますが、私はNautilusと呼ばれる拡張機能を使用して個人的に推奨しnautilus-open-terminalます。

まずパッケージnautilus-open-terminalをインストールし、お気に入りのフォルダーをNautilusでブックマークします。Nautilus 3.6。*では、ギアメニューに移動して[ この場所をブックマーク ]を選択する必要があります。

ここに画像の説明を入力してください

次に、Nautilusブックマークを使用して、お気に入りのディレクトリをより速く移動し、空のスペースを右クリックして、[ ターミナルで開く ]を選択します。

ここに画像の説明を入力してください

これで、コマンドラインとファイルマネージャーの両方からお気に入りのディレクトリにすばやくアクセスできます。


元のポスターは端末から作業しようとしていますが、多くの場合、端末から作業する方が迅速です。
haziz

1
@haziz:はい。ただし、AskUbuntuの質問と回答は、OPだけでなく、特にWebでこれを見つけたすべての人にとって有用です。これは私にとって貴重な答えです。
ハビエルリベラ

2

ancは、そのユースケースに合わせて設計されました。

https://github.com/tobimensch/anc

README.mdからの抜粋を次に示します。

# make the current directory the default anchor:
$ anc s

# go to /etc, then /, then /usr/local and then back to the default anchor:
$ cd /etc; cd ..; cd usr/local; anc

# go back to /usr/local :
$ anc b

# add another anchor:
$ anc a $HOME/test

# view the list of anchors (the default one has the asterisk):
$ anc l
(0) /path/to/first/anchor *
(1) /home/usr/test

# jump to the anchor we just added:
# by using its anchor number
$ anc 1
# or by jumping to the last anchor in the list
$ anc -1

# add multiple anchors:
$ anc a $HOME/projects/first $HOME/projects/second $HOME/documents/first

# use text matching to jump to $HOME/projects/first
$ anc pro fir

# use text matching to jump to $HOME/documents/first
$ anc doc fir

# add anchor and jump to it using an absolute path
$ anc /etc
# is the same as
$ anc a /etc; anc -1

# add anchor and jump to it using a relative path
$ anc ./X11 #note that "./" is required for relative paths
# is the same as
$ anc a X11; anc -1

# using wildcards you can add many anchors at once
$ anc a $HOME/projects/*

# use shell completion to see a list of matching anchors
# and select the one you want to jump to directly
$ anc pro[TAB]

完全な開示:私はancの著者です。


1

.bashrcファイル(またはお気に入りのシェルの構成ファイル。通常はホームディレクトリにあります)にエイリアスを配置できます。

alias cd1="cd directory/directory/my_destination/"

bashでのエイリアスの使用に関する役立つ情報リンクはこちらです。


1

このためにbash関数のセットを作成し、それを.bash_profileに追加しました

脚本

goto(){
    cd $(getFolders $1)
}

gf(){
    getFolders $1
}

getFolders (){

    local folderList=(
     'alias'
     'Description of alias'
     '/path/to/alias/folder'
     'alias2'
     'Description of alias2'
     '/path/to/alias2/folder'
    )
    local moved="0"
    local count=0

    # Returns the path to the project
    while [ "${folderList[count]}" != "" ]
    do
        if [ "$1" == "${folderList[count]}" ]; then
            echo ${folderList[$(( $count + 2 ))]}
            moved="1"
        fi
        count=$(( $count + 3 ))
    done

    # Returns all project names
    if [ "$moved" != "1" ]; then
        count=0
        while [ "${folderList[count]}" != "" ]
        do
            echoc 6 ${folderList[count]}
            echo - ${folderList[count+1]}
            count=$(( $count + 3 ))
        done
    fi
}

使用法

getFolders

getFoldersを使用すると、各フォルダーの速記、説明、および場所のリストがあります。getFoldersを短縮形で使用すると、フォルダーの場所が出力されます。パラメーターなしでgetFoldersを呼び出すだけで、使用可能なフォルダーとその説明のリストを取得できます。

フォルダーパスの取得例

getFolders alias

出力

/path/to/alias/folder

使用可能なフォルダーを取得する例。

getFolders

出力

alias
- Description of alias
alias2
- Description of alias2

GF

gfはgetFoldersのショートカットです

gf alias2

出力

/path/to/alias2/folder

後藤

gotoは、選択したフォルダーにcdする簡単な方法です。

goto alias

出力

cdは/ path / to / alias / folderで実行されています

/ path / to / alias / folder>

複数の機能がある理由

UnixとLinuxの中心には、一緒に連鎖できる単純で再利用可能な関数があります。この方法は、選択した場所に移動するだけでなく、エイリアスによってパスを返す関数なので、この方法が好きです。この関数を使用して、cdのようなポイントからそのパスまで何でもできます。


0

.bashrcまたは.bash_profileでCDPATH環境変数を設定することを検討してください。CDPATHは、他のPATH変数のようにコロンで区切られた同じ形式を取り、cdディレクトリを見つける際にショートカットを使用できます。例えば:

$ mkdir -p /tmp/foo/bar/baz
$ CDPATH='/tmp/foo/bar'
$ cd baz
/tmp/foo/bar/baz

0

特定のディレクトリへの独自のショートカットを設定できます。たとえば、ネストされたディレクトリに移動する場合通常は

cd / home / dir-1 / dir-2 / dir3 / dir4 / dir5 / dir6 / dir-target

通常はcdコマンドを使用してからすべてのディレクトリ名を入力するか、(TABボタンを使用して)入力をスキップすることもできますが、それでも数分しかかかりません。

したがって、時間を節約するために、ターミナルでそのエイリアス作成できます。エイリアスを設定するための1回限りのタスク。

エイリアスdir-target = '/ home / dir-1 / dir-2 / dir3 / dir4 / dir5 / dir6 / dir-target'

さて、あなただけのために持って使用するエイリアス名(DIR-ターゲットをターゲットディレクトリに移動します)。


0

私が見つけた最も早い方法はxd、フランクB.ブロッケンという名前のオランダ人によって書かれた「eXchange Directories」プログラムです。

入力した略語に解決できるファイルシステム上のすべてのパスを検索することで機能します。たとえばulb/usr/local/binそのようなフォルダーがシステムに存在するかどうかを表すことができます。

% cx ulb
Multiple Solutions:
 1: /usr/lib/binfmt.d/
 2: /usr/local/bin/

2を押すとになります/usr/local/bin

それは本当に古いソフトウェアであり、元の場所では利用できなくなり、作者と連絡を取ることができません。

https://github.com/mrkafk/exchange_directories


-1

これを行うには、DirB(ディレクトリブックマーク)を使用します。非常に素晴らしい! http://www.linuxjournal.com/article/10585

私は私の好みに合うように私のものを修正しましたが、使いやすく、より明確になりました。


Ask Ubuntuへようこそ!これは理論的には質問に回答するかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
fossfreedom
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.