Создание алиасов в оболочке Bash

Алиасы это...

Алиас представляет собой сокращенное имя консольной команды или даже серии команд. Алиас можно представить как ярлык (ссылку), который вызывает команду.

Алиасы помогут вам сэкономить огромное количество времени при наборе длинных и сложных команд, в результате чего работа с консолью станет более простой и быстрой. Также запомнив одно короткое слово - имя алиаса, вам не придется больше вспоминать то как должна набираться та или иная сложная команда.

Создание временных алисов

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

Для создания временного алиаса выполните в терминале команду - alias [name]="[command]", где [name] - имя алиаса, а [command] - команда, которую вы хотите выполнить с помощью алиаса.

Для примера давайте создадим простой алиас команды перехода в корневой каталог:

alias g="cd /"

Теперь чтобы убедится, что алиас создался и готов к использованию, найдем его в списке алиасов набрав простую команду - alias без аргументов:

alias
Список доступных алиасов
Список доступных алиасов

Теперь для того чтобы выполнить переход в корневой каталог достаточно выполнить в консоли команду - g:

g
Результат выполнения алиаса - g
Результат выполнения алиаса - g

Создание постоянных алиасов

Для создания постоянных алиасов, которые не будут удаляться после перезагрузки терминала, необходимо записать их в специальный скрытый файл - ~/.bashrc, который представляет собой обычный bash-скрипт исполняемый каждый раз при открытии терминала. 

Так как ~/.bashrc - текстовый файл, то его можно отредактировать в любом текстовом редакторе, я буду использовать редактор gedit, вы же можете использовать удобный для вас редактор будь то nano, vim или любой другой.

Для начала редактирования выполните команду ниже:

gedit ~/.bashrc

В самом конце файла добавьте нужный вам алиас и сохраните изменения. Каждый новый алиас должен начинаться с новой строки.

Добавление алиасов в файл .bashrc
Добавление алиасов в файл .bashrc

Однако сразу после сохранения алиас работать не будет, так как для применения новых настроек нужно заново выполнить файл ~/.bashrc. Для этого либо просто перезагрузите консоль или выполните обновление настроек с помощью следующей команды:

. ~/.bashrc

Теперь ваш только что добавленный алиас будет выполняться.

Важно чтобы рядом со знаком - = не было пробелов, т.е. такая запись недопустима - alias g = 'cd /'

Не забывайте, что вы из-за незнания какой либо команды можете переопределить ее алиасом. Так, например, если создать алиас - alias mkdir='echo "wrong alias!"', то вместо попытки создания каталога с помощью команды mkdir, в консоли будет выполняться алиас, который в нашем случае, будет показывать сообщение - "wrong alias!".

Удаление алиасов

Для удаления алиаса на время сессии терминала - выполните команду ниже:

unalias aliasname

Чтобы удалить постоянный алиас нужно всего лишь удалить соответствующую строку в файле ~/.bashrc или ~/.bash_aliases, в зависимости от того где он находится. Затем перезагрузить консоль или выполнить обновление настроек следующей командой:

. ~/.bashrc

Создание отдельного файла для алиасов

Для того чтобы уменьшить риск работы с файлом ~/.bashrc, и просто для удобства - можно создать отдельный файл ~/.bash_aliases, в котором будут храниться все ваши алиасы.

Для этого убедитесь, что в файле ~/.bashrc есть код данный ниже, если же его нет то просто вставьте его в конец файла.

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

Далее создаем файл, в котором будут отдельно храниться алиасы. И записываем туда алиасы точно также как мы делали это в ~/.bashrc.

gedit ~/.bash_aliases
Добавление алиасов в файл .bash_aliases
Добавление алиасов в файл ~/.bash_aliases

После обновляем файл ~/.bashrc и наши алиасы готовы к постоянному использованию.

. ~/.bashrc

Если вы хотите чтобы ваш список алиасов был доступен не только вам, но и всем пользователям системы, то в таком случае этот список нужно добавить в каталог /etc/profile.d с расширением .sh.

Скопируем наш файл с алиасами в каталог /etc/profile.d не забыв указать расширение .sh.

cp ~/.bash_aliases /etc/profile.d/aliases.sh

Созданный файл aliases.sh будет читаться системой при каждом запуске оболочки BASH. Чтобы изменения вступили в силу нужно перезапустить оболочку.

exec bash

Теперь ваши алиасы будут доступны для всех пользователей при каждом входе в систему.

Как временно отключить работу алиаса?

Если вы используете алиас, который совпадает с именем команды и вам нужно ненадолго его отключить не удаляя его, то в этом вам поможет символ - \. Поставьте обратный слэш перед командой и она выполнится проигнорировав при этом одноименный алиас.

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

alias free='free -th'

Но нам нужно вызвать команду free без флагов, в таком случае поставьте перед free обратный слэш.

\free

Список полезных алиасов для CentOS и Ubuntu

Далее я представлю свой список алиасов, которые упрощают мне работу в консоли. Вы можете их полностью скопировать к себе в конец файла ~/.bashrc или лучше в ~/.bash_aliases. Знаком - # обозначены комментарии.

# Файлы
alias sl="ls"
alias ll="ls -lah"               # Показать скрытые файлы с читаемыми размерами
alias l.="ls -d .*"              # Показать только скрытые файлы и папки
alias lf="ls -p | grep -v /"     # Показать только файлы
alias ld="ls -d */"              # Показать только директории
alias lt="ls -lhart"             # Сортировать по времени
alias lz="ls -AFlSr"             # Сортировать по размеру
alias t="touch"
alias ff="find . -type f -iname" # Найти файл по имени в текущей папке
alias catc='clear && grep -v -e "^$" -e"^ *#"' # Показать файл с кодом без коментариев

# Директории
alias md="mkdir -pv"
alias fd='find . -type d -name'  # Найти директорию по имени в текущей папке
alias ..="cd .."
alias ...="cd ../.."
alias .3="cd ../../.."
alias .4="cd ../../../.."
alias g="cd /"
alias w="cd /var/www"
alias bscript="cd /usr/local/sbin && ls" # Показать список своих Bash-скриптов
alias ngsa="cd /etc/nginx/sites-enabled && ls" # Показать список доступных сайтов в nginx
cds () { cd /var/www/"$1"/www && ls -a; } # Перейти в директорию сайта (cds meliorem.ru)

# Архивы
alias tarc="tar czvf"            # Создать архив
alias tarx="tar xzvf"            # Извлечь архив
alias tart="tar tzvf"            # Показать содержимое архива

# Подтверждение действий
alias mv="mv -iv"
alias cp="cp -iv"
alias ln="sudo ln -iv"
alias rm="sudo rm -riv"
alias rmf="sudo rm -rfiv"        # Принудительное удаление

# Обновление Bash-файлов
alias bau=". ~/.bash_aliases"
alias bpu=". ~/.bash_profile"
alias bru=". ~/.bashrc"

# Менеджер пакетов Apt (Ubuntu)
alias ag="sudo apt-get"
alias agi="sudo apt-get install"
alias agyi="sudo apt-get -y install"
alias agu="sudo apt-get update"
alias agr="sudo apt-get remove"
alias acs="apt-cache search"

# Менеджер пакетов Yum (CentOS)
alias yum="sudo yum"
alias yi="sudo yum install"
alias yyi="sudo yum -y install"
alias yu="sudo yum update"
alias yr="sudo yum remove"
alias ys="yum search"
alias yp="yum provides"

# Vi/Vim
alias vim="sudo vim"
alias vi="sudo vi"
alias vimalias="sudo vim ~/.bash_aliases && . ~/.bash_aliases"
alias vimbashrc="sudo vim ~/.bashrc && . ~/.bashrc"
alias vimprofile="sudo vim ~/.bash_profile && . ~/.bash_profile"
alias vimphp="sudo vim /etc/php/7.0/fpm/php.ini" # ! Сначала найдите свой php.ini !
alias vimnginx="sudo vim /etc/nginx/nginx.conf && nginx -t"
alias vimhttpd="sudo vim /etc/httpd/conf/httpd.conf && systemctl httpd configtest"
alias vimmy="sudo vim /etc/my.cnf"

# Systemctl
alias sc="systemctl"
alias scsts="clear && systemctl status"         # (scsts nginx)
alias scstt="systemctl start"
alias screl="systemctl reload"
alias scrst="systemctl restart"
alias scstp="systemctl stop"
alias scen="systemctl enable"
alias scisen="systemctl is-enabled"
alias scdis="systemctl disable"
alias sclist="systemctl list-unit-files | less" # Список служб

# System info
alias df="df -hPT | column -t"             # Память диска
alias free="free -mth"                     # RAM
alias path="echo $PATH | tr ':' '\n' | nl" # Удобный вывод $PATH

# Network
alias ping="ping -c4"
alias ports="netstat -tulanp" # Показать открытые порты
alias ipinfo="curl ifconfig.me && curl ifconfig.me/host" # Показать свой IP и Hostname

# Сокращения
alias q="exit"
alias s="sudo"
alias c="clear"
alias a="clear && alias | less"    # Показать список алиасов
alias ag="alias | grep"            # Если помнишь только часть имени алиаса

# Extra
alias ax="chmod a+x"               # Сделать файлы исполняемым
alias upload="sftp username@server.com:/path/to/upload/directory"

# Загрузить этот список алиасов в свой ~/.bash_aliases
alias baload="wget -P ~ 'https://raw.githubusercontent.com/CharmingProjects/bash_aliases/master/.bash_aliases' -O ~/.bash_aliases && . ~/.bash_aliases"

# FUNCTIONS
cls () { cd $@ && ls -a; }
mcd () { sudo mkdir -p "$1"; cd "$1";} # Создать директорию и войти в неё (mcd ~/music/classic)
backup () { sudo cp "$1"{,.backup};}   # Создать копию файла в текущей папке
newbs () { cd /usr/local/sbin && sudo touch "$1" && sudo chmod a+x "$1" && sudo vim "$1"; } # Новый Bash скрипт
psgrep () {
if [ ! -z $1 ] ; then
echo "Grepping for processes matching $1..."
ps aux | grep $1 | grep -v grep
else
echo "!! Need name to grep for"
fi
}

# :-)
alias hacker='cat /dev/urandom | hexdump -C | grep "ca fe"' # Кулл хацкер