Czy próbowałeś kiedyś otworzyć plik w edytorze, aby dowiedzieć się, że zawiera on nieczytelną zawartość binarną?
Polecenie "łańcuchy" w Linuksie umożliwia wyświetlanie znaków czytelnych dla człowieka w dowolnym pliku.
Głównym celem użycia polecenia "struny" jest ustalenie, jakiego rodzaju pliku szukasz, ale możesz również użyć go do wyodrębnienia tekstu. Na przykład, jeśli masz plik z autorskiego programu, który zapisuje pliki w dziwnym formacie binarnym, możesz użyć "ciągów", aby wyodrębnić tekst, który umieściłeś w pliku.
Przykładowe użycie polecenia Ciągi
Doskonałym sposobem na zademonstrowanie mocy polecenia string jest utworzenie dokumentu za pomocą programu LibreOffice Writer.
Po prostu otwórz program LibreOffice Writer i wprowadź tekst, a następnie zapisz go w standardowym formacie ODT.
Teraz otwórz okno terminala (naciśnij CTRL, ALT i T w tym samym czasie), a następnie użyj polecenia cat, aby wyświetlić plik w następujący sposób:
cat yourfilename.odt | więcej
(Zastąp plik nazwa_pliku.odt nazwą utworzonego pliku)
To, co zobaczysz, to cała ściana nieczytelnego tekstu.
Naciśnij klawisz spacji, aby przewinąć plik. Sporadycznie w całym pliku zobaczysz część wprowadzonego tekstu.
Polecenie strun może służyć do wyświetlania tylko tych części, które są czytelne dla człowieka.
W najprostszej postaci możesz uruchomić następujące polecenie:
ciągi nazwa_pliku.odt | więcej
Tak jak poprzednio, pojawi się ściana tekstu, ale tylko tekst, który można odczytać jako człowiek. Jeśli masz szczęście, będziesz mógł zobaczyć swój tekst.
To, co będzie można zobaczyć, jest kluczowe, jednak znajduje się w pierwszej linii:
mimetypeapplication / vnd.oasis.opendocument.text
Wiemy, że typ pliku to plik ODT programu LibreOffice Writer z 2 powodów:
- Stworzyliśmy plik
- Rozszerzenie to .ODT
Wyobraź sobie, że nie utworzyłeś pliku lub znalazłeś plik na odzyskanym dysku, a plik nie ma rozszerzenia.
Odzyskiwanie systemu Windows często odzyskiwałoby pliki o nazwach takich jak 0001, 0002, 0003 itd. Fakt, że pliki zostały odzyskane jest wspaniały, ale próba ustalenia, jakie typy tych plików były koszmarem.
Używając łańcuchów masz szansę walczyć o wypracowanie typu pliku. Wiedząc, że plik jest plikiem opendocument.text, możesz go zapisać z rozszerzeniem ODT i otworzyć w pisarzu LibreOffice.
Jeśli nie wiesz, że plik ODT jest w zasadzie skompresowany. Jeśli zmienisz nazwę pliku.odt na swoją nazwę pliku.zip, możesz otworzyć go w narzędziu do archiwizacji, a nawet rozpakować plik.
Alternatywne zachowania
Domyślnie komenda ciągi zwraca wszystkie ciągi w pliku, ale możesz zmienić zachowanie tak, aby zwracało łańcuchy z zainicjowanych, załadowanych sekcji danych w pliku.
Co to dokładnie oznacza? Nikt nie wydaje się wiedzieć.
Sensowne jest założenie, że używasz ciągów znaków, aby spróbować znaleźć typ pliku lub wyszukać konkretny tekst w pliku.
Jeśli podczas uruchamiania polecenia łańcuchy przy użyciu domyślnego zachowania nie uzyskasz oczekiwanego wyniku, spróbuj uruchomić jedno z poniższych poleceń, aby sprawdzić, czy to robi różnicę:
Strona podręcznika informuje, że powyższe polecenie może pomóc w zmniejszeniu ilości śmieci zwracanych przez łańcuchy. Komendę "łańcuchy" można skonfigurować tak, aby działała odwrotnie, tak aby przełącznik minus d był domyślnym zachowaniem. Jeśli tak jest w twoim systemie, możesz zwrócić wszystkie dane za pomocą następującego polecenia: Możesz uzyskać tekst w wynikach, aby wyświetlić nazwę pliku obok każdego wiersza tekstu. Aby to zrobić, uruchom jedno z następujących poleceń: Wynik będzie teraz wyglądał mniej więcej tak: Jako część wyjścia możesz również wyświetlić przesunięcie miejsca, w którym tekst pojawia się w pliku. Aby to zrobić, uruchom następujące polecenie: Dane wyjściowe będą wyglądały mniej więcej tak: Przesunięcie jest w rzeczywistości przesunięciem ósemkowym, chociaż w zależności od tego, w jaki sposób skompilowane zostały ciągi znaków dla twojego systemu, może to być również przesunięcie szesnastkowe lub dziesiętne. Bardziej dokładnym sposobem uzyskania pożądanego przesunięcia jest użycie następujących poleceń: Wartość minus t oznacza przesunięcie, a następujący znak określa rodzaj przesunięcia. (tj. d = dziesiętny, o = ósemkowy, h = hex). Domyślnie komenda ciągi drukuje każdy nowy ciąg w nowej linii, ale można ustawić separator do wyboru. Na przykład, aby użyć symbolu potoku ("|") jako ogranicznika, uruchom następujące polecenie: Polecenie smings domyślnie szuka ciągu 4 drukowanych znaków z rzędu. Możesz dostosować wartość domyślną tak, aby zwracała tylko ciąg znaków składający się z 8 znaków do wydrukowania lub 12 znaków do wydrukowania. Dostosowując ten limit, możesz dostosować dane wyjściowe, aby uzyskać jak najlepszy wynik. Szukając zbyt długiego ciągu, ryzykujesz pominięcie użytecznych tekstów, ale jeśli je skrócisz, możesz otrzymać dużo więcej śmieci. Aby dostosować ograniczenie ciągu, uruchom następujące polecenie: W powyższym przykładzie zmieniłem limit na 8.Możesz zastąpić 8 wybranym numerem. Możesz również użyć następującego polecenia, aby zrobić to samo: Domyślnie polecenie string zawiera białe znaki, takie jak tabulatory lub spacje jako znaki do wydrukowania. Dlatego jeśli masz ciąg znaków, który brzmi "Kot siedział na macie", polecenie "ciągi" zwróci cały tekst. Nowe znaki linii i znaki powrotu karetki nie są domyślnie uważane za znaki drukowalne. Aby uzyskać ciągi znaków rozpoznawania nowych znaków linii i znaków powrotu karetki jako znaków, które można drukować, uruchom ciągi w następujący sposób: Dostępnych jest 5 opcji kodowania do użycia z ciągami: Wartością domyślną jest 7-bitowy bajt. Aby zmienić kodowanie uruchom następujące polecenie: W powyższym poleceniu podałem domyślne "s", co oznacza 7-bitowy bajt. Po prostu zamień litery "s" na wybraną literę kodowania. Możesz zmienić zachowanie łańcuchów, tak aby używał innej biblioteki deskryptorów plików binarnych, niż ta, która została dostarczona dla twojego systemu. Ta zmiana jest dla ekspertów. Jeśli masz inną bibliotekę do użycia, możesz to zrobić, uruchamiając następujące polecenie: Jeśli zamierzasz używać tych samych opcji za każdym razem, nie będziesz musiał określać wszystkich przełączników za każdym razem, gdy uruchomisz polecenie, ponieważ wymaga to czasu. Możesz utworzyć plik tekstowy za pomocą nano i określić opcje w tym pliku. Aby wypróbować to w terminalu, uruchom następujące polecenie: W pliku wpisz następujący tekst: Zapisz plik, naciskając CTRL i O, i wyjdź, naciskając CTRL i X. Aby uruchomić polecenia łańcuchów za pomocą tych opcji, uruchom następujące polecenie: Opcje będą czytane z pliku stringsopts i powinieneś zobaczyć nazwę pliku przed każdym łańcuchem, przesunięciem i "|" jako separator. Jeśli chcesz przeczytać więcej o łańcuchach, możesz uruchomić poniższe polecenie, aby uzyskać pomoc. Możesz również przeczytać stronę podręcznika: Aby znaleźć wersję uruchomionych łańcuchów, uruchom jedno z następujących poleceń:ciągi -d nazwa-pliku
ciągi --data nazwafilmowastring -a nazwa pliku
Formatowanie danych wyjściowych
ciągi -f twoja nazwa pliku
ciągi --print-file-name nazwa-plikunazwapliku: fragment tekstu
yourfilename: kolejny fragment tekstuciągi -o nazwa pliku
16573 twoje
17024 tekst
ciągi -t d nazwafilwy
ciągi -t o swoją nazwę plikuciągi -t h nazwa plikuciągi -s "|" nazwa twojego pliku
Dostosuj limit ciągów
ciągi -n 8 nazwa-pliku
ciągi --bytes = 8 yourfilename
Uwzględnij Whitespace
ciągi -w nazwie pliku
Zmień kodowanie
łańcuchy -s nazwa pliku
ciągi --encoding = s nazwa pliku Zmień nazwę opisu pliku binarnego
ciągi -T bfdname
Odczytywanie opcji z pliku
nano stringsopts
-f -o -n 3 -s "|"
ciągi @stringsopts yourfilename
Otrzymywać pomoc
ciągi - pomoc
struny człowieka
Dowiedz się, która wersja ciągów jest uruchomiona
ciągi -v
ciągi -Vciągi --version