Cắt ngắn để chuyển sang một thư mục nhất định


12

Trong thiết bị đầu cuối Ubuntu, tôi thấy mình dành thời gian đáng kể để chuyển sang một thư mục cụ thể mỗi khi máy tính khởi động. Có một số cách tôi có thể làm cho quá trình này dễ dàng hơn? Có một số phím nóng hoặc một số thay đổi thư mục nhanh mà tôi có thể sử dụng (như quay số nhanh trên điện thoại) không?

 eg:
    cd 1:Changes to saved directory one

Bốn năm kể từ khi câu hỏi này được hỏi và không ai đề cập đến CDPATH cho đến ngày hôm nay. :(
kojiro

Tôi cho rằng điều này có thể phụ thuộc vào bảng điều khiển của bạn, nhưng trong thiết bị đầu cuối Kubfox có một menu Bookmarks nơi tôi có thể chỉ cần đánh dấu một thư mục và nhảy theo cách đó!
Pixel

Câu trả lời:


12

Có hai lựa chọn:

  1. Nếu bạn muốn ở trong một thư mục cụ thể mỗi khi bạn mở một bash terminal, hãy chỉnh sửa ~/.bashrctệp của bạn và chỉ cần thêm dòng cd Directorychẳng hạn cd ~/Desktop.

  2. Nếu bạn muốn có một vài lần rút gọn, bạn luôn có thể sử dụng các biến toàn cục mà bạn có thể đặt trong ~/.bashrctệp của mình như sau export a=/tmpvà sau đó bạn có thể thực hiện điều cd $ađó sẽ đưa bạn đến /tmp.

Hãy nhớ rằng sau khi chỉnh sửa .bashrctệp của bạn, bạn phải khởi động lại thiết bị đầu cuối hoặc mở một cái mới.


3
Để tránh khởi động lại thiết bị đầu cuối, bạn có thể sử dụng source ~/.bashrchoặc, ngắn hơn , . ~/.bashrc.
Burger Gerhard

18

Cũng có một cái nhìn autojump, nó xây dựng một cơ sở dữ liệu với các thư mục được truy cập trước đó và sau đó bạn có thể chuyển đến nó. Vì vậy, ví dụ bạn có

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

sau đó nếu bạn đã truy cập nó một khi bạn có thể nhảy đến nó

j workstuff

hoặc thậm chí

j stuff

bởi vì nó cũng hoạt động với một phần phù hợp. Nếu có nhiều thư mục khớp với bạn, bạn sẽ chuyển đến thư mục được truy cập nhiều nhất, nếu đây không phải là thư mục bạn muốn, thì hãy lặp lại lệnh để chuyển đến thư mục thứ hai.

Tuy nhiên, nó trở nên tốt hơn! Nếu bạn cũng có thư mục

/home/user/stuff

và bạn làm

j stuff 

và sau đó TabTabTabbạn nhận được (theo thứ tự truy cập nhiều nhất)

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

và sau đó bạn có thể chỉ cần nhấn số của thư mục bạn muốn!

Để cài đặt, bạn chỉ cần sử dụng sudo apt-get install autojumpvà sau đó bạn cần thêm

source /usr/share/autojump/autojump.bash

để của bạn ~/.bashrc.

Thêm thông tin tại đây: https://github.com/wting/autojump (cũng hướng dẫn cách cài đặt phần mềm này từ src giúp bạn có phiên bản mới nhất)


1
crtl + r trong một thiết bị đầu cuối cũng tìm kiếm "khớp một phần" trong các lệnh trước đó. Thực sự tiện dụng là tốt.
Dan

6

Các bí danh Bash rất hữu ích cho việc tạo các phím tắt để chạy các lệnh thường.

  • Trong ~/.bashrc, thêm một dòng tương tự như sau để tạo bí danh:

    alias jump1='cd /long/path/name/that/is/frequently/used'
    
  • Đóng và mở thiết bị đầu cuối một lần nữa, hoặc chạy source ~/.bashrc.

  • Từ bây giờ, bạn chỉ có thể chạy jump1để thực hiện cdlệnh dài đó .

Xem thêm:


4

Mặc dù đã có một số câu trả lời hay, tôi nghĩ tôi đã đề cập đến tính đầy đủ của các bản dựng cũ pushdpopdBash cho phép bạn di chuyển rất nhanh giữa các thư mục trong các đường dẫn sâu trong hệ thống tệp của bạn. Ngược lại với các autojumpdấu trang được đề cập bởi burger.ga , ngăn xếp thư mục được tạo bằng cách sử dụng pushdchỉ là tạm thời.

Như GNU ghi chú thủ công , pushdpopdđang Bash builtins sử dụng để xây dựng một chồng thư mục tạm thời mà là một

danh sách các thư mục được truy cập gần đây. Pushd buildin thêm các thư mục vào ngăn xếp khi nó thay đổi thư mục hiện tại và nội dung popd sẽ xóa các thư mục được chỉ định khỏi ngăn xếp và thay đổi thư mục hiện tại vào thư mục bị xóa. Các dir được dựng sẵn hiển thị nội dung của ngăn xếp thư mục.

Phải mất một chút để làm quen, nhưng có rất nhiều hướng dẫn hữu ích trên blog này và trang web này chẳng hạn. Không có các trang riêng cho các lệnh, vì chúng được bao gồm trong trang của Bash, nhưng để tham khảo nhanh, bạn có thể xem trang GNU Bash .

Giải thích rõ ràng nhất là trong bài viết rất hữu ích này và chính xác là cách tôi sử dụng pushdpopd:

Đầu tiên, sử dụng dirshoặc dirs -lđể liệt kê các thư mục trên ngăn xếp và dirs -cđể xóa ngăn xếp.

Theo một nghĩa nào đó, bạn đánh dấu vị trí mà bạn muốn quay lại bằng cách nhập

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

và sau đó bạn có thể thêm nhiều thư mục vào ngăn xếp, do đó bạn nhận được một danh sách thư mục như bên dưới, bao gồm 3 thư mục được chỉ định và ~thư mục nhà của bạn :

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

Bạn thực sự không cần phải sử dụng popdngay lập tức vì nó sẽ loại bỏ các thư mục khỏi ngăn xếp; điều tốt nhất để làm là sử dụng pushdđể xoay ngăn xếp, để bạn có thể tiếp tục chuyển đổi giữa các thư mục và đặt hàng chúng theo ý muốn. Để biết thêm về xoay vòng ngăn xếp hữu ích đó, xem trang man Bash .

Nếu bạn có chính xác cách sắp xếp ngăn xếp như dirsdanh sách trên hiển thị, hãy pushd +3chuyển bạn sang thư mục Ảnh cụ thể và đặt vị trí trên cùng của ngăn xếp (đó là +3 chứ không phải +4 vì bạn không đếm số ~trong ngăn xếp thư mục):

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

Vì vậy, lời nhắc đọc,

~/Pictures/Canon/2012_07_01$

Bạn có thể tiếp tục làm điều này mà không xóa chúng khỏi ngăn xếp, mặc dù bất kỳ thư mục nào bạn cd, ngoại trừ những thư mục được thêm vào ngăn xếp thư mục pushd, sẽ thay đổi ngăn xếp thư mục của bạn.

Khi bạn đã sắp xếp ngăn xếp thư mục theo thứ tự bạn muốn, bạn có thể sử dụng popdđể nhanh chóng quay vòng qua các thư mục và sau đó quay lại thư mục chính; ví dụ: từ Pictureschúng ta có thể quay lại Downloads:

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

và lời nhắc đọc

~/Downloads/folder/interest$

Nói chung, cái hay của việc này là bạn có thể thiết lập ngăn xếp thư mục và thứ tự các mục trong đó pushdvà sau đó, giả sử bạn có ba tệp để chỉnh sửa trong mỗi thư mục đó, bạn có thể trả lại ngay lập tức cho từng thư mục trong popdkhi xóa chúng từ ngăn xếp thư mục. Sau đó, cuối cùng popdbạn sẽ trở lại ~. Nó trở nên đặc biệt hữu ích khi bạn có các thư mục đặc biệt sâu và có thể sử dụng nó để thiết lập ngăn xếp thư mục để nhanh chóng di chuyển giữa chúng.

Ngoài ra, câu hỏi này chứa một số mẹo mà bạn có thể thấy hữu ích khi làm việc trên dòng lệnh:


2

Mặc dù tồn tại một số cách dòng lệnh để làm điều đó nhanh hơn, nhưng tôi sẽ giới thiệu cá nhân và sử dụng tiện ích mở rộng Nautilus được gọi nautilus-open-terminal.

Đầu tiên cài đặt gói nautilus-open-terminalvà đánh dấu các thư mục yêu thích của bạn với Nautilus. Trên Nautilus 3.6. *, Bạn sẽ phải vào menu bánh răng và chọn Đánh dấu vị trí này .

nhập mô tả hình ảnh ở đây

Sau đó sử dụng dấu trang Nautilus để đi nhanh hơn trong các thư mục yêu thích của bạn và chỉ cần nhấp chuột phải vào một khoảng trống và chọn Mở trong Terminal .

nhập mô tả hình ảnh ở đây

Bây giờ bạn có thể có cả dòng lệnh và trình quản lý tệp truy cập nhanh vào các thư mục yêu thích của bạn.


Người đăng ban đầu đang cố gắng làm việc từ thiết bị đầu cuối và thường làm việc nhanh hơn từ thiết bị đầu cuối.
haziz

1
@haziz: Có, nhưng câu hỏi và câu trả lời của AskUbfox không chỉ hữu ích cho OP mà còn đặc biệt cho tất cả những người tìm thấy điều này trên web. Đây là một câu trả lời có giá trị cho tôi.
Javier Rivera

2

Anc được thiết kế chính xác cho trường hợp sử dụng đó.

https://github.com/tobplesch/anc

Đây là một đoạn trích từ 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]

Tiết lộ đầy đủ: Tôi là tác giả của anc.


1

Bạn có thể đặt bí danh trong tệp .bashrc của mình (hoặc tệp cấu hình cho shell yêu thích của bạn - chúng thường nằm trong thư mục chính của bạn):

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

Một liên kết thông tin hữu ích về việc sử dụng bí danh trong bash có ở đây .


1

Tôi đã tạo một tập hợp hàm bash cho cái này và thêm nó vào .bash_profile của tôi

Kịch bản

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
}

Sử dụng

getFolders

Sử dụng getFolders bạn có một danh sách tốc ký, mô tả và vị trí cho mỗi thư mục. Khi bạn sử dụng getFolders với tốc ký, nó sẽ xuất vị trí thư mục. Bạn có thể nhận được một danh sách các thư mục có sẵn và các mô tả của chúng bằng cách gọi getFolders mà không cần một tham số

Ví dụ về việc nhận đường dẫn thư mục

getFolders alias

đầu ra

/path/to/alias/folder

Ví dụ về việc nhận các thư mục có sẵn.

getFolders

đầu ra

alias
- Description of alias
alias2
- Description of alias2

bạn gái

gf là một phím tắt cho getFolders

gf alias2

đầu ra

/path/to/alias2/folder

đi đến

goto là một cách đơn giản để cd vào thư mục đã chọn.

goto alias

đầu ra

cd đã chạy trên thư mục / path / to / alias /

/ đường dẫn / đến / bí danh / thư mục>

Tại sao có nhiều chức năng

Tại trung tâm Unix và Linux, bạn có các chức năng tái sử dụng đơn giản có thể được kết nối với nhau. Tôi thích phương pháp này vì nó không chỉ đưa bạn đến một vị trí đã chọn mà là một chức năng mà bí danh trả về một đường dẫn. Bạn có thể sử dụng chức năng này để làm bất cứ điều gì từ điểm đó như cd đến đường dẫn đó.


0

Xem xét việc đặt CDPATHbiến môi trường trong .bashrc hoặc .bash_profile của bạn. CDPATH có dạng phân cách bằng dấu hai chấm PATHgiống như các biến giống như khác và cho phép cdđi tắt trong tìm thư mục của bạn. Ví dụ:

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

0

bạn có thể thiết lập lối tắt của riêng bạn đến một thư mục cụ thể. Ví dụ: bạn muốn vào thư mục lồng nhau, nói chung bạn làm

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

bạn thường sử dụng lệnh cd và sau đó nhập tất cả các tên thư mục hoặc có thể bạn bỏ qua việc gõ (sử dụng nút TAB) nhưng vẫn mất vài phút.

Vì vậy, để tiết kiệm thời gian của bạn, bạn có thể tạo một bí danh của nó trong thiết bị đầu cuối. Nhiệm vụ một lần của nó để thiết lập bí danh.

bí danh dir-target = '/ home / dir-1 / dir-2 / dir3 / dir4 / dir5 / dir6 / dir-target'

Bây giờ, bạn chỉ cần sử dụng tên bí danh ( dir-target ) để di chuyển vào thư mục đích của bạn.


0

Cách nhanh nhất tôi tìm thấy là xd, một chương trình "Thư mục eXchange" được viết bởi một người Hà Lan tên Frank B. Brokken.

Nó hoạt động bằng cách tìm tất cả các đường dẫn trên hệ thống tệp của bạn có thể phân giải thành chữ viết tắt mà bạn đã nhập, ví dụ: ulbcó thể đại diện cho /usr/local/binnếu thư mục đó tồn tại hệ thống của bạn:

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

Khi nhấn 2 bạn đang ở /usr/local/bin.

Đây là phần mềm thực sự cũ và không còn khả dụng ở vị trí ban đầu, không liên hệ với tác giả, vì vậy để tránh bị mất, tôi đã đặt nó vào repo của Github:

https://github.com/mrkafk/exchange_directories


-1

Tôi sử dụng DirB (Directory Bookmarks) để làm điều này. Rất đẹp! http://www.linuxjournal.com/article/10585

Tôi đã sửa đổi của tôi cho phù hợp với sở thích của tôi và mặc dù dễ sử dụng và rõ ràng hơn.


Chào mừng bạn đến hỏi Ubuntu! Trong khi điều này về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây, và cung cấp liên kết để tham khảo.
fossfreedom
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.