Несколько реально полезных 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 символов.

Пожалуй, на сегодня хватит.

Несколько реально полезных bash-уловок: 13 комментариев

  1. где команда-то для пароля? 🙂

    я тут в man bash вычитал, что можно нажать Esc-{ и в командную строку автоматом подставится сокращенный список файлов. Например, если у нас имеется три файла test1, test2, test3, то пишем test, жмём Esc+Shift+[ (получается как раз Esc {) и в командную строку подставляется test{1,2,3}.

    p.s. подписался на твой блог, пиши и дальше в том же духе 🙂

  2. Уведомление: Волшебные alias’ы | Flycat.Info | КОТорый летает сам по себе...

  3. Генератор паролей лучше смотрится так.
    echo $(tr -dc A-Za-z0-9_ < /dev/urandom | head -c8)

    К тому-же в скрипт можно вставить:
    PWD=$(tr -dc A-Za-z0-9_ < /dev/urandom | head -c8)

    или
    TEMPFILE=”/tmp/$(tr -dc A-Za-z0-9_ < /dev/urandom | head -c8).tmp”

    или
    TEMPFILE=”/tmp/$(tr -dc A-Za-z0-9_ < /dev/urandom | head -c8).$USER.$$.tmp”

    c именем пользователя и PID

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *