Làm thế nào để bạn cd vào thư mục có sẵn đầu tiên mà không cần gõ tên?


30

Gần đây tôi đã ở trong tình trạng khó khăn khi tôi ở trong một thư mục và tôi muốn cdđến một thư mục thư mục con. Chỉ có một thư mục, bên trong thư mục này và đó là một cái tên thực sự dài.

Home (I am here)
 |
 |
  --> /reallylongnamefolder

Có cách nào đi vào thư mục đó thay vì gõ ra:

 cd reallylongnamefolder

1
nhiều cách: cd */hoặc cd rea*/nếu không chắc chắn chỉ có 1 subir mọi lúc (nếu sử dụng bash, bạn cũng có thể cd rea[TAB].. trong các shell khác nhưng cách mở rộng tên có thể khác nhau). Nếu "/ reallylongnamefolder" là một đường dẫn tuyệt đối, điều tương tự, nhưng với '/' ở phía trước, ví dụ:cd /rea*/
Olivier Dulac

Câu trả lời:


38

Tôi sẽ khuyên bạn nên gõ vài chữ cái đầu tiên và nhấn tab. Bash có tính năng tự động hoàn thành thực sự hữu ích. Nếu nó chỉ là thư mục trong đường dẫn hiện tại, chỉ cần nhấn tabsẽ điền vào toàn bộ thư mục.

Nhập cdvà nhấn tabhai lần sẽ hiển thị tất cả các tùy chọn trong thư mục hiện tại.

tab nói chung là thực sự hữu ích trong bash vì bạn có thể truy cập gần như tất cả các tệp thực thi tại một hoặc hai lần nhấn.

cd *như đề xuất ở trên chỉ hoạt động nếu thư mục đầu tiên trong danh sách và không bị ẩn. Nếu có tệp theo thứ tự abc trước thư mục của bạn thì điều này cdsẽ không thay đổi thư mục của bạn cả.


15
Thậm chí bạn không cần phải nhập bất kỳ chữ cái nào, nếu chỉ có một thư mục hiện tại: cd <tab>sẽ đủ thông minh.
amalloy

1
Hoạt động trong Windows là tốt. (dành cho những người đến từ google ..)
Koray Tugay

16

Tôi nghĩ rằng tôi thực sự đã tìm ra nó thực sự

cd * 
cd */

Nhưng tôi đã không kiểm tra nó nếu có nhiều tệp và một thư mục!


Như @Rinzwind đã đề cập trong các bình luận!

Giả sử bạn có ba thư mục dài:

 /thisislongfolder1
 /thisislongfolder2
 /thisislongfolder3

Nếu bạn gõ chữ cái đầu tiên của tệp, sau đó nhấn tabnó sẽ tự động điền tên tệp! NHỮNG THỨ ĐIÊN RỒ!

Vì vậy, trong ví dụ trên, bạn có thể gõ: t tabvà nó sẽ tự động hoàn thành càng nhiều càng tốt: cd thisislongfolder(sau đó tự nhập số).

Hoặc bạn có thể làm cd t*1sẽ đưa bạn vàothisislongfolder1

Cảm ơn Rinzwind!


6
first_letter_or_some_letters cd và sau đó {tab} là dễ nhất (cũng giải quyết được vấn đề của bạn trong nhiều thư mục. Bạn có thể thư thậm chí trộn với hơn 1 tab và chữ. Hệ thống tự động hoàn tất sẽ như xa như nó có thể. Bạn cũng có thể làm cd r*rvà hy vọng nó là thư mục duy nhất bắt đầu và kết thúc với r.
Rinzwind

@Rinzwind wow! Tôi không biết điều đó! cảm ơn!
Arian Faurtosh

Hãy thử nó. Thêm kết quả của bạn vào câu trả lời của bạn và có thể bạn sẽ nhận được một số danh tiếng cho nó ;-)
Rinzwind

4
cd */có thể thực hiện mánh khóe
gniourf_gniourf

3
cd *có lẽ thất bại thường xuyên hơn nó thành công.
David Richerby

14
cd $(ls -d */|head -n 1)

ls -d */liệt kê các thư mục, head -n 1đưa ra cái đầu tiên trong danh sách này.


Vâng và bạn sẽ gõ ... Tôi thà đi tab-tab và tìm tên hơn là gõ cái này. Đó là chính xác 100%, câu trả lời tốt đẹp!
tomsmeding

1
@tomsmeding Nếu bạn đang viết một tập lệnh cần đến cdthư mục đầu tiên, bạn không thể thực hiện các tab.
dùng12205

-n 1 hiển thị 1 tệp cuối cùng của tệp. Nếu bạn muốn sử dụng cái này cho một thứ tự biến, bạn có thể sử dụng: cd $ (ls -d -1 * / | sed -n '4p') để mở thư mục thứ 4 trong một thư mục. Thêm nó vào bí danh có thể làm cho bạn nhanh hơn với điều hướng thư mục.
Ivan Ivković

2

Tôi có một thiết lập tuyệt vời cho việc này, nó cho phép tôi không chỉ cd vào ~ / somereallylongprintername mà còn cd ở đó ngay cả khi tôi đang ở trong thư mục /

điều đầu tiên tôi sử dụng là zsh với oh-my-zsh, điều này cũng sẽ cho phép bạn cd mà không phải lo lắng về trường hợp hoặc thậm chí không cần gõ cd

  1. cài đặt git và zsh
sudo apt-get install zsh git
  1. cài đặt Oh My ZSH

cuộn tròn -L http://install.ohmyz.sh | sh

  1. Thay đổi shell mặc định thành ZSH
chsh -s /bin/zsh

mở và chỉnh sửa .zshrc của bạn nằm trong thư mục nhà của bạn chứ không phải nó bị ẩn

nano ~ / .zshrc

sau đó thêm dòng sau vào dưới cùng của tập tin export CDPATH=$CDPATH:/:/home/$USER/:/media/$USER/

Nếu bạn thích chủ đề của tôi, bạn cũng có thể thay đổi dòng #ZSH_THEME="robbyrussell"thànhZSH_THEME="pygmalion"

Lưu và đóng tệp sau đó khởi động lại tức là. đóng và mở lại vỏ hoặc chỉ cần mở một tab mới và thử nó

không phải bạn có thể sử dụng phím tab để hoàn thành tên và trong ZSH, bạn thậm chí không cần phải có trường hợp đúng, bạn có thể nhập docu và nhấn tab và nó sẽ biến nó thành ~ / Tài liệu

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


0

Bạn có thể thay đổi thư mục theo số inode.
đầu tiên chúng ta tìm thấy inode với ls -il.
sau đó

cd $(find -inum directory_inode_number)

0

Nếu bạn cần thực hiện nó trong một tập lệnh hoặc để hỗ trợ các thư mục có tên không thể thay đổi:

cd $(python -c $'import os\nfor entry in os.listdir(b"."):\n if os.path.isdir(entry):\n  os.write(1, entry);break\nelse: os.write(1, b".")')

Nó hoạt động nếu có các tệp trong thư mục, bất kể thứ tự sắp xếp của chúng liên quan đến thư mục.
Nó hoạt động cho các thư mục ẩn khi cd */thất bại.
Nó hoạt động nếu tên không thể biểu thị trong ngôn ngữ hiện tại khi lschỉ in ??thay vì tên.


0

Mở rộng câu trả lời của ace:

cd $(ls -d -1 */ |sed -n '1p')

để mở thư mục thứ 1 trong một thư mục. '1p' có thể được thay đổi thành '2p' cho thư mục thứ hai.

ls -d -1 -la */

để chỉ liệt kê các thư mục từ một thư mục cha.

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.