Uniksowe polecenie, aby opróżnić plik dziennika z „mniej”?

4

Wolę używać „mniej” do czytania plików dziennika. W przeciwieństwie do „ogon -f” mogę zarówno zasad ( Shift + F) stop ( Ctrl + C) i poruszać się w górę i w dół uoraz d, itp

Teraz naprawdę chciałbym mieć możliwość opróżnienia określonego pliku dziennika z programu. Czy to jest możliwe?

Jesper Rønn-Jensen
źródło

Odpowiedzi:

5

Najprostszym sposobem IMHO jest:
!>%
To jest: Znak wyjątku "!", większy znak ">"i znak procentu "%".
Może to pomaga.

Wilk
źródło
czy możesz podać krótkie wyjaśnienie, jak to działa? Nie znam się szczególnie na żadnym z tych znaków?
Jesper Rønn-Jensen
1
Spróbuję. Mój angielski nie jest jednak taki wspaniały. A ponieważ mamy mało miejsca na uwagi, trzeba będzie je podzielić. Tutaj idziemy: „!” / Znak wykrzyknika wywołuje powłokę, aby uruchomić to, co wpisujemy dalej (patrz człowiek mniej). Znak „>” / większy jest poleceniem przekierowania powłoki (patrz man bash). „%” / Znak procentu to nazwa bieżącego pliku (patrz man less). W prostych słowach mówimy mniej, aby „uruchomić powłokę (!) I przekierowanie (>) do tego pliku (%)”. Ale co to przekierowuje? Ponieważ nie podano żadnego pliku, przekierowuje on „standardowe wejście” do pliku. Standardowe wejście jest puste, więc „nic” jest przekierowywane do pliku ...
Wolf
... więc plik - w końcu - ma „nic”. To jest puste. W ten sposób możesz oczyścić wszystkie rodzaje plików. po prostu wpisz „> nazwa_pliku” w linii poleceń, aby opróżnić plik „nazwa_pliku”. Zobacz także „man bash” w sekcji „Redirecting Output” (bash ma długą stronę podręcznika ...) Mam nadzieję, że mogę pomóc.
Wilk
+1 Niezła sztuczka. Również ładnie tajemniczy ;-).
sleske
@Wolf dlaczego nie edytujesz tego wyjaśnienia bezpośrednio w odpowiedzi?
Michael
2

Możesz po prostu nacisnąć, vaby edytować plik w vimie. W vimie powinieneś skończyć na linii, na której ostatnio byłeś, w mniejszym stopniu, więc naciśnięcie Vggdpowinno usunąć z bieżącej pozycji na górę pliku. Z :wqtobą powróć do mniej.

Jednak aplikacja, która zapisuje plik dziennika, może w ogóle tego nie lubić, więc mój przebieg jest różny.

innaM
źródło
1

Najprościej myślę, że prawdopodobnie użyjesz go, ^Zaby umieścić bieżący proces w tle, usunąć pliki i wpisać, fgaby wrócić do procesu. Powiedział, że usunięcie plików dziennika nie jest najlepszym sposobem na radzenie sobie z nimi, znacznie lepiej jest użyć ich logrotatedo kompresji.

Inkaphink
źródło
0

Możesz użyć !cp /dev/null %, aby skrócić aktualnie oglądany plik. Ale, jak zauważyli inni, może nie działać poprawnie (np. Jeśli aplikacja zapisująca plik trzyma plik otwarty zamiast otwierania / pisania / zamykania dla każdego wpisu). Możesz także spróbować !mv -f % %.old && cp /dev/null %, aby przenieść plik z drogi, a następnie go odtworzyć.

Tak czy inaczej, widzę jakieś dziwne zachowanie podczas mniejszych prób. ( Rnie odświeża z dysku, Gnie szuka i wyświetla bieżący EOF (zwykle używany do „wciągania” nowych linii bez wchodzenia w „tryb ogona”), hqGczyta nowe wiersze z pliku, ale dołącza całą zawartość plik na koniec bufora zamiast dodawania nowych linii do końca (plik ma linie 1, potem 1/2, potem 1/2/3 itd. w czasie, mniej może pokazać 1/1/1/2 / 1/2/1/2/3/1/2/3/1/2/3/4/1/2/3/4/1/2/3/4/5 / jeśli robiłem „hqG” dwa razy po każdej nowej linii)).

Wydaje się, że te same problemy występują również w vmetodzie „użyj do obcięcia po edytorze”.

Chris Johnsen
źródło