GNU/Linux >> Belajar Linux >  >> Linux

Cd Ke Direktori Nama-Tidak Dikenal Di Jalur yang Diketahui?

Saya mencoba mengotomatiskan penyebaran aplikasi web yang sedang dikembangkan yang sering diperbarui. Aplikasi web hadir dalam bentuk file zip dengan nama yang tidak diketahui, dan struktur direktori ini:

unknown_name.zip
  └── unknown_folder_name
     └──all_the_application_files

Saya memerlukan skrip bash untuk:

  • hapus semua isi /var/www/ [selesai]
  • buka kompresi arsip unknown_name.zip, di jalur tmp tertentu [selesai]
  • cd di dalam jalur tmp yang diketahui [selesai]
  • cd di dalam unknown_folder_name diekstrak dari unknown_name.zip
  • pindahkan all_the_application_files ke /var/www [mudah jika kita selesaikan butir sebelumnya]

Penting:di dalam direktori tmp hanya akan ada satu direktori, yang ingin saya masuki. Skrip bash saya saat ini:

rm -r /var/www/*
unzip ./*.zip * -d /home/lese/tmp-deploy
cd /home/lese/tmp-deploy
# HERE I WOULD cd unknown_folder_name
mv * /var/www/

Jawaban yang Diterima:

Solusi

Jika Anda tahu pasti hanya ada satu direktori dan tidak ada yang lain (tidak ada folder lain dan tidak ada file lain) di direktori saat ini, Anda dapat masuk ke direktori tersebut dengan

cd *

Jika Anda tahu bahwa hanya ada satu direktori, tetapi mungkin ada file non-direktori dan non-symlink-to-directory di direktori saat ini, Anda dapat menggunakan

cd */.

untuk memilih direktori saja.

Penjelasan

Satu * diperluas oleh shell ke daftar semua nama file (termasuk subdirektori) di direktori saat ini (tidak termasuk file tersembunyi, terutama direktori . dan .. yang selalu ada). Jika satu-satunya hal di direktori saat ini adalah subdirektori untuk dimasuki, ini akan diperluas ke

cd unknown_folder_name

dan dengan demikian lakukan apa yang Anda inginkan.

Triknya dengan */. adalah bahwa ini diperluas ke "direktori mandiri" (bernama . ) di setiap subdirektori, yang tentu saja merupakan subdirektori itu sendiri. Karena nama file tidak pernah boleh berisi / , dan dengan asumsi hanya ada satu direktori, satu-satunya nama yang akan diperluas adalah unknown_folder_name/. , yang tentu saja merupakan direktori yang sama dengan unknown_folder_name .


Linux
  1. Dapatkan Jalur Lengkap Dari Dalam Skrip Bash?

  2. Membuat direktori baru di C

  3. Tambahkan skrip bash ke jalur

  1. Kesalahan fatal:cuda.h:Tidak ada file atau direktori seperti itu

  2. Bisakah saya menambahkan pintasan untuk mengganti jalur di Linux?

  3. Membuat program di bin

  1. Cara Menambahkan Direktori ke PATH di Linux [Dengan Contoh]

  2. Bagaimana menemukan jalur direktori parsial?

  3. Apa arti NT_STATUS_BAD_NETWORK_NAME di Samba?