Bagaimana cara saya menjalankan chmod
atau chown
menyembunyikan file secara rekursif ?
sudo chmod -R 775 *
tidak berfungsi pada file tersembunyi.
Hal yang sama berlaku untuk sudo chown -R user:group
.
Bagaimana cara saya menjalankan chmod
atau chown
menyembunyikan file secara rekursif ?
sudo chmod -R 775 *
tidak berfungsi pada file tersembunyi.
Hal yang sama berlaku untuk sudo chown -R user:group
.
Jawaban:
Jika Anda baik-baik saja juga memilih direktori saat ini, lakukan itu dan -R
lakukan pengangkatan berat. -R
tidak mengabaikan file tersembunyi.
sudo chmod -R 775 .
ls
unparseable; mencoba mengurai itu meminta masalah. Pendekatan yang tepat adalah dengan menggunakan shell globbing.
sudo chmod 775 -R
akan menjadi perut buncit, jadi pertahankan jawaban ini .
*
tidak menyertakan file tersembunyi secara default, tetapi jika Anda berada di bash, Anda dapat melakukan ini dengan:
shopt -s dotglob
Baca lebih lanjut tentang itu di builtin
manual bash :
Jika diset, Bash menyertakan nama file yang diawali dengan `. ' dalam hasil ekspansi nama file.
Ini akan membuat *
menyertakan file tersembunyi juga.
chmod -R 775 *
Nonaktifkan dengan:
shopt -u dotglob
zsh
?
(D)
kualifikasi globbing, misalnyachmod -R 775 *(D)
Pilihan lain adalah menggunakan find
saya suka karena Anda dapat memiliki kontrol berbutir halus atas itu.
find <path to start from> -exec chown <options> {} \+
find -path '<path to include>' -exec chown <options> {} \+
Satu-satunya downside adalah yang find
memiliki sintaks berbeda pada versi yang berbeda.
Semua file di direktori saat ini, secara rekursif, termasuk file tersembunyi:
chmod 755 -R ./* ./.[!.]*
Semua file di direktori saat ini, tidak secara rekursif, termasuk file tersembunyi:
chmod 755 ./* ./.[!.]*
Ini tidak akan mengubah nama file pengecualian yang dimulai dengan 2 titik, misalnya, "./..thisonescapesunharmed.txt"
Juga, berhati-hatilah untuk tidak menghapus bit "x", atau semua direktori Anda tidak akan dapat diakses (satu membutuhkan bit x untuk cd ke dir).
Ingat peringatan ini: tidak pernah menggunakan telanjang *
tapi ./*
sebagai gantinya.
Untuk menghindari masalah pengaturan izin pada direktori, gunakan find
saja.
find . -type f -exec chmod `VALUE` {} \;
* .*
) bukan cara teraman untuk melakukannya. Khususnya, itu akan muncul kembali ke direktori induk, yang berartichmod
juga saudara dari direktori saat ini. Cara yang tepat adalah* ..?* .[^.]*
atau, bahkan lebih baik (mengingat wildcard mungkin tidak cocok dengan file apa pun)$(ls -A)
.