Wyszukiwanie w witrynie

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:

  1. 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.
  2. 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.
  3. 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ą.
  4. 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.
  5. 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.txt

Zastą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.txt

Ustawiają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.txt

4. 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.txt

Ta 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.txt

Oto, co robi każda część polecenia:

  • -i: Ta opcja mówi sed, aby edytował pliki na miejscu. Oznacza to, że sed bezpośrednio zmodyfikuje wskazany plik, zamiast tylko wyświetlać zmodyfikowany tekst na konsoli.
  • d: To polecenie sed, 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.txt

Naciśnij przycisk Esc i wpisz następujące:

:1,$d

Wpisanie :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 przypadku 1 oznacza, ż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

Puste pliki bez ich usuwania w Linuksie i Uniksie

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ć.