Несколько реально полезных bash-уловок
По мотивам http://www.shell-fu.org/ . Несколько интересных вещей:
- Избавьтесь от повторения внутри команды. Вот, например, надо зарезервировать файл /usr/src/linux/arch/i385/boot/bzImage в /usr/src/linux/arch/i385/boot/bzImage.old (пример довольно-таки “учебный”). Даже с учётом автодополнения по Tab набор команды cp /usr/src/linux/arch/i385/boot/bzImage /usr/src/linux/arch/i385/boot/bzImage.old – достаточно нуден. Куда проще написать cp /usr/src/linux/arch/i385/boot/bzImage{,.old}. Соответственно, для возврата – cp /usr/src/linux/arch/i385/boot/bzImage{.old,}
- Избавьтесь от повторения в цепочке команд. В набираемой команде можно использовать аргументы предыдущей: вместо первого просто написать !:1 , вместо второго – !:2 , вместо последнего – !:$ . А можно и “одним махом”: !* – сразу все. Обычно так и пишут не заморачиваясь, особенное, если аргумент всего один: !* ведь проще набрать, чем !:1
- И ещё о повторах. Когда нужно несколько раз “прогрепить” несколько раз один файл по разным ключевым словам, имеет смысл писать команду grep “наоборот”: – тогда нажав стрелку вверх, можно сразу править ключевое слово.
- Забытое sudo. Если набрали команду, а она “ругнулась” на права и вы вспомнили, что надо её выполнить через sudo, достаточно набрать sudo !! – команда подставится сама.
- Несколько команд в одну строку. Можно написать несколко команд в одну строку. Причём, если разделить их && – следующая будет выполняться только в случае успешного завершения предыдущей. А если разделить ; – в любом случае.
- Несколько вложенных каталогов. Для создания нескольких вложенных каталогов вовсе необязательно писать mkdir asd ; mkdir asd/ghjk ; mkdir asd/ghjk/qwer. Можно сразу написать mkdir -p asd/ghjk/qwer
- Замечательные клавиши. Ctrl-U – вырезает (в “буфер обмена”) всё от курсора до начала строки, Ctrl-W – вырезает (в “буфер обмена”) одно слово влево, Ctrl-Y – вставляет из “буфера обмена”, Ctrl-A – перейти в начало строки, Ctrl-E – перейти в конец строки. “Буфер обмена” – свой собственный, ни с буфером обмена X, ни, тем более, с Windows через SSH ничего общего не имеет.
- Генератор паролей в одну строку. Команда </dev/urandom tr -dc A-Za-z0-9_ | head -c8 ; echo создаст вполне надёжный пароль из 8 символов.