Dosya adlarındaki yeni satırlar


24

Savunma 1 kabuk komut dosyası yazmanın hem sağduyulu hem de uzun vadede daha sürdürülebilir olduğu fikrini kabul ediyorum .

Buradaki metin işleme sorularına verilen cevapların çoğu, sıradışı dosya isimlerinin cevap koşullarını oluşturarak bu prensibi izler; boşluk, çizgi ve yeni çizgiler içerebilir.

Dosya adlarındaki yeni satırlar ne kadar yaygın? özellikle:

  • Herhangi bir uygulama varsayılan olarak yeni satırlar içeren dosya adları oluşturuyor mu?
  • Böyle bir dosya adı oluşturmanın istenebileceği durumlar var mı?
  • Yoksa bunlar çoğunlukla bir kullanıcı hatası örneği midir?

[1] Mümkün olan en geniş senaryo ve acil durum yelpazesini planlamak ve yönetmek ...

Bu soruya (oldukça inatçı) yorumdan ilham alan soru .


4
Kısa cevap, yeni satırlara sahip tuhaf dosya adlarıdır ve / veya yazdırılamayan karakterler asla iyi pratik değildir, mantıklı uygulamalar onları yaratmaz ve yalnızca birileri kabuk komut dosyalarınızı veya bu tür isimleri doğru şekilde kullanmayan programları kırmaya çalışıyorsa gerçekten görürsünüz. Diğer insanların referanslarla ve daha ayrıntılı cevaplar vermelerine izin vereceğim.
jw013

Yanıtlar:


26

Dosya adlarını değiştiren uygulamaları test etmek için kasıtlı olarak oluşturulanlardan başka bir yeni satır içeren bir dosya adı görmedim. Yeni satırları içeren dosya adları şu şekilde görünebilir:

  • Bazı hata veya kullanıcı hataları (örneğin, kötü bir kopyala yapıştır) istenmeyen bir dosya adıyla sonuçlandı.
  • Bazı dosya sistemi bozulmaları bir dosya adını etkiledi.
  • Birisi kasıtlı olarak, bir uygulamanın geçirilmesi gereken dosya adlarına daha fazla güvendiği bir güvenlik açığından yararlanmak için “garip” bir dosya adı oluşturdu.

POSIX bir dosya adını “bir dosyayı adlandırmak için kullanılan 1 - {NAME_MAX} bayttan oluşan bir ad olarak tanımlar . Adı oluşturan karakterler, eğik çizgi karakteri ve boş bayt hariç tüm karakter değerleri kümesinden seçilebilir. Dosya adları nokta ve nokta-nokta özel bir anlamı vardır. Sadece (garip ‘dosya adları” Her dosya sistemi kabul dair bir garanti yoktur’ garantili karakterler ASCII harf, rakam, dönem, tire ve alt çizgi , yani A-Z, a-z, 0-9ve ._-tire ile, ilk pozisyonda yasaktır), ancak modern birliklerde yerel dosya sistemlerinin çoğunu yapar.


Yani spacesdosya adlarında taşınabilir olması garanti edilmez? Bu son üç karakterin açıklığa kavuşması faydalı olurdu period, underscore, and hyphen. Altı çizili bağlantı ile bunu söylemek zor.
toxalot

4
@toxalot Hayır, alanların taşınabilir olması garanti edilmez, ne de ,(RCS tarafından kullanılır), :(X.org tarafından kullanılır), ~(yedekleme dosyalarındaki birçok program tarafından kullanılır),… Ama hemen hemen tüm modern sistemler tarafından desteklenir.
Gilles 'SO- kötülük olmayı'

22

Bir makale yazarken, sık sık çeşitli kaynaklardan PDF dosyalarının bibliyografisini toplarım. Bunların hepsi doğru meta veri içermiyor, bu da kağıdın başlığını PDF görüntüleyiciden dosya adına kopyaladığım anlamına geliyor. Bu genellikle dosya adındaki yeni satırlara yol açar, ancak kullandığım herhangi bir araçla hiçbir zaman sorun olmadı.

IMHO bir standarda kodlama konusunda 'savunmacı' bir şey yok .. bir dosyaya yeni satırlara izin verildiğini belirten bir standart Komut dosyanız standartta izin verilen tüm dosya adlarını işlemiyorsa, komut dosyanız bozulur.


2
Gerçek dünya örneği için teşekkürler; oldukça iyi bir şekilde standartla ilgili
fikrinizin

6
+1 "Komut dosyanız standartta izin verilen tüm dosya adlarını
işlemiyorsa

3
İşte bir kişinin dosya isimlerinde hangi karakterlerin kabul edildiğini değiştirmemiz gerektiği konusundaki argümanı ve ben şahsen onunla aynı fikirdeyim.
Chris Magnuson,

Post, tam olarak aynı sebepten dolayı bu yazıyla karşılaştım! Yeni satırları boşluklara dönüştürmek için nasıl bir komut yazacağımı bulmaya çalışıyorum.
Hi-Angel,

2

NORMAL kullanıcılarının dosya isimlerinde yeni satırlar kullandığını hiç görmedim. Asıl amaçlarının (1) saldırganların sisteminizi altüst etmesini ve (2) güvenli programlar yazmayı zorlaştırmak olduğu :-(. Ancak, modern Unix-seviyorlar (Linux gibi) izin veriyor Bu nedenle saldırıya direnen bir program istiyorsanız, onlar için hazırlanmalısınız.

"Shell'deki Dosya Adları ve Pathnames: Nasıl Doğru Yapılır" , bunun doğru şekilde nasıl yapıldığını gösterir.


Ben normal bir kullanıcıyım ve dosya isimlerimde yeni satırlar var. @Sml'nin cevabında belirtilen senaryo bana birden fazla oldu. Benim için ilginç olan, bir dosya adındaki yeni satırın "sistemi alt etmek" için nasıl kullanılabileceği? Bunu açıklayan herhangi bir kaynağınız var mı?
Joseph R.

@JosephR. Bir sistemi tehlikeye
atmanın
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.