В ОС Linux есть интересные способы выполнения рутинной работы из командной строки Linux более интереснее и это еще и экономит время системному администратору.
Одна, из действительно приятных вещей в работе с командной строкой Linux, заключается в том, что вы можете очень быстро выполнить большую часть однотипной работы. Зная основные команды и немного разбираясь в работе с командной строкой, вы можете избавить себя от утомительной повседневной работы. В этой статье вы познакомитесь с несколькими полезными приемами, которые помогут облегчить вашу трудовую деятельность и, возможно, сделать ее более приятной.
Очистка файлов с помощью знака >
Каждый раз, когда у вас есть файл, который необходимо очистить, потому что он стал слишком большим или данные больше не нужны, вы можете сделать это с помощью команды > filename . Это намного быстрее, чем удаление файла и его восстановление с исходными разрешениями. Знак > , за которым следует имя файла, работает так же, как при вводе команды cat /de null> filename , но на удивление быстро. Он очищает файл, но оставляет без изменений разрешения и права собственности.
$ ls -l bigfile
-rw-r--r--. 1 shs shs 8956108 Mar 23 10:00 bigfile
$ > bigfile
$ ls -l bigfile
-rw-r--r--. 1 shs shs 0 Mar 23 10:50 bigfile
В файле ничего не меняется, кроме размера и времени последнего обновления.
Операция> довольно часто используется для очистки слишком большого файла журнала, особенно если он не перезаписывается системой.
Сохранение изменений в файл, принадлежащий пользователю root
Иногда возникает необходимость отредактировать системный файл, но вы забыли запустить текстовый редактор (vi или vim) с использованием команды sudo. И вы, получается выполнили команду vi (или vim ) без sudo , только для того, чтобы обнаружить, что затем не можете сохранить внесенные изменения. Но вам не нужно начинать все заново! Вместо этого вы можете нажать клавишу : , как если бы вы собирались сохранить файл, а затем введите следующее:
w !sudo tee %
Вам будет предложено ввести пароль (как и в случае любой команды sudo) и будет предложено подтвердить ваше намерение перезаписать файл, но вам не придется повторять все внесенные вами изменения. После сохранения файла нажмите клавишу ввода, выйдите с помощью: q! (изменения уже внесены), и все готово.
Одна команда для копирования файла в несколько мест
Команды, подобные показанной ниже, позволяют запускать команду несколько раз, не вводя ее повторно. В этом случае команда echo отправляет список расположений файловой системы в xargs , который затем запускает команду cp для каждого из них. Аргумент -v заставляет cp показать, что он делает. Замените список местоположений (например, mesto 1 ...) вашими целевыми каталогами.
$ echo mesto1 mesto2 mesto3 | xargs -n 1 cp -v filename
В этом примере будут выполняться следующие команды:
cp -v filename mesto1
cp -v filename mesto2
cp -v filename mesto 3
Аргументы mesto следует заменить на пути файловой системы (например, /usr/local). Если целевые каталоги не те, в которые вы можете писать без использования sudo, используйте вместо этого такую команду:
$ echo mesto1 mesto2 mesto3 | sudo xargs -n 1 cp -v filename
Вот пример использования root -доступа для копирования файла в несколько домашних каталогов:
$ echo /home/nemo /home/mesto /home/shark | sudo xargs -n 1 cp -pv sksta
'sksta' -> '/home/nemot/ sksta'
'sksta' -> '/home/lolap/ sksta'
'sksta' -> '/home/sharky/ sksta'
Эта команда использует sudo для копирования файлов в целевые каталоги, но это не требуется для перечисления каталогов и передачи их команде xargs.
Обратите внимание, что такую команду также было бы очень легко превратить в alias , поскольку только последний аргумент - имя файла - нужно будет изменять по мере его использования. Вот пример такого alias:
$ alias cp2dirs="echo /home/nemot /home/lolap /home/sharky | sudo xargs -n 1 cp -pv"
Чтобы использовать этот alias , вам нужно будет только предоставить файл, который нужно скопировать, и указать свой пароль, когда вас попросят указать часть alias sudo .
$ cp2dirs filenamenew
[sudo] password for you:
Используя аналогичную стратегию, вы можете создать alias , который копирует файл в каждый домашний каталог вашей системы. Однако файлы сохранят свои разрешения, владельца и назначения групп, если вы не выполните операции chown или chmod . Вот пример alias:
alias cp2all='find /home -maxdepth 1 -type d | tail -n +2 | grep -v lost+found | sudo xargs -n 1 cp -pv'
Этот alias cp 2 all работает, создавая список домашних каталогов (избегая самого / home и каталога lost + found в случае, если / home является отдельной файловой системой), а затем копирует указанный файл в каждый из них. Это может привести к перезаписи существующих файлов с тем же именем, поэтому будьте осторожны.
А у вас есть варианты оптимизации работы в ОС Linux?