Bagaimana Anda masuk ke folder pertama yang tersedia tanpa mengetik nama?

30

Saya baru-baru ini dalam keadaan sulit di mana saya berada di dalam folder, dan saya ingin ke cdfolder sub direktori. Hanya ada satu folder, di dalam folder ini dan itu adalah nama yang sangat panjang.

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

Apakah ada cara untuk masuk ke folder itu daripada mengetik:

 cd reallylongnamefolder
Arian Faurtosh
sumber
1
banyak cara: cd */atau cd rea*/jika tidak yakin hanya ada 1 subdir setiap saat (jika menggunakan bash, Anda juga bisa cd rea[TAB].. di shell lain juga tetapi cara untuk memperluas nama mungkin berbeda). Jika "/ reallylongnamefolder" adalah jalur absolut, hal yang sama, tetapi dengan '/' di depan, misalnya:cd /rea*/
Olivier Dulac

Jawaban:

38

Saya akan menyarankan untuk mengetik beberapa huruf pertama dan menekan tab. Bash memiliki fitur pelengkapan otomatis yang sangat berguna. Jika hanya direktori di jalur saat ini, menekan saja tabakan mengisi seluruh direktori.

Mengetik cddan menekan tabdua kali akan menampilkan semua opsi di direktori saat ini.

tab umumnya sangat berguna dalam bash karena Anda dapat mengakses hampir semua file executable pada satu atau dua penekanan tombol.

cd *seperti yang disarankan di atas hanya berfungsi jika direktori pertama dalam daftar dan tidak disembunyikan. Jika ada file sesuai abjad sebelum direktori Anda, ini cdtidak akan mengubah direktori Anda sama sekali.

masozravapalma
sumber
15
Anda bahkan tidak perlu mengetikkan huruf apa pun, jika hanya ada satu direktori: cd <tab>cukup pintar.
amalloy
1
Berfungsi di Windows juga. (untuk orang-orang yang datang dari google ..)
Koray Tugay
16

Saya pikir saya benar-benar menemukan jawabannya

cd * 
cd */

Tapi saya belum mengujinya jika ada banyak file dan satu folder!


Seperti @Rinzwind disebutkan dalam komentar!

Katakanlah Anda memiliki tiga folder panjang:

 /thisislongfolder1
 /thisislongfolder2
 /thisislongfolder3

Jika Anda mengetik huruf pertama file tersebut, lalu tekan tabitu akan melengkapi nama file secara otomatis! STUFF GILA!

Jadi, dalam contoh di atas, Anda dapat mengetik: t tabdan itu akan melengkapi secara otomatis sebanyak mungkin: cd thisislongfolder(lalu ketikkan angkanya sendiri).

Atau yang bisa Anda lakukan cd t*1akan membawa Anda ke dalamnyathisislongfolder1

Rinzwind terima kasih!

Arian Faurtosh
sumber
6
cd first_letter_or_some_letters dan kemudian {tab} adalah yang termudah (juga menyelesaikan masalah Anda banyak folder. Anda bahkan dapat menggabungkan huruf dengan lebih dari 1 tab dan huruf. Sistem ini akan secara otomatis menyelesaikan sejauh mungkin. Anda juga dapat melakukan cd r*rdan harap itu satu-satunya folder yang diawali dan diakhiri dengan r.
Rinzwind
@Rinzwind wow! Saya tidak tahu itu! Terima kasih!
Arian Faurtosh
Cobalah. Tambahkan hasil Anda ke jawaban Anda dan Anda mungkin akan mendapatkan reputasi untuk hal itu ;-)
Rinzwind
4
cd */mungkin melakukan trik
gniourf_gniourf
3
cd *mungkin gagal lebih sering daripada berhasil.
David Richerby
14
cd $(ls -d */|head -n 1)

ls -d */daftar direktori, head -n 1berikan yang pertama dalam daftar ini.

pengguna12205
sumber
Ya dan Anda akan mengetik itu ... Saya lebih suka pergi tab-tab dan mencari nama daripada mengetik ini. Ini 100% benar, jawaban yang bagus!
mulai
1
@tommeding Jika Anda menulis skrip yang perlu ke cddirektori pertama, Anda tidak dapat melakukan tab.
user12205
-n 1 menunjukkan 1 file terakhir dari file tersebut. Jika Anda ingin menggunakan ini untuk urutan variabel, Anda dapat menggunakan: cd $ (ls -d -1 * / | sed -n '4p') untuk membuka folder ke-4 dalam direktori. Menambahkannya ke alias dapat membuat Anda lebih cepat dengan navigasi folder.
Ivan Ivković
2

Saya memiliki pengaturan yang bagus untuk ini, hal ini memungkinkan saya tidak hanya untuk cd ke ~ / suatu nama pengguna yang panjang tetapi juga cd ke sana bahkan ketika saya berada di folder /

hal pertama yang saya gunakan adalah zsh dengan oh-my-zsh ini juga akan memungkinkan Anda untuk cd tanpa harus khawatir tentang kasus atau bahkan tanpa mengetikkan cd

  1. instal git dan zsh
sudo apt-get install zsh git
  1. instal Oh My ZSH

curl -L http://install.ohmyz.sh | SH

  1. Ubah shell default menjadi ZSH
chsh -s /bin/zsh

buka dan edit .zshrc Anda yang terletak di folder beranda bukan disembunyikan

nano ~ / .zshrc

kemudian tambahkan baris berikut ke bagian bawah file export CDPATH=$CDPATH:/:/home/$USER/:/media/$USER/

Jika Anda menyukai tema saya, Anda juga dapat mengubah baris #ZSH_THEME="robbyrussell"keZSH_THEME="pygmalion"

Simpan dan tutup file kemudian restart yaitu. tutup dan buka kembali cangkang atau buka tab baru dan coba

Anda tidak dapat menggunakan tombol tab untuk melengkapi nama dan di ZSH Anda bahkan tidak perlu memiliki case kan Anda bisa mengetikkan docu dan tekan tab dan itu akan mengubahnya menjadi ~ / Documents

masukkan deskripsi gambar di sini

zeitue
sumber
0

Anda dapat mengubah direktori dengan nomor inode.
pertama kita temukan inode dengan ls -il.
kemudian

cd $(find -inum directory_inode_number)

sumber
0

Jika Anda perlu melakukannya dalam skrip atau untuk mendukung direktori dengan nama yang tidak dapat didekodekan:

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".")')

Ini berfungsi jika ada file dalam direktori, terlepas dari urutan penyortirannya relatif terhadap direktori.
Ini berfungsi untuk direktori tersembunyi ketika cd */gagal.
Ini berfungsi jika nama tidak dapat diwakili di lokal saat ini ketika lshanya mencetak ??bukan nama.

jfs
sumber
0

Memperluas jawaban ace:

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

untuk membuka folder ke-1 dalam direktori. '1p' dapat diubah menjadi '2p' untuk direktori kedua.

ls -d -1 -la */

untuk daftar hanya direktori dari direktori induk.

Ivan Ivković
sumber