Jak opróżniać pliki bez ich usuwania w Linux i Unix
Dzisiaj nauczymy się, jak wyczyścić zawartość pliku z poziomu wiersza poleceń, nie usuwając samego pliku w systemach Linux i podobnych do Unix. Opróżnianie plików w Linux może być przydatne, jeśli chcesz zachować uprawnienia i właściciela pliku, ale usunąć całą jego zawartość.
Powody do wyczyszczenia zawartości pliku
Zanim nauczymy się, jak szybko opróżnić plik bez jego usuwania, zrozummy, dlaczego i kiedy jest to przydatne.
Czyszczenie zawartości pliku bez usuwania samego pliku może być ważne z kilku powodów, często związanych z administracją systemu, rejestrowaniem i zarządzaniem aplikacjami:
- Zachowaj uprawnienia i własność pliku: Usunięcie pliku i utworzenie nowego może zmienić jego uprawnienia i własność, w zależności od domyślnych ustawień użytkownika i konfiguracji systemu. Opróżniając plik bez jego usuwania, oryginalne uprawnienia i własność są zachowane, co jest ważne dla plików, które wymagają określonych uprawnień ze względów bezpieczeństwa lub funkcjonalności operacyjnej.
- Utrzymuj dowiązania symboliczne: Jeśli plik jest powiązany z innymi lokalizacjami w systemie poprzez dowiązania symboliczne, usunięcie i ponowne utworzenie pliku przerwałoby te powiązania. Opróżnienie zawartości pliku zachowuje inode, a tym samym powiązania nienaruszone.
- Unikaj zakłóceń w usługach lub aplikacjach: Niektóre aplikacje lub usługi mogą oczekiwać, że plik dziennika lub plik konfiguracyjny będzie zawsze obecny w określonej lokalizacji. Usunięcie pliku, nawet tymczasowo, może spowodować błędy lub zakłócenia. Wyczyść zawartość pliku, aby aplikacja mogła działać płynnie, być może z nowym dziennikiem lub zresetowaną konfiguracją.
- Problemy z blokowaniem plików: W niektórych przypadkach pliki są zablokowane przez procesy, co uniemożliwia ich usunięcie bez zatrzymania procesu. Jeśli musisz wyczyścić zawartość pliku, aby rozpocząć od nowa (tak jak w przypadku rotacji logów), ale nie chcesz lub nie możesz zatrzymać procesu, wyczyszczenie zawartości jest wykonalnym rozwiązaniem.
- Efektywność w zarządzaniu logami: Dla plików dziennika, które z czasem rosną, powszechną praktyką jest okresowe czyszczenie ich zawartości (rotacja logów), aby zwolnić miejsce na dysku, jednocześnie utrzymując system w działaniu bez przerwy. Zautomatyzowane skrypty mogą regularnie czyścić pliki dziennika bez konieczności ich ponownego tworzenia, zapewniając, że usługi zapisujące do tych plików nie zawiodą z powodu ich braku.
Niezależnie od powodu, jeśli kiedykolwiek chciałeś wyczyścić zawartość pliku bez jego usuwania w systemie Linux, oto kilka sposobów, aby to zrobić.
7 sposobów na opróżnianie plików w systemie Linux z poziomu wiersza poleceń
Poniższe 7 metod wyczyści zawartość Twojego pliku bez usuwania samego pliku.
1. Używanie przekierowania >:
Operator > w systemach Linux i Unix służy do przekierowywania. Gdy jest używany z nazwą pliku, przekierowuje wyjście polecenia do pliku. Jeśli nie podano żadnego polecenia, efektywnie przekierowuje „nic” do pliku, tym samym czyszcząc jego zawartość. Jest to prosty sposób na opróżnienie zawartości pliku w Linux, przy zachowaniu samego pliku.
> file.txtZastąp file.txt własnym.
2. Używanie polecenia truncate:
Polecenie truncate zostało specjalnie zaprojektowane do zmiany rozmiaru pliku.
Aby wyczyścić zawartość pliku za pomocą polecenia truncate, uruchom:
truncate -s 0 file.txtUstawiając rozmiar na 0 bajtów za pomocą opcji -s 0, skutecznie usuwasz całą zawartość pliku, nie naruszając jego istnienia ani jego metadanych, takich jak uprawnienia i właściciel.
3. Używanie polecenia echo z przekierowaniem:
Polecenie echo jest zwykle używane do wyświetlania linii tekstu/łańcucha znaków, który jest przekazywany jako argument. W połączeniu z opcją -n (która zapobiega dodaniu znaku nowej linii) oraz przekierowaniem (>) do pliku, zastępuje zawartość pliku niczym, tym samym opróżniając plik. Ta metoda jest tak prosta jak użycie bezpośredniego przekierowania, ale obejmuje polecenie (echo).
echo -n > file.txt4. Używanie polecenia cp z /dev/null:
Polecenie cp służy do kopiowania plików lub katalogów. Kopiując /dev/null do pliku, w zasadzie zastępujesz zawartość pliku zawartością /dev/null (która jest zawsze pusta), tym samym czyszcząc plik.
cp /dev/null file.txtTa metoda jest przydatna dla skryptów i programów, które wymagają, aby plik pozostał dostępny z tymi samymi uprawnieniami i właścicielem.
5. Używanie polecenia sed:
Aby usunąć wszystkie linie z pliku o nazwie file.txt używając polecenia sed, wykonaj:
sed -i d file.txtOto, co robi każda część polecenia:
-i: Ta opcja mówised, aby edytował pliki na miejscu. Oznacza to, żesedbezpośrednio zmodyfikuje wskazany plik, zamiast tylko wyświetlać zmodyfikowany tekst na konsoli.d: To poleceniesed, które oznacza „usuń”. Służy do usuwania wierszy z wejścia.file.txt: To jest nazwa pliku, który chcesz zmodyfikować.
6. Korzystanie z edytora Vim:
Możesz usunąć zawartość dużego pliku używając edytora vim.
Otwórz plik za pomocą edytora vim:
vim file.txtNaciśnij przycisk Esc i wpisz następujące:
:1,$dWpisanie :1,$d w Vim wykonuje polecenie usunięcia wszystkich linii w całym pliku. Oto podział tego, co każda część polecenia robi:
:: To wprowadza tryb wiersza poleceń w Vim.1: Określa to zakres. W tym przypadku1oznacza, że polecenie rozpocznie się od pierwszej linii pliku.,: To oddziela zakres. Przecinek jest używany do oznaczenia zakresu od punktu początkowego do punktu końcowego.$: Oznacza to ostatnią linię pliku.d: To polecenie do usunięcia.
Więc, :1,$d mówi Vimowi, aby usunął wszystkie linie od pierwszej do ostatniej w pliku. Po wykonaniu tej komendy plik będzie pusty.
7. Używanie polecenia dd:
Polecenie dd jest narzędziem do kopiowania danych na niskim poziomie, które może kopiować i konwertować dane między plikami, urządzeniami lub partycjami.
Kopiując dane z /dev/null do pliku (of=file.txt), w istocie zapisujesz zero bajtów do pliku, czyszcząc jego zawartość. To trochę przesada w tym zadaniu, ale jest przydatne ze względu na swoją wszechstronność.
dd if=/dev/null of=file.txtściągawka
Wniosek
W tym poradniku omówiliśmy pięć różnych metod wiersza poleceń na opróżnienie zawartości pliku bez jego usuwania w systemie Linux. Te polecenia pozwalają zachować uprawnienia pliku, właściciela i linki symboliczne, jednocześnie resetując jego zawartość.
Niezależnie od tego, czy zarządzasz plikami dziennika, resetujesz pliki konfiguracyjne, czy po prostu musisz opróżnić plik do innego użytku, te narzędzia zapewniają łatwy i szybki sposób, aby to zrobić.
