Saat ini, saya menggunakan YYMMDD-NAME+PAGE
nama untuk sebagian besar file saya. NAME
memiliki ruang yang dikonversi ke garis bawah.
Saya ingin menggunakan YYYY-MM-DD
format tanggal, tetapi saya tidak yakin bagaimana memisahkannya dari namanya. A -
akan terlihat aneh jika namanya dimulai dengan angka. Jika saya menggunakan _
, maka konflik dengan garis bawah mewakili ruang.
Karakter apa yang cukup aman dalam nama file yang akan berfungsi di sini? Saya menggunakan Linux, tetapi saya mungkin berbagi file dengan orang lain (Windows 7, Mac OS X).
Jawaban:
Ringkasan:
\/:*?"<>|
/
Pada semua platform, yang terbaik adalah menghindari karakter yang tidak dapat dicetak seperti karakter kontrol ASCII.
Windows
Di Windows, Windows Explorer tidak memungkinkan karakter kontrol atau
\/:*?"<>|
Anda dapat menggunakan spasi. Jika Anda menggunakan spasi, Anda harus sering mengutip nama file ketika digunakan dari baris perintah (tapi aplikasi GUI tidak terpengaruh sejauh yang saya tahu). Sistem file Windows seperti NTFS tampaknya menyimpan encoding dengan nama file, tetapi UTF-16 adalah standar.Beberapa bagian Windows peka huruf besar kecil, bagian lainnya peka huruf besar kecil. Sangat mudah untuk membuat nama file yang berbeda seperti "Ab" dan "ab" pada sistem file Windows NTFS. Nama-nama ini merujuk pada file terpisah yang berisi konten terpisah yang berbeda. Namun, meskipun prompt perintah Windows akan dengan senang hati mendaftarkan kedua file menggunakan
dir
, Anda tidak dapat dengan mudah mengakses atau memanipulasi salah satu dari mereka menggunakan perintah sepertitype
. Lihat di bawah.Linux, OS-X
Di Linux dan OS-X hanya
/
set ASCII yang dapat dicetak dilarang saya percaya. Beberapa karakter (seperti shell metacharacters*?!
) akan menyebabkan masalah pada baris perintah dan akan membutuhkan nama file untuk dikutip atau melarikan diri secara tepat.Linux filesystems seperti ext2, ext3 adalah agnostik set karakter (saya pikir mereka memperlakukannya lebih atau kurang sebagai aliran byte - hanya null dan
/
dilarang). Ini berarti Anda dapat menyimpan nama file dalam pengkodean UTF-8. Saya percaya itu tergantung pada shell atau aplikasi lain untuk mengetahui pengkodean apa yang harus digunakan untuk mengkonversi nama file dengan benar untuk ditampilkan atau diproses.Kesimpulan
Jadi Anda mungkin bisa menggunakan sesuatu seperti
✣
(jika tidak terlalu sulit untuk mengetik)Huruf besar (dalam) sensitivitas pada Windows
Perhatikan bahwa kita tidak dapat mengetik konten file kedua,
type
perintah Windows hanya mengembalikan konten Ab sebagai gantinya. File ketiga akan berbeda dari aB di Linux juga.(Windows 10 NTFS).
sumber
Sementara jawaban RedGrittyBrick secara teknis benar, keamanan bukan satu-satunya masalah: kegunaan juga penting. Saya pikir pertanyaan yang lebih baik adalah "karakter apa yang baik untuk digunakan dalam nama file".
Beberapa pedoman potensial:
\/:*?"<>|
dan byte nol bermasalah pada setidaknya satu sistem, dan harus selalu dihindari.[]()^ #%&!@:+={}'~
dan [`] semuanya memiliki arti khusus dalam banyak shell, dan menjengkelkan untuk dikerjakan, dan karenanya harus dihindari. Mereka juga cenderung terlihat mengerikan di URL .Itu pada dasarnya membuat Anda:
[0-9a-zA-Z -._]
yang selalu aman dan tidak mengganggu untuk digunakan (selama Anda memulai nama file dengan alpha-numeric) :)
sumber
[]
) adalah bagian dari ekspresi reguler dan memiliki makna khusus di shell juga. Tetapi mereka tidak seburuk itu untuk bekerja kecuali beberapa kasus sudut kejahatan.()
, sebenarnya.[]()^;
, jadi saya pikir jawaban yang tepat mungkin benar-benar[0-9a-zA-Z.,_-]
koma juga bisa dikecualikan hanya karena itu aneh untuk melihat dalam nama file, meskipun saya tidak bisa memikirkan kasus aktual di mana ia akan menyebabkan masalah.echo whereami > a,b,c
di jendela command prompt Win10.Anda bisa:
#
(simbol proofreader untuk spasi)Alt-1. cap awal dapat menggantikan spasi:
YYMMDD-HHMM-FileName.ext
atauYYMMDD-HHMM_FileName.ext
Karakter minimal untuk tampilan jernih, yang secara otomatis menyortir dengan angka nol untuk Jan-Sep (& 1st-9th ea mo).
sumber