Strings komut ile bir dosyanın yazdırılabilir karakterleri göstermek nasıl

Hiç bir okunaklı ikili içerik içerdiğini öğrenmek için bir editörde bir dosya açmayı denediniz mi?

Linux "dizeleri" komutu, insan tarafından okunabilir karakterleri herhangi bir dosyada görüntülemeyi mümkün kılar.

"Dizeleri" komutunu kullanmanın asıl amacı, aradığınız dosya türünü bulmaktır, ancak metin ayıklamak için de kullanabilirsiniz. Örneğin, garip bir ikili formatta dosyaları kaydeden özel bir programdan bir dosya varsa, dosyaya koyduğunuz metni çıkarmak için "dizeleri" kullanabilirsiniz.

Dizeler Komutunun Örnek Kullanımı

Dizeler komutunun gücünü göstermek için harika bir yol LibreOffice Writer kullanarak bir belge oluşturmaktır.

LibreOffice Writer'ı açın ve bir metin girin ve standart ODT formatında kaydedin.

Şimdi bir terminal penceresi açın (CTRL, ALT ve T'ye aynı anda basın) ve ardından dosyayı aşağıdaki gibi görüntülemek için cat komutunu kullanın:

cat yourfilename.odt | Daha

(Kendi dosya adınızı, oluşturduğunuz dosyanın adıyla değiştirin.)

Göreceğiniz şey, okunaksız bir metnin bütün duvarıdır.

Dosyada ilerlemek için boşluk çubuğuna basın. Dosya boyunca sporadik olarak girdiğiniz metnin bir kısmını göreceksiniz.

Dizeler komutu, sadece okunabilir kısımları görüntülemek için kullanılabilir.

En basit haliyle, aşağıdaki komutu çalıştırabilirsiniz:

dizeleri yourfilename.odt | Daha

Daha önce olduğu gibi, bir metin duvarı görünecek, ancak sadece insan olarak okuyabileceğiniz bir metin. Eğer şanslıysanız, metninizi görebileceksiniz.

Bununla birlikte, bunun ne olduğunu görebileceksiniz, ilk sıradadır:

mimetypeapplication / vnd.oasis.opendocument.text

Dosya türünün 2 nedenden dolayı bir LibreOffice Writer ODT dosyası olduğunu biliyoruz:

  1. Dosyayı oluşturduk
  2. Uzantı .ODT

Dosyayı oluşturmadığınızı veya dosyayı kurtarılmış bir diskte bulduğunuzu ve dosyanın bir uzantısının olmadığını hayal edin.

Windows kurtarma genellikle 0001, 0002, 0003 gibi isimlerle dosyaları kurtarabilir. Dosyaların kurtarıldığı gerçektir, ancak bu dosyaların türlerinin ne olduğu hakkında bir kabus olduğu sonucuna varmaya çalışıyorum.

Dizeleri kullanarak dosya türünü çalışma konusunda bir savaş şansınız olur. Bir dosyanın bir opendocument.text dosyası olduğunu bilmek, bunu ODT uzantısıyla kaydedip LibreOffice yazıcısında açabileceğiniz anlamına gelir.

Bir ODT dosyasının temelde sıkıştırılmış bir dosya olduğunu bilmiyorsanız. Eğer dosya isminizi kendi isminiz ile değiştirirseniz, bir arşivleme aracında açabilir ve hatta dosyayı açabilirsiniz.

Alternatif Davranışlar

Varsayılan olarak, dizeler komutu bir dosya içindeki tüm dizeleri döndürür, ancak davranışı, dosyadaki başlatılmış, yüklenmiş veri bölümlerinden dizeleri döndürecek şekilde değiştirebilirsiniz.

Bu tam olarak ne anlama geliyor? Kimse bilmiyor gibi gözüküyor.

Dosya türünü bulmak ya da bir dosyada belirli bir metni aramak için dizeleri kullandığınızı varsaymak mantıklıdır.

Varsayılan davranışı kullanarak dizge komutunu çalıştırırken, beklediğiniz çıktısını almazsanız, aşağıdaki farklardan birini çalıştırmayı deneyin: Bir fark yaratıp yaratmadığını görmek için:

dizeleri -d dosya adınız

dizeleri --data dosya adınız

Kılavuz sayfası, yukarıdaki komutun dizelerden döndürülen çöp miktarını azaltmaya yardımcı olabileceğini belirtir.

"Dizeler" komutu, eksi d anahtarının varsayılan davranış olması için tersine çalışmak üzere ayarlanabilir. Sisteminizde bu durumda, aşağıdaki komutu kullanarak tüm verileri döndürebilirsiniz:

dizeler-dosya adınız

Biçimlendirme Çıkışı

Metnin her satırının yanında dosyanın adını görüntülemek için çıktı içindeki metni alabilirsiniz.

Bunu yapmak için aşağıdaki komutlardan birini çalıştırın:

dizeleri -f dosya adınız

dizgiler - print-file-name yourfilename

Çıkış şimdi böyle bir şeye benzeyecek:

dosya adınız: bir metin parçası

dosya adınız: başka bir metin parçası

Çıktının bir parçası olarak, bir metnin bir dosyada nerede göründüğü ofsetini de görüntüleyebilirsiniz. Bunu yapmak için şu komutu çalıştırın:

dizeleri-dosya adınız

Çıkış böyle bir şeye benzeyecek:

16573

17024 metin

Ofset, sisteminiz için dizelerin nasıl derlendiğine bağlı olarak, sekizlik veya ondalık sapma olarak da kolayca okunabilir olsa da, aslında sekizlik ofsettir.

İstediğiniz ofseti elde etmenin daha doğru bir yolu, aşağıdaki komutları kullanmaktır:

dizeleri -td dosya adınız

dizgiler-dosya isminize

dizeler-dosya isminiz

Eksi, ofseti döndürmek anlamına gelir ve aşağıdaki karakter ofset tipini belirler. (yani d = ondalık, o = sekizlik, h = altıgen).

Varsayılan olarak, dizeler komutu her yeni dizeyi yeni bir satıra yazdırır, ancak seçtiğiniz sınırlayıcıyı ayarlayabilirsiniz. Örneğin, sınırlayıcı olarak bir boru sembolü ("|") kullanmak için aşağıdaki komutu çalıştırın:

dizgiler -s "|" DosyaAdınız

Dize Limitini Ayarla

Dizeleri varsayılan olarak komut satırı, bir satırda 4 yazdırılabilir karakter dizisi arar. Varsayılanı, yalnızca 8 yazdırılabilir karakter veya 12 yazdırılabilir karakter içeren bir dize döndürecek şekilde ayarlayabilirsiniz.

Bu limiti ayarlayarak, mümkün olan en iyi sonucu elde etmek için çıkışı uyarlayabilirsiniz. Çok uzun olan bir ipi arayarak, yararlı bir metni atlamayı riske atıyorsunuz ama bunu çok kısa yaparak, geri döndüğünüzden çok daha fazla önemsiz olabilirsiniz.

Dize sınırını ayarlamak için aşağıdaki komutu çalıştırın:

dizeleri -n 8 dosya adınız

Yukarıdaki örnekte limiti 8 olarak değiştirdim.

Seçiminizi 8 ile değiştirebilirsiniz.

Aynı şeyi yapmak için aşağıdaki komutu da kullanabilirsiniz:

dizeleri --bytes = 8 dosya adınız

Whitespace'i dahil et

Varsayılan olarak, dizeler komutu, bir sekme veya yazdırılabilir karakter olarak boşluk gibi beyaz boşluk içerir. Bu nedenle "kedi matın üzerine oturmuş" olarak okuyan bir dizgeye sahipseniz, dizge komutu tüm metni döndürür.

Yeni satır karakterleri ve satırbaşları, varsayılan olarak yazdırılabilir karakterler olarak kabul edilmez.

Dizeleri yeni satır karakterlerini tanımak ve satırbaşları aşağıdaki şekilde yazdırılabilir karakter dizisi olarak döndürmek için:

dizeler -w dosya adınız

Kodlamayı Değiştir

Dizelerle kullanım için 5 kodlama seçeneği vardır:

Varsayılan 7 bit bayttır.

Kodlamayı değiştirmek için aşağıdaki komutu çalıştırın:

dizeleri -es dosya adınız

dizeler --encoding = s dosya adınız

Yukarıdaki komutta, 7 bit bayt anlamına gelen varsayılan "s" değerini belirledim. "S" yi seçtiğiniz kodlama harfiyle değiştirin.

İkili Dosya Açıklaması Adını Değiştirin

Dizelerin davranışını, sisteminiz için sağlanandan farklı bir ikili dosya tanımlayıcı kitaplığı kullanacak şekilde değiştirebilirsiniz.

Bu anahtar uzmanlar içindir. Kullanmak için başka bir kitaplığınız varsa, aşağıdaki dizeleri çalıştırarak bunu yapabilirsiniz:

dizeleri -T bfdname

Bir Dosyadan Okuma Seçenekleri

Her seferinde aynı seçenekleri kullanacaksanız, komutun her çalıştırılışında tüm anahtarları belirtmek zorunda kalmazsınız çünkü zaman alır.

Yapabilecekleriniz nano kullanarak bir metin dosyası oluşturmak ve bu dosya içindeki seçenekleri belirtmektir.

Bunu bir terminal içinde denemek için aşağıdaki komutu çalıştırın:

nano dizeleri

Dosyada aşağıdaki metni girin:

-f -o -n 3 -s "|"

CTRL ve O tuşlarına basarak dosyayı kaydedin ve CTRL ve X tuşlarına basarak çıkın.

Dizeler komutlarını bu seçeneklerle çalıştırmak için aşağıdaki komutu çalıştırın:

dizeleri @stringsopts dosya adınız

Seçenekler, dosya dizelerinden okunacak ve her bir dizeden, ofsetten ve "|" önce dosya adını görmelisiniz. Bir ayırıcı olarak.

Yardım almak

Dizeler hakkında daha fazla bilgi edinmek isterseniz, yardım almak için aşağıdaki komutu çalıştırabilirsiniz.

dizeleri - yardım

Alternatif olarak manuel sayfayı da okuyabilirsiniz:

adam dizeleri

Çalıştırdığınız Dizelerin Hangi Sürümü Bulduğunu Öğrenin

Çalıştığınız dizelerin sürümünü bulmak için aşağıdaki komutlardan birini çalıştırın:

dizeleri -v

dizeleri -V

dizeleri --version