it-swarm-id.com

Konvensi penamaan file Unix

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.

67
user4740

. 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
61
Mikel

Jauh lebih penting bahwa konvensi tertentu sedang konsisten. Pilih sebuah gaya, dan tetap menggunakannya.

38
David Oneill

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.

  • Setiap executable yang panjangnya dua huruf adalah super penting. Jadi jangan beri nama file dua huruf executable Anda. File apa pun dalam /etc Yang diakhiri dengan tab juga sangat penting, seperti fstab, mtab, inittab.
  • Terkadang .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)
  • Komunitas Unix/Linux tidak pernah memiliki batasan tiga karakter pada ekstensi dan mengerutkan kening setelah memperpendek ekstensi yang sudah dikenal agar sesuai. Misalnya, jangan gunakan .htm Di akhir file HTML di Unix/Linux, gunakan .html.
  • Dalam satu set file, nama file kadang-kadang ditulis dengan huruf besar, atau dalam huruf besar semua, sehingga muncul di bagian atas daftar direktori. Contoh klasiknya adalah 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.
  • File perpustakaan hampir selalu dimulai dengan lib. Pengecualian adalah zlib dan mungkin beberapa lainnya.
  • Skrip yang dipanggil oleh inetd terkadang ditandai dengan awalan in., Seperti in.tftpd.
  • Akhiran z dalam vmlinuz berarti di-zip, tetapi saya belum pernah melihat file lain dengan nama ini.
19
LawrenceC

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.

7
gelraen

Dua pemikiran:

  1. 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.

  2. 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:

    • 44,6% dari waktu yang digunakan hanya tanda hubung
    • 54.1% saat itu hanya menggarisbawahi
    • 1.2% dari waktu file menggunakan keduanya.

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

6
Roy Truelove

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)

4
Istvan

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:

  • Anda membagikan sistem file Anda dengan komputer lain, terutama dengan sistem operasi yang berbeda;
  • Anda berbagi file dengan orang lain (dan meskipun email cenderung cukup bagus dengan konversi, terkadang itu tidak berfungsi);
  • Anda menggunakan skrip Shell untuk mengotomatisasi beberapa tugas (ruang sangat bermasalah, meskipun ada banyak cara untuk mengatasinya);
  • Anda menggunakan berbagi file dari komputer lain.

...

4
asoundmove

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.

3
BillThor

gunakan - atau _ untuk menamai file
_ untuk fungsi
. untuk ekstensi

cat << EOF > foo-bar.sh  
foo_bar() {  
echo baz  
}  
EOF  
2
Akhil Jalagam

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"

2
bgvaughan

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.

0
Johan

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.

0
GMaster