Linux'ta Komut Dizileri Nasıl Kullanılır

Yayınlanan: 2022-01-29
Bir dizüstü bilgisayarda Linux terminali
Fatmawati Achmad Zaenuri/Shutterstock.com

Bir ikili dosya veya veri dosyası içindeki metni görmek ister misiniz? Linux strings komutu, "dizeler" adı verilen metin parçalarını sizin için dışarı çeker.

Linux, sorun arayışında çözüm gibi görünebilecek komutlarla doludur. strings komutu kesinlikle o kampa giriyor. Sadece amacı nedir? Bir ikili dosyadan yazdırılabilir dizeleri listeleyen bir komutun bir anlamı var mı?

Bir adım geriye gidelim. Program dosyaları gibi ikili dosyalar, insan tarafından okunabilen metin dizeleri içerebilir. Ama onları nasıl göreceksin? cat veya less kullanırsanız, asılı bir terminal penceresiyle karşılaşmanız olasıdır. Metin dosyalarıyla çalışmak üzere tasarlanmış programlar, bunların içinden yazdırılamayan karakterler beslenirse iyi bir şekilde başa çıkamazlar.

Bir ikili dosyadaki baytların çoğu insan tarafından okunamaz ve herhangi bir anlam ifade edecek şekilde terminal penceresine yazdırılamaz. Alfasayısal karakterlere, noktalama işaretlerine veya boşluklara karşılık gelmeyen ikili değerleri temsil edecek hiçbir karakter veya standart sembol yoktur. Bunlar toplu olarak "yazdırılabilir" karakterler olarak bilinir. Geri kalanlar “yazdırılamayan” karakterlerdir.

Bu nedenle, metin dizeleri için bir ikili dosya veya veri dosyasında görüntülemeye veya arama yapmaya çalışmak bir sorundur. İşte burada strings girer. Dosyalardan yazdırılabilir karakter dizilerini çıkarır, böylece diğer komutlar yazdırılamayan karakterlerle uğraşmak zorunda kalmadan dizeleri kullanabilir.

dizeleri kullanma Komut

strings komutunda karmaşık bir şey yoktur ve temel kullanımı çok basittir. strings aramasını istediğimiz dosyanın adını komut satırında veriyoruz.

Reklamcılık

Burada, "jibber" adı verilen bir ikili dosyada (çalıştırılabilir bir dosyada) dizeleri kullanacağız. strings , bir boşluk, "jibber" yazıp Enter'a basıyoruz.

 dizeler gevezelik 

Dizeler dosyadan çıkarılır ve terminal penceresinde listelenir.

Minimum Dizi Uzunluğunu Ayarlama

Varsayılan olarak, dizeler dört karakter veya daha uzun olan dizeleri arayacaktır. Daha uzun veya daha kısa bir minimum uzunluk ayarlamak için -n (minimum uzunluk) seçeneğini kullanın.

Minimum uzunluk ne kadar kısa olursa, daha fazla önemsiz görme şansınızın o kadar yüksek olduğunu unutmayın.

Bazı ikili değerler, yazdırılabilir bir karakteri temsil eden değerle aynı sayısal değere sahiptir. Bu sayısal değerlerden ikisi dosyada yan yana olursa ve minimum iki uzunluk belirtirseniz, bu baytlar bir dizeymiş gibi rapor edilir.

Reklamcılık

strings minimum uzunluk olarak iki kullanmalarını istemek için aşağıdaki komutu kullanın.

 dizeler -n 2 jibber 

Artık sonuçlara dahil edilen iki harfli dizilerimiz var. Boşlukların yazdırılabilir bir karakter olarak sayıldığını unutmayın.

Daha Az Geçişli Boru Hatları

strings gelen çıktının uzunluğu nedeniyle, onu less aracılığıyla aktaracağız. Daha sonra ilgilenilen metni arayan dosyada gezinebiliriz.

 ipler jibber | az 

Liste artık bizim için less olarak sunuluyor ve listenin üst kısmı ilk önce görüntüleniyor.

Nesne Dosyaları ile dizeleri kullanma

Tipik olarak, program kaynak kodu dosyaları, nesne dosyalarına derlenir. Bunlar, ikili yürütülebilir bir dosya oluşturmak için kitaplık dosyalarıyla bağlantılıdır. Elimizde jibber nesne dosyası var, o yüzden o dosyanın içine bir göz atalım. “.o” dosya uzantısına dikkat edin.

 jibber.o | az 

Sekiz karakterden uzunlarsa, ilk dize kümesinin tümü sekizinci sütuna sarılır. Sarılmışlarsa, dokuzuncu sütunda bir "H" karakteri vardır. Bu dizeleri SQL ifadeleri olarak tanıyabilirsiniz.

Reklamcılık

Çıktıyı kaydırmak, bu biçimlendirmenin dosya boyunca kullanılmadığını ortaya çıkarır.

Nesne dosyası ile tamamlanmış yürütülebilir dosya arasındaki metin dizilerindeki farklılıkları görmek ilginçtir.

Dosyada Belirli Alanlarda Arama Yapma

Derlenmiş programların kendi içlerinde metin depolamak için kullanılan farklı alanları vardır. Varsayılan olarak, strings metin arayan tüm dosyayı arar. Bu, -a (tümü) seçeneğini kullanmış gibisiniz. Dizelerin yalnızca dosyada başlatılmış, yüklenmiş veri bölümlerinde arama yapmasını sağlamak için -d (veri) seçeneğini kullanın.

 dizeler -d jibber | az 

İyi bir nedeniniz yoksa, varsayılan ayarı kullanabilir ve tüm dosyayı arayabilirsiniz.

Dize Ofsetini Yazdırma

strings , her bir dizenin bulunduğu dosyanın başlangıcından itibaren ofseti yazdırmasını sağlayabiliriz. Bunu yapmak için -o (ofset) seçeneğini kullanın.

 dizeler -o parse_phrases | az 

Ofset Octal cinsinden verilir.

Ofsetin ondalık veya onaltılık gibi farklı bir sayısal tabanda görüntülenmesini sağlamak için -t (radix) seçeneğini kullanın. Taban seçeneğinin ardından d (ondalık), x (onaltılık) veya o (Sekizlik) gelmelidir. -to kullanmak, -o kullanmakla aynıdır.

 dizeler -td parse_phrases | az 

Ofsetler artık ondalık olarak yazdırılır.

 dizeler -tx parse_phrases | az 

Ofsetler artık onaltılı olarak yazdırılır.

Boşluk dahil

strings , sekme ve boşluk karakterlerini bulduğu dizelerin parçası olarak kabul eder. Yeni satırlar ve satır başları gibi diğer boşluk karakterleri, dizelerin parçasıymış gibi değerlendirilmez. -w (boşluk) seçeneği, dizelerin tüm boşluk karakterlerine dizenin parçalarıymış gibi davranmasına neden olur.

 dizeler -w add_data | az 

Reklamcılık

İkinci satırın sonundaki (görünmez) satır başı ve yeni satır karakterlerinin bir sonucu olan boş satırı çıktıda görebiliriz.

Dosyalarla Sınırlı Değiliz

strings , bir bayt akışı olan veya üretebilen herhangi bir şeyle kullanabiliriz.

Bu komut ile bilgisayarımızın rasgele erişim belleğine (RAM) bakabiliriz.

/dev/mem'e eriştiğimiz için sudo kullanmamız gerekiyor. Bu, bilgisayarınızın ana belleğinin bir görüntüsünü tutan bir karakter aygıt dosyasıdır.

 sudo dizeleri /dev/mem | az 

Liste, RAM'inizin tüm içeriği değildir. Sadece ondan çıkarılabilen dizelerdir.

İLGİLİ: Linux'ta "Her Şey Bir Dosyadır" Ne Demektir?

Aynı Anda Birçok Dosyayı Arama

Joker karakterler, aranacak dosya gruplarını seçmek için kullanılabilir. * karakteri birden çok karakteri temsil eder ve ? karakter herhangi bir tek karakteri temsil eder. Komut satırında birçok dosya adı sağlamayı da seçebilirsiniz.

Reklamcılık

Bir joker karakter kullanacağız ve /bin dizinindeki tüm yürütülebilir dosyaları arayacağız. Listeleme birçok dosyanın sonuçlarını içereceğinden, -f (dosya adı) seçeneğini kullanacağız. Bu, her satırın başında dosya adını yazdıracaktır. Daha sonra her bir dizenin hangi dosyada bulunduğunu görebiliriz.

Sonuçları grep aracılığıyla aktarıyoruz ve "Telif hakkı" kelimesini içeren dizeleri arıyoruz.

 diziler -f /bin/* | grep Telif hakkı 

/bin dizinindeki her dosya için her satırın başında dosyanın adıyla birlikte telif hakkı bildirimlerinin düzgün bir listesini alırız.

çözülmüş dizeler

Dizelerin gizemi yoktur; tipik bir Linux komutudur. Çok spesifik bir şey yapar ve bunu çok iyi yapar.

Bu, Linux'un diğer bir çarkıdır ve diğer komutlarla çalışırken gerçekten canlanır. İkili dosyalar ve grep gibi diğer araçlar arasında nasıl oturduğunu gördüğünüzde, bu biraz belirsiz komutun işlevselliğini takdir etmeye başlarsınız.

İLGİLİ: Geliştiriciler ve Meraklılar için En İyi Linux Dizüstü Bilgisayarlar