Комментарии 87
18. Очистка содержимого файла без удаления самого файла
для этих целей я использую «echo > filename»
Если вы хотите очистить содержимое текстового файла, не удаляя сам файл, можете использовать следующую команду:
filename
я такой команды в CentOS 6 и 7 не нашел.
: > filename
18. Очистка содержимого файла без удаления самого файла
для этих целей я использую «echo > filename»
Продвинутые админы используют:
truncate -s 0 filename
12. Повторное использование последнего элемента из предыдущей команды с помощью !$
Еще можно нажатие Alt +. (точка)
18. Очистка содержимого файла без удаления самого файла
Можно просто
>filename
yes |
выводит y, но выводить можно всё что угодно, например:
yes yes |
yes n |
ll
— это не команда, а алиас к ls -l
. Чуть больше рассказать про алиасы было бы многократно полезнее, чем рассказать про ll
, который не предустановлен во многих дистрибутивах.
Тоже ожидал увидеть что-то новое, а на самом деле компиляция элементарных приемов, которым уже 20+ лет, и которые бесчисленное количество раз тиражировались начиная с Linux HOWTOs (кто еще помнит такие) и первых Linux журналов.
Когда выдают экономию в один-два символа в команде cd за прием, который сэкономит уйму времени — мне хочется плакать. Вот подстановка имени файла по табу экономит много больше усилий и это реально качественный скачок на иной уровень.
cd ~
Потому что это указание на домашнюю папку пользователя.
~ без имени пользователя = текущий пользователь.
А вот cd ~user1 — зайти в домашнюю папку user1, например /home/user1 (или что у него прописано в /etc/passwd)
«В подобной ситуации полезным окажется разделитель команд; (точка с запятой). При таком подходе вы можете ввести несколько команд в одной строке. При этом, в отличие от обычного ввода команд, для выполнения следующей команды не надо ждать завершения предыдущей.
command_1; command_2; command_3»
Неверно. команды будут выполняться последовательно, после завершения предыдущей.
Они же не в фоне запускаются (& в конце)
tail -f /var/log/file.log | ccze -A
apt-get moo
как про это могли забыть?
А ещё, если вы делаете tail -f ... | grep onething | awk '{print $1}'
, то по умолчанию буферизация будет блочная у grep
и вы будете видеть результаты большой задержкой. Чтобы всё же вернуть построчную буферизацию, нужно указать grep
дополнительный --line-buffered
:
tail -f ... | grep --line-buffered onething | awk '{print $1}'
$ python #тычем CTRL+C >>> KeyboardInterrupt >>> KeyboardInterrupt #CTRL+D $ $ bc #тычем CTRL+C (interrupt) use quit to exit. ^C (interrupt) use quit to exit. ^C (interrupt) use quit to exit. ^C (interrupt) use quit to exit. ^C quit $
И это не единственные примеры, насколько я знаю.
Ага, из telnet так вообще надо выходить путем ввода Ctrl+]
и только потом quit
:). А из SSH ещё круче: ~.
(тильда точка)
Причём если вы подключились по SSH, а оттуда ещё по SSH и хотите завершить вложенный SSH, то надо вводить ~~.
Если подключились 2 раза по SSH, то ~~~~.
и так далее :).
Если в момент пропадания связи набирались символы, то без enter-а не выйдет
Причин тому много и самая очевидная — многопоточность скрипт, а потоки с в неизвестном месте обрывать ну очень плохая идея.
11. Использование команды less для чтения файлов
Протестировал только что, в отличие от more после нажатия q выведенный кусок файла пропадает из консоли. More удобнее, можно просто прокрутить терминал назад и снова увидеть нужный кусок файла. Такое бывает нужно.
Конечно, less позволяет сразу редактировать, но если в дистре есть less то есть и nano или mcedit которые для редактирования удобнее.
15. Копирование и вставка в терминале Linux
Более того, можно и enter скопировать, сместив во время выделения курсор в начало следующей строки.
Less также позволяет выполнять поиск назад, а не только вперед, фильтр строк и многое другое.
А more — просто постраничный вывод вперед, с возможностью поиска только вперед. И с автоматическим выходом по окончании файла
А ещё в less можно уже после открытия файла выключить word-wrap путем нажатия -S<Enter>
(минус S, и потом Enter). Позволяет удобно просматривать
логи с длинными строками.
Если терминал «испортился» и показывает странные символы, то его зачастую можно починить, набрав <Enter>reset<Enter>
(на самом деле просто выполнить команду reset) — у терминала на самом деле есть 2 «раскладки» и это использовалось задолго до изобретения UTF-8 для того, чтобы рисовать псевдографику. Команда reset
сбрасывает терминал близко к оригинальным настройкам и зачастую может «починить» терминал, который «сошел с ума».
с помощью комбинации клавиш Ctrl + A можно перейти в начало строки, а с помощью комбинации Ctrl + E — в конец.
да, удобная вещь, когда в Putty (в mc) Home и End не работают…
Если команда выполняется на переднем плане и вы хотите из неё выйти, можете нажать клавиши Ctrl + C для того, чтобы её остановить.
Ctrl-C отправляет SIGINT сигнал, который вызывает завершение процесса.
Ctrl-Z отправляет SIGTSTP сигнал, который приостанавливает выполнение процесса. Продолжить выполнение можно командой fg (от foreground)
14. Использование псевдонимов для исправления ошибок ввода
Cразу вспомнил забавную утилиту thefuck
C ней было бы так:
$ gerp
zsh: command not found: gerp
$ fuck
grep [enter/↑/↓/ctrl+c]
20 приёмов работы в командной строке Linux bash, которые сэкономят уйму времени.
Или не сэкономят. Все зависит от того, что за работа будет делаться и в каком окружении. Иногда проще открыть еще одну вкладку в терминале — чтобы не экономить символы в команде cd. Иногда проще запустить файл-менеджер, чтобы не продираться с помощью tab. Иногда проще закрыть терминал вместе с зависшей сессией (2 раза в год бывает такое), чем вспоминать заклинание для ssh.
Представьте себе, что хотите собрать код, а затем, если сборка оказалась успешной, вызвать make
?
Помоему, данная последовательность действий ничего полезного из себя не представляет. Второй пункт, скорее всего, нужно заменить на что-то типа "запустить тесты".
Или, может, под "сборкой проекта" вы подразумевали процесс генерации Makefile'а?
в чём состоит тонкость использования команды для вывода содержимого директории. Все знают, что для этой цели служит команда ls -l.
А как же dir?
А так — разделение на окна, кроме виртуальных вкладок, и поддержка командной строки, что позволяет автоматизировать переход в разные режимы, плюс внятный статус бар, плюс отсутствие глюков с терминалом — этого уже более чем достаточно.
for i in 1 2 3; do ssh root@cassandra$i.example.com /opt/cassandra/bin/nodetool status; done
Для копирования файлов, проверки статуса софта по нескольким серверам отлично подходят.
20 приёмов работы в командной строке Linux, которые сэкономят уйму времени