Dosya adlarında boşluk karakterleri kullanmamak için hangi teknik sebepler var?


75

Tanıdığım birileri bugün, dosya adlarımızda boşluk kullanma eğiliminde olmayanlar, örneğin NamingThingsLikeThis.txt- dosya adlarında alanı destekleyen modern işletim sistemlerine rağmen , rahatsızlık duyduğunu ifade etti .

Var mıdır teknik nedenler o (uygun) boşluksuz dosya adlarını görmek için hala yaygın olduğunu? Öyleyse, dosya adlarındaki boşlukların engellenmesinin ya da cesaretinin kaldırılmasının önündeki teknik nedenler nelerdir ve bunlar hangi durumlarda ilişkilidir?

Düşünebilmemin en açık nedeni ve genellikle neden bunlardan kaçındığım, bu tür dosyalarla uğraşırken komut satırında gerekli olan ekstra tırnaklardır. Başka önemli teknik sebepler var mı?


Dediğiniz gibi, komut satırında uğraşmak çok daha kolay. Ve programlama için, dosya adlarında boşluk kullanmanın bile mümkün veya mümkün olduğundan emin değilim.
Alvin Row

Yanıtlar:


66

Dosya adlarındaki boşluk karakterleri, komut satırındaki birçok bağlamda ve komut satırlarında atasözünde sağda bir acı olabilir, burada doğru şekilde kaçtıklarından emin olmak için dikkatli olmalısınız, bu nedenle komutları ayırıcı gibi görünmeyin çalışan.

/ Dir / ne-her zaman böyle bir bağlamda kullanılmayacağından emin olsanız bile, orada bulunmamaları daha güvenlidir.

Bu ve eski alışkanlıklar zor ölür.


Ayrıca, başa çıkmanız gereken doğru bir kraliyet acısı, o zaman yolları oluşturmak ve değiştirmek zorundasınız. Özellikle parçalar manipüle edilecek diğer kod bitlerine gönderilirse, yeniden çıkmadan / yeniden alıntı yapmadan önce, bileşenlerin işaretlenmemiş ve çıkartılmamış olduklarından emin olun.
afrazier

2
Boşlukların kötü olduğunu düşünüyorsanız '\n', adlarında newlines ( ) bulunan dosyalarla ilgilenmeyi deneyin . (Unix benzeri sistemler aslında buna izin veriyor; Windows genellikle ya da en azından zorlaştırıyor.)
Keith Thompson

31

Komut satırı ve eski alışkanlıklar hakkındaki diğer cevaplara ek olarak, boşluk içeren dosya adlarıyla çalışırken özel dikkat gerektiren birçok ağ protokolü de vardır.

(Bir web sitesinden "Product List.pdf" dosyasını indirmeyi denediyseniz ve "Product" adlı bir dosyayla sonlandıysanız, diğer taraftaki programcı bilmediğinden veya yapamadığından Content-Disposition başlığı için alıntılama kurallarını çözmeyin.)


11
+1. Bir başlangıç ​​için HTTP. URL’lerdeki boşluklar (sadece HTTP için değil, herhangi bir protokol için)% 20 veya + 'dan çıkarılmalıdır. Olması gerektiği gibi kodlanmadığında karışıklık ortaya çıkabilir. Web sayfaları için, hem boşluklardan hem de bunları değiştirmek için yaygın olarak kullanılan alt çizgiden ("_") kaçınmanın görsel bir nedeni vardır - her ikisi de altı çizili bir bağlantıda aynı görünebilir, böylece bağlantıyı elle kopyalayan veya bir başkasına okuyan biri alabilirsiniz. yanlış.
David Spillett

5
URL'lerde kodlanması gereken boşluklarla ilgili en can sıkıcı şeylerden biri, belirli yazılımların boşlukları kodlanmış halde tutmaya son
vermemesi

Bu gerçek mi? 2018'de bu olur mu?
Chris Calo

@ChrisCalo Bu cevabın 2018 değil, 2009'da verildiğini fark edebilirsiniz. Ancak, evet, bu hala 2018'de gerçekleşiyor. Muhtemelen daha az sıklıkla, artık çaylak geliştiricilerin her şeyi sıfırdan yapmaktan ziyade web siteleri oluşturmak için çerçeveler kullanıyorlar. sorun.
Stobor

28

Sebeplerin çoğu tarihseldir. Bu, bugün anlam ifade etmedikleri anlamına gelmez.

Taşınabilirlikte Konular

Bir dosyayı adlandırırken, diğer (dosya) sistemlerinin bu dosya adına nasıl davranacağını da düşünmeniz gerekebilir. Dosya adındaki bir karakter sisteminiz için iyi olabilir, ancak başka bir sistem için bir sorun olabilir.

Dolayısıyla, dosyaya daha eski bir sistemden kolayca erişmek isteyebileceğiniz en ufak bir olasılık olduğu sürece, yalnızca güvenli bir karakter seçersiniz . Bu, tuttuğunuz eski bir kurtarma sistemine önyüklemeyi veya en son Windows sürümlerinin hala bir şekilde MS-DOS'a dayanması korkusunu içerebilir.

uzunluk

Bir dosya sistemi bir dosyanın sahip olabileceği uzunluğu sınırlayabilir. Bu, MS-DOS'un 8.3 dosya adıyla sınırlı olduğu günlerde daha da ciddiydi . Böylece, boşluk bırakmamak isme daha anlamlı karakterler eklemenizi sağladı.

Diğer bazı dosya sistemleri de dosya adlarının uzunluğu için katı sınırlar tanımlamıştır. Vikipedi detaylarda isteyenler için dosya sistemi karşılaştırması ile ilgili makalede bir tablo var .

Ayrılmış Karakterler

MS-DOS ayrıca boşluk karakterini ayrılmış bir karakter olarak tanımladı. Bu, boşluk karakterinin FAT'de doldurma için kullanılmasından kaynaklanmaktadır . Ek olarak, MS-DOS kabuğunda kaçan bir sistem sağlamadı.

Komut Satırı Yorumlama

Komut satırlarının çoğu, boşluk karakterini parametre sınırlayıcı olarak kullanır . Bir dosya adından düzgün bir şekilde kaçmayı ihmal ederken, dosya adının bölümleri aramak istediğiniz uygulamaya parametre olarak yorumlanabileceği için korkunç sonuçları olabilir.

Arasındaki farkı düşünün

rm foo bar

ve

rm "foo bar"

Yukarıda bağlanan WikiPedia makalesi, bir komuttan düzgün bir şekilde kaçmak için eksik tarafından ortaya konan belirsizliği işaret eder:

Belirsizlik, ilk önce dosya ve dizin adlarındaki gömülü boşlukları yasaklayarak (örneğin, bunları '_' alt çizgi ile değiştirerek) veya komut satırı yorumlayıcısı ve bu parametreleri aşağıdaki gibi alan programlar tarafından destekleniyorsa önlenebilir. argümanlar, alıntı karakterlerinin arasına gömülü boşluklar içeren bir ad ekleyerek veya boşluktan önce bir çıkış karakteri kullanarak genellikle ters eğik çizgi ('\'). Örneğin

Long path/Long program name Parameter one Parameter two ...

belirsizdir ("program adı", program adının bir parçası mı yoksa iki parametredir?); ancak

Long_path/Long_program_name Parameter_one Parameter_two ...,
LongPath/LongProgramName ParameterOne ParameterTwo ...,
"Long path/Long program name" "Parameter one" "Parameter two" ...

ve Uzun \ yol / Uzun \ program \ isim Parametre \ bir Parametre \ iki ...

belirsiz değildir.

Tekdüzen Kaynak Konumlandırıcıları (URL)

Bir dosyanın konumunu tanımlamaya çalışırken, bir URL kullanarak, boşluklardan kaçmak gerekir.

Karakterler birçok nedenden dolayı güvensiz olabilir. Boşluk karakteri güvensizdir, çünkü önemli alanlar kaybolabilir ve URL'ler kopyalanırken veya yazı yazarken veya kelime işlem programlarının tedavisine maruz kaldığında önemsiz boşluklar eklenebilir.

Kaynak: RFC1738

Bu nedenle, %20bunun yerine boşluk bırakılmalıdır . Bu, URL'nin dosya adını daha az okunabilir hale getirir ve böylece insanları ilk etapta onlardan uzak tutar.


25

Boşluklar %20web'deki dosya adlarına kodlanır veya dönüştürülür , bu da sitenin varlıklarını yönetmeyi zorlaştırabilir.

Kafam karıştı Image 1.pngve Image%201.pngkarıştırıyor. Bunun Image001.pngyerine kullanımı daha kolay .

Bu gerçekten komut satırı için kaçış dizileriyle aynı kategoriye giriyor.


5

Bazen, komut satırında çalışırken ya da daha eski işletim sistemlerini kullanırken ya da farklı işletim sistemlerinde derlenecek programları yazarken ya da ... sorunlu olabilecek birçok neden olduğunda boşluklar sorun yaratabilir ve ben Dosyayı şöyle yazmak gerçekten de zor bir şey değil: file-without-blanks.txt veya file_without_blanks.txt . Veritabanını tercih ediyorum çünkü alt çizgi, örneğin altı çizili yazı tipiyle çalışırken bazen görünmez olabilir.

Ama çoğunlukla, yaşlılıktan itibaren bir alışkanlık meselesidir. Hangi hissetmiyorum , terk etmek için yeterince profesyonel neden var.


Belki ilgili olmayan, ancak yine de buraya ekleyeceğim bir not. Dosyalarını boşlukla adlandıran insanlar genellikle bunun çok fazla olduğunu düşünmezler; Sık sık bilmeyenler, dosya isimlerinde onlardan kaçınmanın neden iyi olduğunu bilirler.
Ve hepimiz aynı fikirdeyiz, "Sevgili Efendim veya Bayan, sizi bu yazıyı size bildirmek için yazıyorum" adında bir dosyadan daha kötü bir şey yoktur.

Sadece boşluklar değil - dosya uzunluğu da bir şey için sayılır ve IMHO, diyelim ki, 30 karakterden daha uzun olmamalıdır. İçinde boşluk bulunan uzun dosya adları CD'leri, DVD'leri ve eski işletim sistemlerinde okunması gereken ve Win ve * nix plaformları arasında kaydederken bir nimettir.


2
Tembel Kelime kullanıcıları ...
SamB
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.