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?
Sebagai contoh, saya ingin memberi nama file katakan: backup
dengan part 2
dan random
Haruskah saya melakukannya seperti ini:
backup_part2_random
OR
backup-part2-random
OR
backup.part2.random
Saya harap pertanyaannya jelas. Pada dasarnya, saya ingin memilih format yang sesuai dengan filosofi Unix.
.
digunakan untuk memisahkan ekstensi tipe file, mis. foo.txt
.
-
atau _
digunakan untuk memisahkan kata-kata logis, mis. my-big-file.txt
atau terkadang my_big_file.txt
. -
lebih baik karena Anda tidak harus menekan tombol Shift (setidaknya dengan keyboard PC Inggris AS standar), yang lain lebih suka _
karena lebih mirip ruang.
Jadi jika saya mengerti teladan Anda, backup-part2-random
atau backup_part2_random
akan paling dekat dengan konvensi Unix yang normal.
CamelCase biasanya tidak digunakan pada sistem Linux/Unix. Lihatlah 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 yang menggunakan CamelCase, dan ini ditulis oleh pengembang Mac. Banyak yang mengeluh tentang pilihan nama ini. Di Ubuntu, mereka sebenarnya mengganti nama script menjadi network-manager
.)
Misalnya, pada /usr/bin
di sistem saya:
$ ls -d [A-Z]* | wc -w # files starting with a capital
6
$ ls -d *_* | wc -w # files containing an underscore
178
$ ls -d *-* | wc -w # files containing a minus/dash
409
dan bahkan kemudian, tidak ada file yang dimulai dengan modal menggunakan CamelCase:
$ ls -d [A-Z]*
GET HEAD POST X11 Xvnc Xvnc4
Jauh lebih penting bahwa konvensi tertentu sedang konsisten. Pilih sebuah gaya, dan tetap menggunakannya.
Pandangan saya tentang konvensi nama file Unix/Linux:
Filesystem Unix/Linux tidak secara inheren mendukung gagasan ekstensi. Konsep ekstensi file sepenuhnya 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 apa pun. Skrip akan memiliki baris hashbang (mis. #!/bin/bash
) Yang mengidentifikasi program apa yang harus menafsirkannya.
/etc
Yang diakhiri dengan tab
juga sangat penting, seperti fstab
, 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
digunakan secara luas untuk skrip konfigurasi atau file, baik yang diawali terlebih dahulu (mis., rc.local
) atau suffixing (.vimrc
).htm
Di akhir file HTML di Unix/Linux, gunakan .html
.Makefile
dalam paket source. Hanya lakukan ini untuk hal-hal seperti README
.~
Digunakan untuk mengidentifikasi file cadangan atau direktori, seperti pada important_stuff~
, Atau /etc~
. Banyak shell akan memperluas satu-satunya ~
Ke $HOME
.lib
. Pengecualian adalah zlib
dan mungkin beberapa lainnya.in.
, Seperti in.tftpd
.vmlinuz
berarti di-zip, tetapi saya belum pernah melihat file lain dengan nama ini.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 sufiks file yang dimulai dengan titik untuk membedakan tipe file yang berbeda, mis. Apache Web Server menggunakan sufiks untuk mengatur tipe MIME yang benar dalam header jawaban.
Dua pemikiran:
Dalam Naming Variables, Functions, and Files
bagian Standar Pengodean GN Anda akan menemukan:
Silakan gunakan garis bawah untuk memisahkan kata dalam sebuah nama, sehingga perintah Emacs Word dapat berguna di dalamnya. Tetap menggunakan huruf kecil;
Sementara IMO mengatakan "Anda harus menggunakan _
karena emacs "sepertinya sedikit ketinggalan jaman, itu tetap ada dalam dokumen 'standar' mereka.
Mari kita anggap sejenak bahwa kita semua sepakat bahwa kernel linux adalah proyek linux yang serba bisa dan semua, dan konvensi yang digunakan di sana adalah apa yang dapat dianggap sebagai konvensi 'standar'.
grep
- ing sumber untuk kernel linux Anda akan menemukan yang berikut:
Menariknya, sumber untuk git berbobot di 85% untuk tanda hubung, 3,8% untuk garis bawah, dan 11.1% untuk keduanya.
Pilihannya jelas, debat. ;)
Pendapat pribadi: Saya menggunakan tanda hubung untuk alasan estetika dan kunci. Jika Anda bekerja dalam tim, pilihlah. Tetapi untuk mengulangi apa yang telah dikatakan, konsisten.
* atau "be_all and end_all" jika Anda suka
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)
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:
...
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.
gunakan -
atau _
untuk menamai file_
untuk fungsi.
untuk ekstensi
cat << EOF > foo-bar.sh
foo_bar() {
echo baz
}
EOF
Satu konvensi adalah menggunakan "_" untuk menggantikan 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 memerlukan mengutip pathname ("foo bar") atau melarikan diri dari spasi (foo\bar). Skrip Shell yang ditulis dengan benar akan mengutip variabel yang mungkin menyertakan spasi, terutama nama path, tetapi gagal melakukannya adalah kekhilafan yang 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. Misalnya, sistem manajemen paket pada 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"
Saya setuju dengan David Oneill bahwa Anda harus pergi dengan sesuatu.
Tapi itu bagus jika file-file tersebut diurutkan dalam direktori yang sama, jadi jangan angka 0 .. 10 tetapi angka 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:
backup_2011-06-19T114012___part002___random
Mudah dibaca dan mudah diurai dengan skrip.
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. Tapi sejak -
memakan sedikit ruang, agak sulit untuk membaca pemisahan kata dibandingkan dengan _
. Menggunakan _
untuk memisahkan kata-kata membuatnya terlihat jauh lebih bersih sejak _
memakan lebih banyak ruang.
Dalam skrip Shell dan pemrograman komputer lainnya, _
digunakan untuk variabel multi-kata, seperti MY_ENVIRONMENT_FILE
. Membuat nama file menggunakan _
juga membuatnya 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 tidak this-long-Word
.