Tôi có thể rút ngắn việc gõ cần thiết để `cd` vào một số thư mục được biết rõ không


11

Tôi thấy mình mở một thiết bị đầu cuối và sau đó CD rất nhiều vào cùng một thư mục, đường dẫn của nó rất dài.

Điều này có nghĩa là tôi đang cd rất nhiều và sử dụng tab để tăng tốc mọi thứ lên rất nhiều.

CNTT sẽ là tuyệt vời nếu tôi có thể có một số loại liên kết đến thư mục này và sau đó chỉ cần cd đến đó để tôi sẽ được trong thư mục lồng sâu một cách nhanh chóng.

Điều này có thể không?


1
Tôi có một số tập lệnh (bash) thực hiện các tác vụ nhỏ (có liên quan) như cd'ing vào một dự án github và đang chạy git status. Tôi cũng có một số bí danh trong tôi .bash_profile. Không chính xác những gì bạn đang yêu cầu, nhưng có liên quan.
keyer

Câu trả lời:


24

Đây là cách để đối phó với các đường dẫn phức tạp đến cdthường xuyên.

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

điều này sẽ tạo ra liên kết tượng trưng

~/Links/there

Để sử dụng Linksthư mục mới này một cách hiệu quả, nếu shell đăng nhập của bạn bash chỉ cần bao gồm lệnh này trong ~/.profile(được sử dụng bởi tất cả các shell kiểu Bourne bash, kshthì, zsh):

CDPATH=~/Links:.
export CDPATH

Điều này có nghĩa là với mọi cd, trình bao của bạn sẽ tìm trong 2 thư mục để tìm tên địa phương:

~/Links
.

Bạn sẽ không cần phải khởi động lại phiên để kiểm tra nó, chỉ cần chạy:

. ~/.profile

có nghĩa là chỉ cần đọc của tôi ~/.profile. (Bạn sẽ không phải đặt nó vào ~/.bashrcvì bạn không cần phải lặp lại cùng một khởi tạo biến khi bạn không thay đổi nó.)

Khi bạn đã kiểm tra nó, bạn sẽ có thể khởi động lại phiên của mình;).

Từ giờ trở đi, mọi lúc bạn muốn đến therebạn sẽ phải gõ:

cd there

Đây là giải pháp chung thanh lịch nhất mà tôi từng thấy. Tôi thường làm bí danh cho các điểm đến phổ biến (như răng cưa cdorađể cd $ORACLE_HOMEvà như vậy ...)
bmike

Bất cứ ai cũng có thể quan tâm bởi một tương đương đơn giản thông qua giao diện Finder?
dan

11

Xác định bí danh là một cách rất dễ dàng để viết tắt ngắn cho lệnh dài hơn. Khi bạn có quyền bí danh của mình, bạn có thể tạo một phần trong tệp .bashrc (hoặc tệp khởi động khác) để bạn không phải nhập lại các bí danh này cho mỗi trình bao mới bạn bắt đầu:

trong .bashrc:

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

Vân vân.

Đăng xuất và quay lại (hoặc chỉ chạy . ~/.bashrc) và bây giờ bạn có thể chỉ cần gõ httpdlogvà nó thực hiện cd. Hoặc ws4và nó thực sự thực hiện lệnh ssh, v.v.

Điều này loại bỏ sự cần thiết phải tạo (một lượng lớn) các liên kết trống sẽ khiến thư mục chính của bạn trông giống như một mớ hỗn độn.


10

Hãy thử sử dụng autojump hoặc z .

Sau khi cài đặt một trong hai, bạn chỉ cần cdxung quanh như bình thường và họ tìm hiểu các thư mục được truy cập nhiều nhất của bạn và cho phép bạn truy cập chúng bằng cách chỉ nhập một phần của đường dẫn:

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

Tôi thích z của hai.


không biết về autojump nhưng tập lệnh 'z'!
Kris

7

Tôi đánh giá cao fasd tương tự như autojump và z nhưng IMHO tốt hơn. Từ trang web:

Fasd (phát âm tương tự như "nhanh") là một công cụ tăng năng suất dòng lệnh. Fasd cung cấp quyền truy cập nhanh vào các tệp và thư mục cho shell POSIX. Nó được lấy cảm hứng từ các công cụ như autojump, z và v. Fasd theo dõi các tệp và thư mục bạn đã truy cập, để bạn có thể nhanh chóng tham chiếu chúng trong dòng lệnh.

Tên fasd xuất phát từ các bí danh được đề xuất mặc định f (tệp), a (tệp / thư mục), s (hiển thị / tìm kiếm / chọn), d (thư mục).

Fasd xếp hạng các tệp và thư mục theo "frecency", nghĩa là theo cả "tần số" và "lần truy cập". Thuật ngữ "frecency" lần đầu tiên được đặt ra bởi Mozilla và được sử dụng trong Firefox (liên kết).


4

Hoặc bạn có thể tạo một bí danh. Ném những thứ sau vào một cái gì đó như .bashrc hoặc .aliases

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

Sau đó, đảm bảo rằng bất kỳ tập tin nào trong đó là sourced. Các bí danh của tôi nằm trong .bashrc, mà tôi lấy nguồn với dòng này trong .bash_profile: source ~/.bashrc


2

Thêm liên kết tiện lợi là tốt cho một hoặc hai thư mục đặc biệt, nhưng rất nhanh nó sẽ gây khó khăn cho việc quản lý. Một giải pháp tốt hơn nhiều là sử dụng biến môi trường CDPATH, có sẵn bashvà các shell khác cho mục đích này.

CDPATHlà một danh sách được phân tách bằng dấu hai chấm (như PATH) các địa điểm để tìm tên thư mục. Nó có thể chứa cả tên đường dẫn tuyệt đối và tương đối. Tôi có của tôi thiết lập một cái gì đó như export CDPATH=".:..:$HOME/work/repos:$HOME/projects:<etc>".

Với thiết lập này, tôi có thể gõ cd pdftools từ bất cứ đâu và nó sẽ đưa tôi đến ~/projects/pdftools. (Với một liên kết tượng trưng, ​​tôi sẽ phải gõ cd ~/pdftoolsnếu tôi không có trong thư mục HOME của mình.) Tôi cũng có thể tắt các thư mục con : cd pdftools/bin.

Cái ..trong tôi CDPATHcho phép tôi gõ cd sisterdirthay vì cd ../sisterdir, v.v. Như bạn có thể mong đợi, khi tôi tạo thư mục mới ở bất cứ đâu trong CDPATHchúng sẽ tự động được tìm thấy bởi cd- không cần phải tạo liên kết tượng trưng hoặc bí danh mới.

Tính năng này thậm chí còn đẹp hơn nếu bạn sử dụng bash_completiontệp được phân phối, ví dụ: với các hệ thống Debian. Nó không đi kèm với hộp OS X của tôi, vì vậy tôi đã lấy một bản sao và nó hoạt động tốt. (Nhận nó với brew, hoặc chỉ tải xuống thủ công từ đây .) Tệp này xác định các cải tiến để hoàn thành dòng lệnh, để tôi có thể nhập cd pdf<TAB>pdftoolsthư mục được tìm thấy và mở rộng từ bất cứ đâu trên đó CDPATH.


1

Chắc chắn: Tạo một liên kết tượng trưng

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


1

Ngoài ra, bạn cũng có thể thử cài đặt vỏ cá.

http://fishshell.com/

Điều này có dự đoán tuyệt vời cho các lệnh. Nó cũng thông minh cho phép bạn gõ trường hợp không nhạy cảm mà không có bất kỳ sai lầm nào.

Nhược điểm của cá là nó có ngôn ngữ kịch bản riêng và chúng không tương thích với bash.


1

Tất cả những gì tôi làm là gõ "cd" và sau đó kéo thư mục từ Finder vào Terminal sẽ dán trong đường dẫn đầy đủ. Có lẽ không hoàn toàn thanh lịch, nhưng hoạt động cho tất cả các thư mục so với một vài phím tắt được cài sẵn?

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.