Saya sedang mengerjakan skrip python yang meneruskan lokasi file ke subproses scp. Tidak apa-apa, tetapi saya berada dalam situasi di mana saya mungkin akhirnya menggabungkan jalur dengan nama file sehingga ada '/
ganda di jalan. Saya tahu bahwa bash tidak peduli jika Anda memiliki banyak pemisah file, tetapi saya ingin tahu bagaimana tepatnya hal itu diperbaiki. Apakah bash yang menghapus /
extra ekstra s atau apakah itu benar-benar tidak penting?
Saya bertanya karena ini akan menghemat beberapa baris kode untuk memeriksa /
tambahan s sambil menggabungkan. Aku tahu ini bukan masalah besar, tapi aku juga penasaran. Saya memiliki skrip bash yang memiliki baris cd //usr
(bukan cd /usr
), yang tampaknya menyiratkan bahwa mungkin ada signifikansi untuk menggunakan beberapa /
s di jalan
Jawaban yang Diterima:
Beberapa garis miring diperbolehkan dan setara dengan satu garis miring. Dari spesifikasi Single Unix (versi 4), definisi dasar 3.271 pathname:“Beberapa garis miring yang berurutan dianggap sama dengan satu garis miring.”
Ada satu pengecualian:Jika nama path dimulai dengan dua karakter garis miring yang berurutan, komponen pertama yang mengikuti karakter garis miring utama dapat diinterpretasikan dengan cara yang ditentukan oleh implementasi. (ref:definisi dasar 4.13 resolusi nama path). Linux sendiri tidak melakukan ini, meskipun beberapa aplikasi mungkin melakukannya, dan sistem unix-ish lainnya melakukannya (mis. Cygwin).
/
. tambahan di akhir nama path memaksa nama path untuk merujuk ke direktori. Dalam (POSIX 1003.1-2001 (Single Unix v4) definisi dasar 4.11 resolusi nama path, sebuah /
tambahan setara dengan /.
. di akhir . Definisi dasar POSIX 1003.1-2008 (Single Unix v4) 4.13 menghilangkan persyaratan untuk membuatnya setara dengan /.
, untuk mengatasi direktori yang tidak ada (mis. mkdir foo/
diperlukan untuk bekerja, sedangkan mkdir foo/.
tidak akan — lihat alasan perubahannya).
Untuk program yang bekerja pada entri direktori, jika foo
adalah tautan simbolis ke direktori, lalu meneruskan foo/
adalah cara untuk membuat program bertindak pada direktori alih-alih tautan simbolik.
Perhatikan bahwa ini hanya berlaku untuk resolusi nama jalur, yaitu saat mengakses file. Manipulasi nama file dapat bekerja secara berbeda. Misalnya basename
dan dirname
mengabaikan garis miring.
-
“tidak dapat Membuat Direktori Cache /home//.composer/cache/repo/https—packagist.org/, Atau Direktori Tidak Dapat Ditulis. Melanjutkan Tanpa Cache”?
-
Instal binari ke /bin, /sbin, /usr/bin dan /usr/sbin, interaksi dengan --prefix dan DESTDIR
-
Kapan saya harus menggunakan /dev/shm/ dan kapan saya harus menggunakan /tmp/?