A1.7 Приложение A: Git в других окружениях — Git в Bash
Если вы используете Bash, то можете задействовать некоторые из его фишек для облегчения работы с Git. К слову, Git поставляется с плагинами для нескольких командных оболочек, но они выключены по умолчанию.
Для начала, скачайте файл contrib/completion/git-completion.bash из репозитория с исходным кодом Git. Поместите его в укромное место — например, в ваш домашний каталог — и добавьте следующие строки в .bashrc :
. ~/git-completion.bash
Как только закончите с этим, перейдите в каталог с Git репозиторием и наберите:
$ git chec
…и Bash дополнит строку до git checkout . Эта магия работает для всех Git команд, их параметров, удалённых репозиториев и имён ссылок там, где это возможно.
Возможно, вам также пригодится отображение информации о репозитории, расположенном в текущем каталоге. Вы можете выводить сколь угодно сложную информацию, но обычно достаточно названия текущей ветки и статуса рабочего каталога. Чтобы снабдить строку приветствия этой информацией, скачайте файл contrib/completion/git-prompt.sh из репозитория с исходным кодом Git и добавьте примерно такие строки в .bashrc :
. ~/git-prompt.sh export GIT_PS1_SHOWDIRTYSTATE=1 export PS1='\w$(__git_ps1 " (%s)")\$ '
Часть \w означает текущий рабочий каталог, \$ — индикатор суперпользователя (обычно $ или # ), а __git_ps1 » (%s)» вызывает функцию, объявленную в git-prompt.sh , с аргументом ` (%s)` — строкой форматирования. Теперь ваша строка приветствия будет похожа на эту, когда вы перейдёте в каталог с Git репозиторием:

Рисунок 161. Кастомизированная строка приветствия bash
Оба вышеперечисленных скрипта снабжены полезной документацией, загляните внутрь git-completion.bash и git-prompt.sh чтобы узнать больше.
Git. Краткое руководство по терминалу
Данное краткое руководство демонстрирует основные команды в терминале Bash:
- Bash (Linux/Mac)
- Git Bash (Windows)
Открытие терминала
Первая задача: открыть терминал сразу в нужном каталоге.
Linux
В Linux достаточно щёлкнуть правой кнопкой мыши на каталоге и выбрать пункт меню Open in Terminal или Открыть в терминале :


Mac
В Mac всё немного сложнее, необходимо настроить отображение этого пункта меню в Finder.
Для этого необходимо перейти в Системные настройки , затем пункт меню Клавиатура , в разделе Службы выбрать раздел Файлы и папки и поставить флажок напротив Новый терминал по адресу папки :


После чего при клике правой кнопкой мыши на каталоге появится необходимый пункт меню:

Windows (Git Bash)
В Windows всё достаточно просто — клик правой кнопкой мыши на каталоге и выбор Git Bash Here :

Первоначальная настройка Git
После установки Git первое, что мы сделаем — укажем наши имя и адрес электронной почты. Это важно, потому как этой информацией подписывается каждый коммит (кто сделал изменения и его электронная почта). Для настройки потребуется ввести команды:
$ git config --global user.name "Thorin Oakenshield" $ git config --global user.email ereborsons@stone.com
Если указана опция —global , настройки применятся глобально, то есть для всех ваших действий в системе Git. Без этой опции настройки применяются локально, для текущего репозитория, и не влияют на глобальные настройки.
Пути
Одно окно терминала подразумевает, что вы можете в один момент времени находиться только в одном каталоге, который называется Current Working Directory (текущий каталог), так же как и в одном открытом окне Nautilus , Finder или проводника Windows.
Вы можете выполнять команды относительно текущего каталога или относительно абсолютного пути.
Абсолютный путь — это путь, начинающийся от корня файловой системы. Корень файловой системы обозначается символом / .
Например, в Git Bash (Windows) абсолютный путь для каталога Program Files , будет чаще всего выглядеть следующим образом: /c/Program Files/ .
Для домашнего каталога в Ubuntu (Linux), абсолютный путь будет выглядеть следующим образом: /home/user/ , где user — имя пользователя.
Bash (Git Bash в том числе) используют символ / для разделения каталогов.
Ещё два специальных обозначения помимо корня файловой системы:
- . — обозначает текущий каталог;
- .. — обозначает родительский каталог.
Важно: в терминале символ ` ` (пробел) является символом, разделяющим команды и опции. Поэтому если в пути есть пробел, то варианта два:
- заключать путь в кавычки, то есть «Program Files» ;
- использовать символ backslash для экранирования пробела: Program\ Files .
Переменные окружения
Командная оболочка устанавливает ряд переменных, которые выполняют специфические функции. Так, переменная с именем PATH содержит список путей, в которых будет производиться поиск программы, если вы наберёте её название в терминале.
Для вывода содержимого конкретной переменной используется команда echo следующим образом:
$ echo $PATH
Команда printenv позволяет отобразить все переменные окружения:
$ printenv
Видно, что в переменных окружения содержится достаточно много информации о системе.
Автодополнение
В командных оболочках работает автодополнение по клавише Tab :
- дополняются имена команд;
- дополняются пути.
Используйте автодополнение, так как оно позволяет сократить время на набор команды.
Ключевые команды
В этом разделе будут описаны ключевые команды, необходимые нам для работы. Естественно, список этот далеко не полный.
Текущий рабочий каталог
pwd — сокращение от “Print Working Directory”.
Отображение текущего рабочего каталога:
Смена рабочего каталога
cd — сокращение от “Change Directory”.
Переход в определённый каталог:
path может быть как абсолютным, так и относительным путём.
Например, перейти на каталог выше:
Перейти в подкаталог src :
$ cd src
Если перед путём нет слеша — он трактуется как относительный (относительно текущего каталога).
Листинг каталога
ls — сокращение от “List”.
Отображает листинг (содержимое каталога):
По умолчанию, ls не отображает файлы, начинающиеся с . , например, .gitignore . Для отображения таких файлов нужно использовать флаг -a :
$ ls -a
Создание файлов
Для создания файлов используются специальные программы (например, для создания текстовых файлов — текстовые редакторы).
В рамках рассмотрения Bash мы рассмотрим два текстовых редактора, которые позволят вам создавать и редактировать файлы в псевдографическом режиме.
nano
nano — простой текстовый редактор.
Для того, чтобы создать файл достаточно ввести команду nano и имя файла:
$ nano README.md
Откроется редактор следующего вида:

Пункты меню в нижней части вызываются с помощью горячих клавиш, где символ ^ обозначает клавишу Ctrl .
То есть чтобы записать файл и выйти следует последовательно нажать Ctrl + O (запись) и Ctrl + X (выход).
Редактор nano установлен в большинстве Unix-подобных операционных системах и Git Bash.
Vim
Редактор Vim (a programmer’s text editor) — профессиональный редактор, позволяющий достичь максимальной производительности при работе с любыми текстовыми файлами. Настолько популярен, что для любой графической среды (IDE, текстовых редакторов вроде VS Code, Atom, Sublime) всегда есть плагин, включающий возможность редактирования кода в режиме “Vim Mode”.
На освоение работы в Vim нужно потратить достаточно много времени, для этого вы можете воспользоваться интерактивным учебником vimtutor :
$ vimtutor
Мы лишь скажем, что для выхода из этого редактора (если вы всё-таки осмелились его открыть) нужно нажать клавишу Esc , затем ввести команду :q! — это позволит вам закрыть открытый файл без сохранения изменений.
VS Code
В видео-лекциях используется VS Code. В Windows вы можете правой кнопкой открыть каталог сразу в VS Code.
В Mac OS и Linux вы можете открыть терминал по адресу папки и в терминале выполнить команду code . & , которая откроет выбранный вами каталог в этом редакторе.
Если ни то, ни другое у вас не получилось, то просто откройте VS Code и через File — Open откройте нужный каталог.
Создание каталогов
mkdir — сокращения от “Make Directory”.
Позволяет создавать каталоги (создаст каталог tmp в текущем каталоге):
$ mkdir tmp
Стоит обратить внимание на поведение при создании нового каталога в текущей директории. После команды mkdir name ваше текущее расположение в терминале не изменится. Для того, чтобы работать внутри созданного каталога, в него требуется перейти командой cd name . Это справедливо и при клонировании удалённого репозитория с помощью команды git clone . Полностью склонированный репозиторий создаст каталог в текущей директории с именем проекта, в который нужно перейти командой cd repo_name .
Перемещение файлов и каталогов
mv — сокращение от “Move”.
Перемещение (переименование) файлов и каталогов:
$ mv tmp temp
Удаление файлов и каталогов
rm — сокращение от “Remove”.
RANUX / комбинации-клавиш-bash.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
| ##### Перемещение курсора: |
| Ctrl + a — переход в начало строки |
| Ctrl + b — переход на 1 символ назад |
| Ctrl + c — посылает программе SIGINT. Обычно, прерывает текущее задание |
| Ctrl + d — удаляет символ под курсором (аналог delete) |
| Ctrl + e — переход к концу строки |
| Ctrl + f — переход на 1 символ вперёд |
| Ctrl + xx — переходит от текущей позиции курса в начало строки и обратно. |
| Ctrl + p — Предыдущая команда (Стрелка вверх) |
| Ctrl + n — Следующая команда (Стрелка вниз) |
| Alt + b — Переместить курсор на одно слово назад (влево) |
| Alt + f — Переместить курсор на одно слово вперед (вправо) |
| Ctrl + b — Переместить курсор на один символ назад (влево) |
| Ctrl + f — Переместить курсор на один символ вперед (вправо) |
| Ctrl + xx — Переключение между началом строки и текущей позиции курсора |
| ##### Редактирование |
| Ctrl + L — очищает экран. Аналог команды clear. |
| Alt + Del — Удалить слово перед курсором. |
| Alt + d — Исключить слово после курсора. |
| Ctrl + D — Удалить символ под курсором |
| Ctrl + H — Удалить символ перед курсором (Backspace) |
| Ctrl + Alt + H — Удаление слова перед курсором |
| Ctrl + W — Вырезать слово перед курсором в буфер обмена. |
| Ctrl + K — Вырезать строки после курсора в буфер обмена. |
| Ctrl + U — Вырезать / удалить все символы слева от курсора до начала строки в буфер обмена. |
| Alt + T — Поменять текущее слово с предыдущим |
| Ctrl + T — Поменять местами последние два символа перед курсором. Меняет символ под курсором на предыдущий. Или, если хотите, тянет предыдущий символ к концу строки. |
| Esc + T — Поменять местами последние два слова перед курсором. |
| Ctrl + Y — Вставить последнюю запись из буфера, которая была вырезана. |
| Alt + U — Возвести в ВЕРХНИЙ РЕГИСТР (прописными буквами) все символы от курсора до конца текущего слова. |
| Alt + L — Возвести в нижний регистр каждый символ от курсора до конца текущего слова. |
| Alt + C — Сделать прописным символ под курсором и перейти к концу слова. |
| Alt + R — Отменить изменения. Вернуть команду взятую из истории в исходное состояние. |
| Ctrl + _ — Отмена |
| Shift + PgUp / PgDown — прокрутку вверх / вниз |
| Ctrl + X; Ctrl + E — открывает $EDITOR для изменения введённой строки. После сохранения изменений, команда отправляется на исполнение. Если переменная не задана, то открывается системный текстовый редактор (для линукса это, зачастую, nano) |
| Ctrl + X @ — показывает возможные дополнения имени хоста |
| TAB — авто дополнение для имен файлов / каталогов |
| Например, чтобы перейти в каталог ‘sample1’, введите команду «`cd sam«`, затем нажмите TAB и ENTER. Вводите только достаточное количество символов, чтобы однозначно идентифицировать каталог или программу, которую вы хотите открыть. |
| ##### История |
| Ctrl + R — поиск по истории. Повторение поиска (нажмите несколько раз для листания по результам поиска). |
| Ctrl + P — Предыдущая команда в истории (то есть идти назад по истории команд) |
| Ctrl + N — Следующая команда в истории (то есть идти вперед по истории команд) |
| Ctrl + J — прекращает поиск и позволяет отредактировать найденную команду. Если поиск не производился, то аналогично нажатию return. (в zsh выполняет команду) |
| Ctrl + S — Вернуться к следующему самой последней команде. (Остерегайтесь, чтобы не выполнить его из терминала, потому что это также запустит свой XOFF). |
| Ctrl + Z — приостановить (suspend) текущую задачу. |
| Ctrl + O — Выполните команду найденную с помощью Ctrl + R или Ctrl + S |
| Ctrl + G — Выход из режима поиска |
| «`history | grep regex«` — поиск в истории |
| !! — Выполнить еще раз последнюю команду |
| !! sudo — повторить последнюю команду с правами super user |
| !abc — Выполнить последнюю команду, имя которой начинается с abc |
| !abc:p — Вывести последнюю команду, имя которой начинается с abc |
| !$ — Последний аргумент предыдущей команды |
| ALT + . — Последний аргумент предыдущей команды |
| !* — Все аргументы предыдущей команды |
| ^abc^def — Выполнить предыдущую команду, заменив abc на def |
| ##### Управление процессом выполнения |
| Ctrl + C Прервать/Убить запущенное приложение (SIGINT) |
| Ctrl + S Остановить вывод на экран (для длительных многословных команд) |
| Затем используйте PgUp / PgDn для навигации |
| Ctrl + Q Разрешить вывод на экран (если ранее перестали использовать команду выше) |
| Ctrl + D Отправить EOF, если не была выключена опция, это закроет текущую оболочку (EXIT) |
| Ctrl + Z Послать сигнал SIGTSTP к текущей задаче, которая приостанавливает его. |
| Установить режим Vim в Bash: |
| «`$ set -o vim«` |
| Установить режим Emacs в Bash: |
| «`$ set -o emacs«` |
adlaternae commented Oct 24, 2022 •
странная и неточная компиляция из разных источников, смешаны управляющие команды терминалов и хоткеи баша.
к примеру, в bash\sh ctrl-z посылает SIGTSTP, который приостанавливает вывод на текущий терминал, а сама задача таким образом отправляется работать как служба (daemon), вернуть задачу из бэкграунда можно командой fg
ctrl+c посылает SIGINT для прерывания работы задачи, но поведение зависит от приложения, этот сигнал может быть перехвачен в приложении. ctrl+break, как правило, не перехватывается
ctrl+q\s приостанавливает движение потоков ввода-вывода
ctrl+d посылает EOF в поток ввода, что для баш работает как Deattach, т.е. отсоединяет текущую сессию\консоль, что похоже на команду exit, но не совсем (в винде eof отправляется по ctrl+z)
и так далее ;))
опечатка, опять же: выполнить предыдущую команду с повышением прав sudo !! , а не наоборот. дополнение по табуляции не является стандартным поведением, его надо включить, для дебиана sudo aptitude install -y bash-completion
Как вставить скопированный текст в GitBash?
Нужно вставить ссылку репозитория из GitHub, но не могу почему-то.
Где торможу ?
- Вопрос задан более трёх лет назад
- 9235 просмотров
Комментировать
Решения вопроса 1

Виктор @v_decadence
Shift+Insert?
Ответ написан более трёх лет назад
Нравится 7 1 комментарий

Кемал Демирель @kemaldemirel Автор вопроса
Спасибо. Аж стыдно за такой тупой вопрос.
Ответы на вопрос 0
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Android
- +3 ещё
Какие есть доки по сборке APK/AAB с использованием Android NDK?
- 1 подписчик
- 30 дек. 2023
- 65 просмотров

- Программное обеспечение и интернет-сервисы
- +1 ещё
Есть программа для буфера обмена через колесо мыши?
- 1 подписчик
- 24 дек. 2023
- 59 просмотров

- Эмулятор терминала
Не срабатыват команды?
- 1 подписчик
- 12 дек. 2023
- 29 просмотров

- Git
- +4 ещё
Как вести заметки в Obsidian на Motorola g14 и ноуте с Лубунту и сохранять на гитхаб?
- 1 подписчик
- 06 дек. 2023
- 92 просмотра

- Linux
- +3 ещё
Как отправить процесс в фон?
- 1 подписчик
- 05 нояб. 2023
- 174 просмотра

- Эмулятор терминала
- +1 ещё
Как настроить bufferline плагин для корректного отображения вкладок?
- 1 подписчик
- 27 окт. 2023
- 44 просмотра

- Ubuntu
- +2 ещё
Почему git log выводит коды вместо русских букв?
- 3 подписчика
- 20 окт. 2023
- 143 просмотра

- Эмулятор терминала
Почему термукс не реагирует на команды после запуска скрипта python?
- 1 подписчик
- 23 сент. 2023
- 54 просмотра

- Rust
- +1 ещё
Как получать в переменную значение из консоли и буфера обмена?
- 1 подписчик
- 13 авг. 2023
- 141 просмотр

- Android
- +2 ещё
Как в Android отследить изменения clipboard при свёрнутой activity на версиях новее Android Oreo?
- 1 подписчик
- 26 мая 2023
- 70 просмотров
До 400 000 ₽
До 400 000 ₽
Bell Integrator • Ростов-на-Дону
До 400 000 ₽
09 янв. 2024, в 17:31
3000 руб./за проект
09 янв. 2024, в 17:05
500000 руб./за проект
09 янв. 2024, в 16:59
2500 руб./за проект
Минуточку внимания
Присоединяйтесь к сообществу, чтобы узнавать новое и делиться знаниями
- Есть ли метод кеширования iframe стороннего сайта?
- 2 подписчика
- 1 ответ
- 2 подписчика
- 1 ответ
- 2 подписчика
- 1 ответ
- 2 подписчика
- 0 ответов
- 2 подписчика
- 1 ответ
- 2 подписчика
- 3 ответа
- 2 подписчика
- 0 ответов
- 1 подписчик
- 1 ответ
- 3 подписчика
- 4 ответа
- 3 подписчика
- 2 ответа