Несколько реально полезных 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 не будет опубликован. Обязательные поля помечены *