Найти тему
Tominoff

Несколько удобных bash алиасов для разработчика

Алиасы в *nix системах это короткие имена для сокращения длинных команд. Очень удобно привязать к какой нибудь часто используемой команде короткое имя и использовать его.

Думаю самый популярный алиас — это ll. В современных дистрибутивах GNU/Linux он частенько прописан в bashrc по умолчанию после установки ОС и представляет собой просто ls -alF.

Сами алиасы как правило прописаны либо в ~/.bashrc, либо в собственном файле ~/.bash_alias, подключаемом в bashrc.

Подключение bash_alias можно произвести вручную в текущей сессии с помощью команды source ~/.bash_alias

Также убедитесь что в вашем .bashrc/.zshrc они также подключаются:

[[ -s ${HOME}/.bash_alias ]] && source ${HOME}/.bash_alias

Алиас представляет собой вызов встроенной команды alias с передачей ей аргумента вида: сокращение='команда'

Пример алиаса:

alias ll='ls -alF'

Я много и часто работаю в терминале и со временем выработал себе несколько удобных сокращений команд, которые таскаю с собой из системы в систему и хочу поделиться накопленными наработками с вами.

Кстати, мои дотфайлы можешь найти на флике — https://gitflic.ru/project/ikenfin/dotfiles, там все основные конфиги которые кочуют со мной из ОС в ОС с помощью программы chezmoi.

Алиасы общего назначения

Алиасов общего назначения у меня немного — указанный ранее ll и пара дополнительных трюков:

  • alias ll='ls -alFh' # Более информативный вывод для ls
  • alias la='ls -A' # Выводит скрытые файлы/папки, кроме . и ..
  • alias duh='du -sh * | sort -h' # выводит список каталогов с их размерами, отсортированный по возрастанию (duh -r выведет с сортировкой по убыванию)
  • alias md='function () { mkdir -p "$@"; cd "$_"; }' # создать каталог и перейти в него, например md 1/2/3/4/5

Алиасы Git

Когда-то давно я смотрел выступление Mike McNeil (создатель nodejs фреймворка sailsjs) и подметил интересную команду gls - у него это был простой алиас над git status. В общем-то тогда я, пожалуй, и узнал про алиасы.

Вот список простых алиасов для git:

  • alias gad='git add'
  • alias gcm='git commit -m'
  • alias gca='git commit --amend'
  • alias gp='git push'
  • alias gpl='git pull'
  • alias gls='git status -s .'
  • alias gck='git checkout'
  • alias gbra='git branch'
  • alias gbr='git branch --show-current'
  • alias gdf='git diff'
  • alias gdfc='git diff --cached'

Кроме простых обёрток, я сделал пару небольших скриптов, например алиас rgls позволяет вывести на экран статус репозитория для каждой папки в текущем каталоге, а rgbr выведет информацию о ветках — бывает удобно, когда работаешь с кучей репозиториев, быстро проверить все репозитории разом:

Прогоняет gls/gbr во всех вложенных в текущую папках
Прогоняет gls/gbr во всех вложенных в текущую папках

rgls, как и rgbr использует команду find и в параметре -exec проверяет является ли каталог git репозиторием — если это так, то запускает команду.

Алиас для rgls:

alias rgls="find ./ -maxdepth 1 -type d -not -path '\.*/' -exec sh -c '([ -d {}/.git ] && echo {} && git -C {} status -s)' \;"

Алиас для rgbr:

alias rgbr="find ./ -maxdepth 1 -type d -not -path '\.*/' -exec sh -c '([ -d {}/.git ] && echo -ne \"{}\t\" && git -C {} branch --show-current | column -t)' \;"

Алиасы Docker

Для докера я использую довольно простые алиасы, но они действительно экономят много времени:

  • alias dx='docker exec -ti'
  • alias dps='docker ps'
  • alias dcx='docker-compose exec'
  • alias dcu='docker-compose up'
  • alias dcd='docker-compose down'
  • alias dce='docker-compose exec'
  • alias dcs='docker-compose start'
  • alias dcps='docker-compose ps'
  • alias dcl='docker-compose logs'
  • alias dclf='docker-compose logs -f --tail=50'