Иногда, работая с файлами в терминале Linux, вы можете захотеть очистить содержимое файла, не открывая его обязательно с помощью редакторов командной строки Linux. Как этого добиться? В этой статье мы рассмотрим несколько различных способов очистки содержимого файла с помощью некоторых полезных команд.
Внимание : прежде чем мы перейдем к рассмотрению различными способами, обратите внимание, что, поскольку в Linux все является файлом, вы всегда должны убедиться, что файл (ы), который вы очищаете, не являются важными пользовательскими или системными файлами. Очистка содержимого критически важной системы или файла конфигурации может привести к фатальной ошибке или сбою приложения/системы.
С учетом сказанного ниже приведены способы очистки содержимого файла из командной строки.
Важно : для целей этой статьи мы использовали файл access.log
в следующих примерах.
1. Очистить содержимое файла путем перенаправления на Null
Самый простой способ очистить содержимое файла с помощью перенаправления оболочки null
(несуществующий объект) в файл, как показано ниже :
#> access.log
2. Пустой файл с использованием перенаправления команды true
Здесь мы будем использовать символ :
– это встроенная команда оболочки, которая по сути эквивалентна команде true
и может использоваться как безоперационная (без операции).
Другой Метод заключается в перенаправлении вывода встроенной команды :
или true
в файл следующим образом:
#:> access.logOR # true> access.log
3. Пустой файл Использование утилит cat/cp/dd с/dev/null
В Linux устройство null
в основном используется для отбрасывания нежелательных выходных потоков процесса , или как подходящий пустой файл для входных потоков. Обычно это выполняется с помощью механизма перенаправления.
Поэтому файл устройства /dev/null
является специальным файлом, который записывает (удаляет) любой ввод, отправленный на он или его вывод такие же, как и у пустого файла.
Кроме того, вы можете очистить содержимое файла, перенаправив на него вывод /dev/null
(файл) в качестве ввода с помощью команды cat:
# cat/dev/null> access.log
Затем мы будем использовать команду cp для очистки содержимого файла, как показано.
# cp/dev /null access.log
В следующей команде if
означает входной файл, а of
относится к выходному файлу.
# dd if =/ dev/null of = доступ. log
4. Очистить файл с помощью команды echo
Здесь вы можете использовать команду echo с пустой строкой и перенаправить ее в файл следующим образом:
# echo ""> доступ .logOR # echo> access.log
Примечание . Помните, что пустая строка не то же самое, что и null. Строка уже является объектом, поскольку она может быть пустой, тогда как null просто означает отсутствие объекта.
По этой причине, когда вы перенаправляете команду out of echo выше в файл, и просмотрите содержимое файла с помощью команды cat, он печатает пустую строку (пустую строку).
Чтобы отправить нулевой вывод в файл, используйте флаг -n
, который сообщает echo не выводить завершающую новую строку, которая ведет к пустой строке, созданной в предыдущей команде.
# echo -n ""> доступ. log
5. Очистить файл с помощью команды усечения
Команда truncate помогает уменьшить или увеличить размер файла до определенного размера.
Вы можете использовать его с параметром -s
, который указывает размер файла. Чтобы очистить содержимое файла, используйте размер 0 (ноль), как в следующей команде:
# truncate -s 0 access.log
На этом пока что, в этой статье мы рассмотрели несколько методов очистки или опустошения содержимого файла. с помощью простых утилит командной строки и механизма перенаправления оболочки.
Вероятно, это не единственные доступные практические способы сделать это, поэтому вы также можете сообщить нам о любых других методах, не упомянутых в этом руководстве, через отзывы раздел ниже.
Есть ли способ очистить половину файла вместо полной очистки?
Полная очистка:
#> file # cat/dev/null> file
Предположим, мне нужен файл с последним 10 дней журналов и возможность удаления/очистки старше 10 дней (я не хочу архивировать этот файл и заменять новый файл для свежих журналов), могу ли я очистить половину файла в файле?
Ответить
@Vinod
Должен быть способ, но мы должны провести небольшое исследование по этому поводу, прежде чем мы сможем предложить вам решение.
Ответ
Уважаемые, у меня есть файл журнала, в котором у меня есть журналы за 3 месяца, как я могу просто сохранить журнал за последние 30 дней и остаток для удаления. Как это сделать?
Как указать это условие, если размер файла журнала увеличивается на 2 ГБ, а затем очищаются данные месячной давности ..
Ответ
@shujauddin Qureshi,
Вам нужно будет сделать это через задание cron. ты знаком с cron? Вы должны написать сценарий, сохранить его где-нибудь, а затем запустить его через cron.
Сценарий должен обрабатывать логику разбора файла на строки, анализировать дату в каждой строке, а затем отбросьте строки с датой старше 30 дней.
Ответ
Как удалить содержимое (файлы и каталоги) в одной папке за один раз.
# cp/dev/null/filefolder/Many files. # echo '' 'Проблема заключается в том, что файл автоматически создается или удаляется (динамический файл создается)
Ответ
Я знаю, что
>
и:>
- это методы, которые очищают файл без фактического «касания» это, если файл уже используется.Остальные методы работают так же? Мы всегда получаем билеты для больших файлов, и в 80% случаев нам нужно сжать содержимое файла и усечь или «обнулить» его, но проблема заключается в том, что файл уже используется, и мы не можем остановить процесс, использующий его. .
На данный момент я использовал только методы перенаправления, упомянутые в начале моего сообщения.
Ответ
@Lokiyo,
Всем известно, что
Ответ>
и:>
- стандартные параметры для очистки содержимого большого файла, не касаясь его. Но есть и другие методы, которые работают так же, как показано в этой статье, я думаю, вам стоит попробовать и посмотреть ..
Когда я открыл эту ссылку, я ожидал способов фактически избавиться от содержимого файла на диске. Все эти методы только отключают дисковое пространство от файла, оставляя содержимое на диске.
Ответить
Однако из перечисленных вариантов я думаю, что «truncate -s 0» - лучший вариант.
Система опустила слово «файл» в конце команды усечения, потому что я поместил его в знаки lt и gt.
Ответ
@James
Существуют и другие методы полного удаления содержимого файла с диска, такие как команда shred и некоторые другие. Вскоре мы создадим практическое руководство по этой теме.
Ответ
Другой простой вариант с использованием команды cat:
Ответьте
cat>/path/to/file
Затем нажмите Ctrl + D
Вуаля, пустой файл.
@Mike
Большое спасибо за полезные совет, это тоже очень просто.
Ответьте
все трюки с перенаправлением «>» одинаковы!
> file
:> файл
true> файл
cat/dev/null> файл
my_prog> файл (если my_prog не выводит результат), потому что оболочка обрезать (или создать) «файл» перед запуском команды (cat, true,…), наиболее важным является то, что команда не выводит ничего !!!
вы можете понять, что> file - это лучший, потому что для него не нужна другая программа!
Ответ
@Bruno
Это правда, основная идея заключается в использовании механизма перенаправления. Мы просто предлагаем различные альтернативы, которые пользователь может выбрать для использования, хотя они больше похожи на одинаковые.
Ответить