Czytanie i Wyszukiwanie w Plikach

Witaj ponownie.
W poprzedniej lekcji nauczyłeś się tworzyć, kopiować, przenosić, zmieniać nazwy i usuwać pliki.
Teraz czas zajrzeć do środka.
Bo pliki nie są dekoracją. Są pojemnikami na informacje.
Czasem przydatne informacje.
Czasem logi.
Czasem plik konfiguracyjny, który wygląda, jakby napisał go czarodziej podczas burzy.
Czego Się Nauczysz
W tej lekcji nauczysz się:
- wyświetlać zawartość pliku za pomocą
cat; - czytać długie pliki za pomocą
less; - oglądać początek pliku za pomocą
head; - oglądać koniec pliku za pomocą
tail; - wyszukiwać tekst w plikach za pomocą
grep; - unikać otwierania ogromnych plików jak odważny, ale zagubiony wojownik.
Misja
Twoja misja jest prosta:
Stworzyć kilka plików tekstowych, przeczytać je, sprawdzić i wyszukać w nich informacje.
Zamieniamy terminal w narzędzie detektywa.
Lupa nie jest wymagana.
Dramatyczny kapelusz opcjonalny.
Stwórz Plik do Ćwiczeń
Najpierw przejdź do folderu ćwiczeń:
cd ~/terminal-practice
Jeśli folder nie istnieje, stwórz go:
mkdir -p ~/terminal-practice
cd ~/terminal-practice
Teraz stwórz plik story.txt:
touch story.txt
Możesz otworzyć go w edytorze tekstu albo szybko stworzyć z terminala:
echo "Linux is powerful." > story.txt
echo "The terminal is direct." >> story.txt
echo "Practice makes everything easier." >> story.txt
echo "Errors are messages, not monsters." >> story.txt
Teraz masz plik z kilkoma liniami tekstu.
Czytanie Pliku za Pomocą cat
Aby wyświetlić cały plik w terminalu, użyj:
cat story.txt
Powinieneś zobaczyć:
Linux is powerful.
The terminal is direct.
Practice makes everything easier.
Errors are messages, not monsters.
cat jest przydatny dla małych plików.
Przy dużych plikach może zalać terminal tekstem, jakby ktoś otworzył fabrykę makaronu w twoim ekranie.
Używaj go mądrze.
Czytanie Długich Plików za Pomocą less
Dla dłuższych plików użyj:
less story.txt
W środku less możesz się poruszać:
- naciśnij
Space, aby zejść niżej; - naciśnij
b, aby wrócić; - naciśnij
/, aby szukać; - naciśnij
q, aby wyjść.
Tak, q oznacza quit.
To ważne.
Wiele osób było uwięzionych w less dłużej, niż chce przyznać.
Początek Pliku za Pomocą head
Aby zobaczyć pierwsze linie pliku, użyj:
head story.txt
Domyślnie head pokazuje pierwsze 10 linii.
Aby pokazać tylko pierwsze 2 linie:
head -n 2 story.txt
To przydatne, gdy chcesz szybko zrozumieć, o czym jest plik.
Jak przeczytanie pierwszej strony instrukcji przed decyzją, żeby ją całkowicie zignorować.
Koniec Pliku za Pomocą tail
Aby zobaczyć ostatnie linie pliku, użyj:
tail story.txt
Aby pokazać tylko ostatnie 2 linie:
tail -n 2 story.txt
tail jest bardzo przydatny dla logów, bo nowe informacje zwykle pojawiają się na końcu.
Na przykład:
tail -f app.log
Opcja -f śledzi plik na żywo.
Pokazuje nowe linie, gdy się pojawiają.
Bardzo przydatne.
I lekko hipnotyczne.
Wyszukiwanie w Pliku za Pomocą grep
Aby wyszukać tekst w pliku, użyj grep.
Szukaj słowa terminal:
grep "terminal" story.txt
Powinieneś zobaczyć:
The terminal is direct.
Szukaj Errors:
grep "Errors" story.txt
Powinieneś zobaczyć:
Errors are messages, not monsters.
grep to jedna z najbardziej przydatnych komend terminala.
Szybko znajduje tekst.
Jak Ctrl+F, tylko z mocniejszą kawą.
Wyszukiwanie Bez Rozróżniania Wielkości Liter
Domyślnie grep rozróżnia wielkie i małe litery.
To znaczy, że errors i Errors to różne rzeczy.
Spróbuj:
grep "errors" story.txt
Możesz nic nie zobaczyć.
Teraz spróbuj:
grep -i "errors" story.txt
Opcja -i ignoruje wielkość liter.
Znacznie lepiej.
Linux jest surowy, ale czasem możemy poprosić go, żeby się rozluźnił.
Pokazywanie Numerów Linii
Aby pokazać numery linii, użyj:
grep -n "terminal" story.txt
Możesz zobaczyć:
2:The terminal is direct.
To przydatne, gdy chcesz znaleźć, gdzie coś się pojawia.
Zwłaszcza w plikach konfiguracyjnych, logach albo kodzie.
Wyszukiwanie w Wielu Plikach
Stwórz kolejny plik:
echo "The terminal can search many files." > notes.txt
echo "Learning Linux step by step is smart." >> notes.txt
Teraz szukaj we wszystkich plikach .txt:
grep "terminal" *.txt
Możesz zobaczyć wyniki z więcej niż jednego pliku.
Tutaj grep zaczyna wyglądać jak supermoc.
Nie efektowna supermoc.
Raczej cichy bibliotekarz, który potrafi znaleźć wszystko w trzy sekundy.
Częste Błędy
Używanie cat na ogromnych plikach
To może być irytujące:
cat very-large-file.log
Jeśli plik jest ogromny, terminal może wypełnić się niekończącym tekstem.
Użyj:
less very-large-file.log
albo:
tail very-large-file.log
Bądź mądry. Nie walcz ze smokiem logów za pomocą łyżki.
Zapominanie cudzysłowów
To jest dobrze:
grep "terminal" story.txt
Dla prostych słów to też może działać:
grep terminal story.txt
Ale jeśli szukany tekst ma spacje, użyj cudzysłowów:
grep "Practice makes" story.txt
Cudzysłowy trzymają słowa razem.
Bez nich shell może źle cię zrozumieć.
Shell jest potężny, ale nie czyta w myślach.
Szukanie z niewłaściwą wielkością liter
Jeśli to nic nie znajduje:
grep "errors" story.txt
spróbuj:
grep -i "errors" story.txt
Wielkość liter ma znaczenie, chyba że każesz grep ją ignorować.
Praktyka
Spróbuj tego:
cd ~/terminal-practice
cat story.txt
less story.txt
head -n 2 story.txt
tail -n 2 story.txt
grep "terminal" story.txt
grep -i "errors" story.txt
grep -n "Practice" story.txt
Potem odpowiedz:
- Która komenda pokazuje cały plik?
- Która komenda jest lepsza dla długich plików?
- Która komenda pokazuje pierwsze linie?
- Która komenda pokazuje ostatnie linie?
- Która komenda wyszukuje tekst w plikach?
Mini Wyzwanie
Stwórz plik linux-notes.txt z tymi liniami:
Linux is stable.
The terminal is useful.
Commands can be combined.
Practice every day.
Do not fear errors.
Potem:
- Pokaż cały plik.
- Pokaż tylko pierwsze 2 linie.
- Pokaż tylko ostatnie 2 linie.
- Wyszukaj słowo
terminal. - Wyszukaj słowo
errors, ignorując wielkość liter. - Pokaż numer linii, w której pojawia się
Practice.
Używaj tylko komend terminala.
Bez myszy.
Mysz zaczyna czuć się bezrobotna.
Podsumowanie
Dzisiaj nauczyłeś się, że:
catpokazuje zawartość pliku;lessotwiera pliki w przewijanym widoku;headpokazuje początek pliku;tailpokazuje koniec pliku;tail -fśledzi plik na żywo;grepwyszukuje tekst w plikach;grep -iignoruje wielkość liter;grep -npokazuje numery linii.
Teraz potrafisz czytać i przeszukiwać pliki z terminala.
To duży krok.
Bo kiedy potrafisz szukać, przestajesz być zagubiony i zaczynasz być niebezpieczny.
W dobrym sensie.
Przeważnie.
Następna Lekcja
W następnej lekcji porozmawiamy o uprawnieniach i sudo.
To moment, w którym Linux zaczyna mówić:
“Nie.”
A my uczymy się dlaczego.