Jak usunąć tekst, który istniał w pliku tekstowym bez jego otwierania?
Mam na przykład na myśli, że mam plik hello.txt
z pewnymi danymi tekstowymi i jak mogę wyczyścić cały tekst w tym pliku bez jego otwierania?
Rozumiem przez to, że nie używam żadnego edytora, takiego jak nano, Gedit itp.
command-line
bash
rɑːdʒɑ
źródło
źródło
Odpowiedzi:
Wystarczy otworzyć terminal za pomocą CTRL+ ALT+ Ti wpisać as
to wszystko, twoje dane w tym pliku zostaną wyczyszczone nawet bez ich otwierania.
Przykład:
źródło
stdout
zastępuje istniejący plik, jeśli taki istnieje. W tym przypadku nie ma nicstdout
. Tak więc plik jest zastępowany nieważnością, co w zasadzie powoduje usunięcie ewentualnych danych.Najprostszym sposobem na obcięcie pliku jest przekierowanie wyjścia powłoki no-op command (
:
) do pliku, który chcesz usunąć.źródło
>
), ale na pewno najszybsze. Zastanawiam się, dlaczego nie wspomniano o nim w żadnej z odpowiedzi na to pytanie, które się tuUżyję również przekierowania jak odpowiedzi rajagenupula. Ale jest trochę więcej elastyczności. Otwórz terminal i wpisz,
I naciśnij Ctrl+ C. Wymaże poprzedni plik. Jeśli chcesz aż tak bardzo, jest w porządku.
Jeśli chcesz, możesz wyczyścić plik po wyczyszczeniu. W ten sposób nie tylko możesz wyczyścić plik bez otwierania, ale także możesz napisać kilka wierszy z odpowiednim formatowaniem w pliku. Załóżmy, że po wyczyszczeniu pliku chcesz napisać „Ubuntu to najlepszy system operacyjny”
Następnie naciśnij Ctrl+ C. Teraz poprzedni plik został usunięty. W tym samym czasie słowa są w dwóch wierszach, gdy je umieszczam.
Zobacz przykład:
źródło
>
oznacza przekierowanie.cat > file
zapiszestdout
do pliku, zastępując istniejący plik.Cały czas muszę to robić z plikami dziennika. Najłatwiejszy sposób, jaki znalazłem, to użycie następującego polecenia:
Spowoduje to usunięcie zawartości pliku i pozostanie pustym plikiem bez konieczności otwierania go w edytorze, zaznaczania tekstu i innych tego typu rzeczy. Dokładniej mówiąc, zastępuje zawartość pliku zawartością „/ dev / null” lub niczym. Właściwie jest to całkiem sprytne.
Jedynym zastrzeżeniem jest to, że użytkownik, którego jesteś aktualnie zalogowany, musi mieć uprawnienia do zapisu do wspomnianego pliku.
źródło
Jeśli plik został utworzony o nazwie hello.txt i zawierał niektóre teksty, poniższe polecenie w terminalu ctrl+ alt+ tusunie cały tekst w pliku hello.txt ,
źródło
Innym podejściem - do pliku
cp
/dev/null
źródło
Nie najkrótsza odpowiedź, ale ...
Ta odpowiedź jest oparta na innej od Super User . Chociaż nie jest to najkrótsze polecenie bash,
truncate
jest najbardziej czytelne dla przeciętnych początkujących:Parametry używane
truncate
tutaj z poleceniem:Wyczyść wszystko oprócz pierwszych 10 000 bajtów
Zaletą
truncate
jest to, że możesz określić, ile chcesz zachować, a nie tylko zero:... obetnie wszystko po pierwszych 10 000 bajtów. Może to być przydatne, jeśli jakiś program oszalał i zrzucił wiele megabajtów danych do małego pliku dziennika:
truncate
polecenie, aby uzyskać rozsądnie większy normalny rozmiar 10 KBźródło
Widzę więc, że do odpowiedzi na to pytanie zastosowano wiele przekierowań;)
Trochę inne podejście do kombinacji: rm i dotyk
( tak ... jeszcze jeden kod! )
Tak więc dzięki temu zestawowi poleceń plik hello.txt nie został otwarty, a na końcu nadal masz plik hello.txt z wyczyszczoną zawartością. Tak jak chciałeś!
źródło
działał dla mnie najlepiej ze względu na konkretne pozwolenie, jakie miał
źródło
vi
jest program i co robią różne parametry i argumenty.