Перейти к основному содержимому

bash - управление

Быстрые команды терминала линукс (Mac). Управление клавишами. Справляемся с зависаниями.
Погнали:

Быстрые комманды терминала линукс

Переходы по строкам

Сочетания клавишДейстиве
Ctrl + AПереход к началу строки в терминале
Ctrl + EПереход в конец строки
CTRL + BАналог стрелки назад
Ctrl + FАналог стрелки вперед
ALT + Bперемещение на слово назад
ALT + Fперемещение на слово вперед

Вырезание вставка в терминале

Сочетания клавишДейстиве
CTRL + Wвырезать последнее слово
Ctrl + Uвырезает все от курсора до начала строки <--
Ctrl + Kвырезает все от курсора до конца строки -->
Ctrl + YВставляет ранее вырезанный текст.

Редактирование текста

Сочетания клавишДейстиве
ALT + uuppercase Переводит весь текст после каретки в заглавный регистр прописные
ALT + llowercase Переводит весь текст после каретки в регистр строчных букв
ALT + ccapitalize Переводит весь текст после каретки в заглавный регистр

Очистка терминала

По сути это аналог команды clear.

Сочетания клавишДейстиве
CTRL + Lочистить терминал

Зависание терминала

Многие привыкли использовать комбинацию Ctrl + S для сохранения. Однако после её использования в терминале, он часто зависает. Чтобы вернуть его в нормальное состояние, нажмите комбинацию Ctrl + Q.

Зависший терминал в сессии ssh

Иногда в ssh сессии зависает терминал в том случае если вдруг удаленная машина зависла или произошел обрыв самой сети.

Для этого (в английской раскладке) по очереди нажимаем:

Enter, ~, .

(Клавиша "Enter", "Тильда", "Точка")

Это принудительно заставит ssh клиента оборвать соединение с сервером. Полный список команд можно посмотреть нажав по очереди:
Enter, ~, ?

Буфер обмена

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

Установка

# You can install xclip using `apt-get`
apt-get install xclip

# or `pacman`
pacman -S xclip

# or `dnf`
dnf install xclip

Настройка alias

Я использую алиасы из аналогичной програмы под MacOs pbcopy и pbpaste. Это я делаю чтобы не заучивать касномный alias.

Вставляем alias в ~/.bash_aliases

~/.bash_aliases
# Alias for xcopy
if [ -n "$(type -p xclip)" ]
then
alias pbcopy='xclip -selection clipboard'
alias pbpaste="xclip -selection clipboard -o"
alias clipboard='if [ -p /dev/stdin ]; then xclip -in; fi; xclip -out'
fi

Ну или сразу в .bashrc или .zshrc, но для кастомных алиасов рекомендуется подключать свой файл ~/.bash_aliases

Использование

Пример использвания:

$ echo foo | pbcopy
$ pbpaste
foo

# Copy
$ date | clipboard
Sat Dec 29 14:12:57 PST 2018

# Paste
$ date
Sat Dec 29 14:12:57 PST 2018

# Chain
$ date | clipboard | wc
1 6 29

Функия помощник

уже по желанию

_copy(){
cat | xclip -selection clipboard
}

_paste(){
xclip -selection clipboard -o
}
  • Хороший файлик помощник для копирования вставки cb

alacritty

Если терминал не пробрасывает цвет по ssh можно добавить на сервер в файл rc шелла.

~/.bashrc
# try export xterm for alacritty
# https://stackoverflow.com/questions/12345675/screen-cannot-find-terminfo-entry-for-xterm-256color
export TERM=xterm-xfree86

Shell скрипты удобства

Ниже всякие удобности, которые иногда пригождаются.

Сбос терминала

reset

Узнать внешний ip адресс

Показать только внешний IP адрес:

curl ifconfig.me

Показать IP, провайдера, локацию.

curl 2ip.ua

Прогноз погоды прямо в терминале

curl wttr.in/moscow

Введите команду curl wttr.in/<нужный город> и получите красивую таблицу с прогнозом погоды:

Не закрывать терминал после выполнения bash скрипта

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

#!/bin/bash
# пример файла

echo "Привет из баш скрипта"

Не удобно. Чтоб появлялось окно консоли можно в конце скрипта дописать $SHELL

#!/bin/bash
# пример файла

echo "Привет из баш скрипта"
$SHELL

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

Запуск Nautilus через терминал

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

Решение запуск через nohup

In order to avoid nasty warnings in my terminal I use nohup. To have it detached from my terminal I'm adding & at the end of my command. I also use the -w flag to open in a new window.

nohup nautilus -w . &

Замена стокового тетминала

Для заменты стокового терминала. Например с bash на zsh

chsh -s $(which zsh)

получить расширение и имя файла

#!/bin/bash
FILE="bashdays.gzip"

FIRST="${FILE%.*}"
SECOND="${FILE##*.}"

echo $FIRST
echo $SECOND
  • Символы %.* означает отсекание всего после точки.
  • Символы ##*. ну а тут наоборот, отсекание всего до точки.

Ссылки по теме

  • Репа "Искусство командной строки", советы по прокачке скила
  • The Book of Secret Knowledge
  • repo со всякими примерчиками shell скриптов