Saya bertanya-tanya apa konvensi penamaan untuk file di Unix? Saya tidak yakin tentang ini, tetapi saya pikir mungkin ada konvensi penamaan universal yang harus diikuti?
Misalnya, saya ingin memberi nama file katakan: backup
dengan part 2
danrandom
Haruskah saya melakukannya seperti ini:
backup_part2_random
ATAU
backup-part2-random
ATAU
backup.part2.random
Saya harap pertanyaannya jelas. Pada dasarnya, saya ingin memilih format yang sesuai dengan filosofi Unix.
Jawaban:
.
digunakan untuk memisahkan ekstensi tipe file, misfoo.txt
.-
atau_
digunakan untuk memisahkan kata-kata logis, misalnyamy-big-file.txt
atau kadang-kadangmy_big_file.txt
.-
lebih baik karena Anda tidak perlu menekan tombol Shift (setidaknya dengan keyboard PC Inggris-Inggris standar AS), yang lain lebih suka_
karena lebih mirip ruang.Jadi jika saya mengerti contoh Anda,
backup-part2-random
ataubackup_part2_random
akan paling dekat dengan konvensi Unix yang normal.CamelCase biasanya tidak digunakan pada sistem Linux / Unix. Lihat nama file di
/bin
dan/usr/bin
. CamelCase adalah pengecualian daripada aturan pada sistem Unix dan Linux.(
NetworkManager
adalah satu-satunya contoh yang dapat saya pikirkan tentang penggunaan CamelCase, dan ini ditulis oleh pengembang Mac. Banyak yang mengeluh tentang pilihan nama ini. Di Ubuntu, mereka sebenarnya mengganti nama skrip menjadinetwork-manager
.)Misalnya, aktif
/usr/bin
di sistem saya:dan bahkan kemudian, tidak ada file yang dimulai dengan modal menggunakan CamelCase:
sumber
.
Char juga dapat digunakan untuk memutar hal, tidak hanya untuk menentukan perpanjangan. Sebagai contohmy.log my.log.1 my.log.2.gz
.ls
output dari/usr/bin
adalah referensi. Ini adalah pertanyaan tentang konvensi. )Jauh lebih penting bahwa konvensi tertentu konsisten. Pilih sebuah gaya, dan tetap menggunakannya.
sumber
Pandangan saya tentang konvensi nama file Unix / Linux:
Filesystem Unix / Linux tidak secara inheren mendukung gagasan ekstensi. Konsep ekstensi file benar-benar ada sebagai sesuatu yang didukung oleh utilitas seperti
cp
,ls
, atau shell yang Anda gunakan. Saya percaya ini adalah cara di NTFS juga, tapi saya bisa salah.Dapat dieksekusi, termasuk skrip shell, biasanya tidak pernah memiliki jenis ekstensi. Skrip akan memiliki garis hashbang (yaitu
#!/bin/bash
) yang mengidentifikasi program apa yang harus menafsirkannya./etc
berakhir ditab
juga super penting, sepertifstab
,mtab
,inittab
..d
ditambahkan ke nama direktori, khususnya di/etc
, tetapi ini tidak tersebar luas (PEMBARUAN: https://serverfault.com/questions/240181/what-does-the-suffix-d-mean-in-linux )rc
secara luas digunakan untuk skrip konfigurasi atau file, baik prepending (misalnya,rc.local
) atau suffixing (.vimrc
).htm
di akhir file HTML di Unix / Linux, gunakan.html
.Makefile
dalam paket sumber. Hanya lakukan ini untuk hal-hal sepertiREADME
.~
digunakan untuk mengidentifikasi file cadangan atau direktori, seperti dalamimportant_stuff~
, atau/etc~
. Banyak kerang akan memperluas satu~
ke$HOME
.lib
. Pengecualian adalahzlib
dan mungkin beberapa lainnya.in.
, sepertiin.tftpd
.vmlinuz
berarti zip, tetapi saya belum pernah melihat file lain yang dinamai seperti ini.sumber
.sh
"ekstensi" di atasnya. Saya pribadi merasa agak menjengkelkan, tetapi saya harus mengakui bahwa saya mungkin tidak tahu beberapa alasan yang baik untuk menggunakan.sh
..sh
pada skrip yang (1) tidak dimaksudkan untuk dijalankan secara interaktif, tetapi hanya dari skrip / program lain, atau (2) dirancang untuk sumber daripada eksekusi. Untuk yang pertama mereka harus dieksekusi; untuk yang terakhir saya meninggalkan bit executable dan menggunakan baris shebang hanya untuk dokumentasi dari apa fungsi shell ditulis untuk.#!/bin/zsh
di bagian atas) Anda tahu bahwa Anda dapat dengan aman mendapatkan file lain dengan ekstensi .zsh dan pastikan bahwa itu berisi kode zsh yang legal. Jika skrip yang dapat dieksekusi Anda benar-benar mematuhi Bourne Shell (yaitu#!/bin/sh
di bagian atas), maka Anda akan tahu bahwa sumber file .zsh akan bermasalah.Dalam nama file unix hanya string, tidak seperti DOS, di mana nama file terdiri dari nama dan ekstensi. Jadi setiap nama file yang diberikan benar-benar dapat diterima.
Tetapi banyak program masih menggunakan akhiran file dimulai dengan titik untuk membedakan berbagai jenis file, yaitu Apache Web Server menggunakan akhiran untuk mengatur tipe MIME yang benar dalam header jawaban.
sumber
Dua pemikiran:
Di
Naming Variables, Functions, and Files
bagian Standar Pengkodean GNU Anda akan menemukan:Sementara IMO mengatakan "Anda harus menggunakan
_
karena emacs" tampaknya sedikit tanggal, itu tetap dalam dokumen 'standar' mereka.Mari kita anggap sejenak bahwa kita semua sepakat bahwa kernel linux adalah proyek all-and-end-all linux, dan konvensi yang digunakan di sana adalah apa yang dapat dianggap sebagai konvensi 'standar'.
grep
-sumber untuk kernel linux Anda akan menemukan yang berikut:Menariknya, sumber untuk git berbobot 85% untuk garis putus-putus, 3,8% untuk garis bawah, dan 11,1% untuk keduanya.
Pilihannya jelas, debat. ;)
Pendapat pribadi: Saya menggunakan tanda hubung untuk alasan estetika dan perubahan utama. Jika Anda bekerja dalam tim, pilihlah. Tetapi untuk mengulangi apa yang dikatakan, konsistenlah .
* atau "be_all dan end_all" jika Anda suka
sumber
Karakter yang tidak boleh Anda gunakan dalam nama file:
Pembatas karakter yang harus Anda gunakan untuk membuat nama lebih mudah dibaca:
(Dalam beberapa kasus ":" memiliki makna khusus)
sumber
/
pemisah path, dan terminator string \ 0 (ASCII nol).Untuk menambah apa yang dikatakan orang lain, saya hanya akan mengatakan bahwa sementara huruf beraksen dan banyak karakter khusus legal dalam nama file, mereka dapat menyebabkan masalah dalam salah satu skenario berikut:
...
sumber
Menempel nama file alfanumerik. Hindari spasi atau ganti spasi dengan garis bawah (_). Batasi tanda baca pada nama file hingga titik (.), Garis bawah (_), dan tanda hubung (-). Secara umum nama file adalah huruf kecil, tetapi saya menggunakan CamelCase ketika saya memiliki beberapa kata dalam nama file.
Gunakan ekstensi yang menunjukkan jenis file. Program tidak memerlukan ekstensi karena bit eksekusi digunakan untuk menunjukkan program, dan shell mengetahui cara menjalankan berbagai jenis program. Ini umum tetapi tidak diperlukan untuk (.sh) untuk skrip shell, dan (.pl) untuk skrip perl. Ekstensi executable Windows .bat, .com, .scr, dan .exe menunjukkan executable Windows di Unix.
Pilih standar dan patuhi itu. Tapi itu tidak akan merusak jika Anda menghindarinya.
File tersembunyi (atau titik) memiliki nama yang dimulai dengan titik. Ini biasanya tidak muncul dalam daftar direktori. Gunakan 'ls -a' untuk memasukkan file dot dalam daftar.
sumber
Satu konvensi adalah menggunakan "_" untuk mengganti spasi sebagai pemisah antara kata-kata. Karakter lain dapat digunakan untuk mengganti spasi, tetapi ada kegunaan konvensional yang sedikit lebih kuat untuk "-" dan "." di pathnames, jadi "_" biasanya lebih disukai.
Spasi legal dalam nama path, tetapi secara konvensional dihindari, karena mereka membutuhkan mengutip nama path ("foo bar") atau melarikan diri dari spasi (foo \ bar). Skrip shell yang ditulis dengan benar akan mengutip variabel yang mungkin menyertakan spasi, terutama pathnames, tetapi gagal melakukannya adalah kekhilafan umum, dan itu banyak mengetik tambahan ketika melakukan perintah satu kali yang dimasukkan pada baris perintah.
Menggunakan "-" untuk memisahkan kelompok angka, seperti pada cap waktu atau nomor seri, adalah konvensi yang biasa digunakan di luar konteks sistem file. Menggunakan "." untuk memisahkan "ekstensi file" yang menunjukkan jenis file sangat umum, dan beberapa alat penting bergantung padanya. Sebagai contoh, sistem manajemen paket di Red Hat Enterprise Linux dan turunannya, RPM, mengharapkan file paket diakhiri dengan ".rpm". Tarball tradisional adalah file tar (".tar") yang telah di-gzip (".gz"), dan diakhiri dengan ".tar.gz".
Jadi menyatukan ini, Anda sering berakhir dengan nama file yang terlihat seperti, "home_backup_2017-07-01.tar.gz"
sumber
gunakan
-
atau_
untuk memberi nama file_
untuk fungsi.
untuk ekstensisumber
Saya setuju dengan David Oneill bahwa Anda harus pergi dengan sesuatu.
Tapi itu bagus jika file-file tersebut dapat diurutkan dalam dir yang sama, jadi jangan nomor 0 ..10 tetapi nomor 00 ..10.
Saat menggunakan tanggal dalam nama, buka dengan format tanggal standar seperti ISO8601 .
Dan jangan takut untuk menggunakan banyak karakter untuk memisahkan bagian logis dalam nama. Jika Anda menggunakan _ (itu 3 _), maka Anda dapat menyederhanakan regexps pada nama file nanti.
Jadi contoh Anda bisa jadi seperti ini:
Mudah dibaca dan mudah diurai dengan skrip.
sumber
Kata-kata dalam nama file dapat dipisahkan dengan
_
atau-
sesuai dengan konvensi Unix.Jika Anda menggunakan
-
, lebih mudah untuk mengetik, menyelamatkan Anda dari menekan SHIFT. Tetapi karena-
memakan sedikit ruang, agak sulit untuk membaca pemisahan kata dibandingkan dengan_
. Menggunakan_
kata-kata yang terpisah membuatnya terlihat jauh lebih bersih karena_
membutuhkan lebih banyak ruang.Dalam skrip shell dan pemrograman komputer lainnya,
_
digunakan untuk variabel multi kata, sepertiMY_ENVIRONMENT_FILE
. Membuat nama file menggunakan_
serta terus konsisten:MY_ENVIRONMENT_FILE=~/my_environment_file
.Dalam pengembangan web,
-
lebih disukai untuk penamaan file. Salah satu alasannya mungkin karena garis bawah pada tautan web dapat menyembunyikan garis bawah dan mungkin menyulitkan jika Anda mengetik tautan web dengan tangan.Di sebagian besar editor dan juga halaman web,
this_long_word
dapat sepenuhnya dipilih dengan klik dua kali tetapi tidakthis-long-word
.sumber
-
dan_
ambil ruang yang persis sama! :)_
terlihat lebih bersih meskipun membutuhkan ruang yang sama dengan-
. Seharusnya saya menggunakan kata "rupanya". Mengenai_
dan-
ketika menggunakan font monospace, perbedaannya dapat dijelaskan dengan gambar analog ini: evsc.net/v8/wp/wp-content/uploads/2010/09/…Pasti ada standar untuk Linux. Jika Anda melihat nama file di sistem Linux apa pun, huruf kecil dengan tanda hubung: / usr / bin / ssh-keygen. Ini ditentukan dalam salah satu dokumen Basis Standar Linux yang tidak dapat saya temukan saat ini. Ini juga ditentukan oleh GNU yang mengatakan untuk menggunakan garis bawah untuk nama variabel dan tanda hubung untuk nama file.
sumber
Untuk menambah apa yang dikatakan orang lain:
1-Meskipun Linux tidak terlalu peduli dengan ekstensi, Windows juga, jadi pastikan file apa pun yang Anda rencanakan untuk diberikan kepada siapa pun memiliki ekstensi yang sesuai.
2-Camel caps tampaknya paling mudah untuk menggunakan skrip, tidak ada karakter khusus yang perlu dikhawatirkan tentang urutan pelarian.
sumber