Упрощаем себе жизнь в bash

on 5/07/2012 01:56:00 PM in
  Временами наступает момент когда ввод километровых команд с аргументами вконец заябывает и угнетает. Для лечения этого недуга в bash'е есть замечательный выход - псевдонимы, aliases.
Помимо того что можно тупо создавать ярлыки на длиннющие кишки, можно писать вполне клевые и крутые функции которые заставят ахнуть от дальнейшего использования этих фичей. 
    Итак, вот что можно сварганить без особых напрягов:
(я например свалил  все у себя в ~/.bash_aliases)

   alias ssh-srv='ssh -p 2322 nobody@somewhere.in.hell.gov'
   alias ssh-ftp='ssh -v root@megaftp.br'

ну и так далее, без особых фантазий...
   Далее сама интригующая часть связанная с функциями. Никакой маги конечно нет, используются те же команды оболочки но их можно чудесным образом комбинировать и агрегировать в нечто действительное простое и легкое для использования.
   Вот например как можно одной командой залезть в директорию и сразу же вывести путь того куда мы попали: 

# переход в директорию и вывод локации
cdpwd() {
    builtin cd $1
    pwd
}
   Это может быть удобным для перемещения по файловой системе если часто используются относительные пути и есть желание удостоверится что находимся мы именно там где и рассчитывали:
cdpwd ../mime
   По такому сценарию можно сделать псевдоним функции создающую директорию с мгновенным перемещением в нее:
# создать директорию с последующим переходом в нее
mkcd () {
    mkdir -p "$1"
    cd "$1"
}
    Юзаем просто  - mkcd  ~/someshit
    Так же можно создавать куда более путевые примочки, например наш "собственный универсальный распаковщик":
# распаковщик
extract() {
    if [ -f $1 ] ; then
        case $1 in
          *.tar.bz2)   tar xvjf $1       ;;
          *.tar.gz)    tar xvzf $1        ;;
          *.bz2)       bunzip2 $1       ;;
          *.rar)       unrar x $1         ;;
          *.gz)        gunzip $1          ;;
          *.tar)       tar xvf $1           ;;
          *.tbz2)      tar xvjf $1         ;;
          *.tgz)       tar xvzf $1         ;;
          *.zip)       unzip $1            ;;
          *.Z)         uncompress $1   ;;
          *.7z)        7z x $1               ;;
          *)       echo "'$1' cannot be extracted using >extract<" ;;
        esac
    else
        echo "'$1' is not a valid file"
    fi
}
   Теперь особо не следует заботится о типе архива и ключи которые нужны для распаковки, главное чтобы все используемые утилиты были установлены в системе.
   Напоследок то что мне очень упрощает жизнь учитывая то что в течении дня может возникнут необходимость залезть на одни из штук 30 серверов(учитывая что доступ куда то может быть по root или доменной учетке):
letmein () {
        ssh nobody@"$1"
}
 или
letroot () {
        ssh root@"$1"
}
    В итоге получается все до безобразия коротко и четко:
letmein Valhalla  -> OK :)
   Таким образом можно весьма удобно обжить свою оболочку и она вам улыбнется прелестной улыбкой.

Технологии Blogger.

Copyright © 2012 Чердачек Drakkart'a All rights reserved.