Запустить последнюю команду можно способами

Как работать с историей выполненных команд в командной строке

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

Что весьма облегчает повторное введение уже выполненных команд. Для работы с историей в командной строке CMD используются «горячие клавиши» . Вот они:

• F1 или стрелка вправо — выводит по одному символу из последней выполненной команды.
• F2 — выполняет копирование последней команды до определённого символа. Например, если последней командой была ping google.com , при нажатии пробела скопируется только ping.
• F3 , F5 — дублирует предыдущую команду целиком, а если после F3 нажимать клавиши-стрелки вверх-вниз, то можно гулять по всей истории.
• F4 — работает аналогично F2 , только наоборот, и если последняя копирует ранее введённую команду до указанного символа, то F4 обрезает её.
• F5 — то же, что и F3 , а ещё она дублирует функцию стрелки вверх.
• F6 — вставляет в консоль символ EOF (конец файла) . К истории эта хот-клавиша не относится, но может кому пригодится.
• F7 — выводит в консоль в белом окошке всю историю выполненных команд. Перемещаться по ним можно с помощью стрелок вверх-вниз, а выполнять выбранные клавишей Enter . Закрывается список истории нажатием Esc , а очищается с помощью комбинации Alt + F7 .

• F8 — последовательно перебирает список выполненных команд.
• F9 — используется для выборочной вставки команд из истории. Вставляет в консоль команду под определённым номером — 1, 2, 3, 4 и так далее.

Также, если вам будет это интересно, для простого просмотра всех выполненных команд можно использовать команду doskey /history .

Источник

Тонкости работы в командной строке Windows

Недавно я вырос из лютого эникея в очень большой компании, до скромного сисадмина надзирающего за сетью в 10 ПК. И, как очень ленивый сисадмин, столкнулся с задачами по автоматизации своей деятельности. Полгода назад я еще не знал, что в командной строке Windows есть конвейеры. Это стало первым шокирующим открытием. И я пошел дальше, и выяснилось, что там, где я раньше писал утилитки на C#, Delphi или громоздкие скрипты с вложенными циклами, можно было обойтись парой команд forfiles или robocopy .
Не буду рассказывать о банальностях, типа о перечислении файлов и папок клавишей Tab . Под хабракатом расскажу о том, что может быть полезно начинающим админам и эникеям.

Горячие клавиши

Начнем с горячих клавиш, ведь сначала необходимо изучить, что нам может дать рабочая среда.

F1 — В консоли эта клавиша работает в точности как и стрелка вправо, т.е. выводит по одному символу из последней введенной (либо выбранной в истории) команды.
F2 + — Выводит последнюю введенную команду до указанного символа. Например, если последняя введенная вами команда выглядела вот так:

то после нажатия комбинации клавиш F2 + 5 вы получите:

F3 — Выводит последнюю, и только последнюю, в истории команду целиком.
F5 — Выводит последние введенные команды по порядку, также как и стрелка вверх.
F6 — Вставляет символ EOF на текущую позицию командной строки, что аналогично нажатию комбинации Ctrl + Z.
F7 — Диалоговое окно, содержащее историю команд.

Alt + F7 — Очищает историю команд.
+ F8 — Перебирает команды, которые начинаются с символов уже введенных в командную строку.
Если перед нажатием F8 ничего не вводить, то эта клавиша будет работать как и стрелка вверх, но с небольшим отличием — перебор строк будет осуществляться циклично, т.е. после первой команды из списка будет выведена последняя.
F9 + — Вставляет команду из истории под соответствующим номером. К примеру, в ситуации приведенной на скрине выше при нажатии комбинации F9 + 4 в консоли появится:

Операторы командной строки

Я, давным-давно, когда был маленький, даже не представлял как можно работать в консоли без графического интерфейса. Ведь вывод команд порой занимает десятки страниц, а если надо выбрать оттуда какие-то данные, то и постраничный вывод не спасет. Но однажды я поставил на старый комп FreeBSD, открыл хандбук и просто голова кругом пошла от открывшихся возможностей. Там можно перенаправить вывод команды на вход другой команды и это называется конвейером.

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

Оператором конвейера в *nix и cmd, является символ вертикальной черты.

Например, вывод всех текстовых файлов в текущей папке покажет команда

Оператор объединения команд

Пример: Команда1 & Команда2 – сначала выполнятся Команда1, а уже потом Команда2

Оператор И

Пример: Команда1 && Команда2 — Команда2 будет выполняться только в том случае, если произошло успешное выполнение Команды1

Оператор ИЛИ

Пример: Команда1 || Команда2 — Команда2 будет выполняться только в том случае, если Команда1 не смогла выполниться.

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

  • (Команда1 & Команда2) && Команда3 – Если Команды1 и Команды2, выполнятся успешно, произойдет выполнение Команды3.
  • (Команда1 & Команда2) || Команда3 — Если Команды1 и Команды2, не выполнятся, произойдет выполнение Команды3.

Спасибо за внимание! Жду критики и предложений…

Для тех, кто не в теме, циркумфлекс(вот этот знак «^») означает нажатие клавиши с Ctrl (^C = Ctrl +C ).

^C — Прерывает команду, ну это все знают.
^S — Приостанавливает выполнение команды, а потом запускает.
^I — Аналог Tab, перебирает папки и файлы.
^M — Аналог Enter.
^H — Аналог Backspace.
^G — Написав в пакетном файле команду echo ^G можно пикать системным динамиком(спикером).
(Команды ^I и ^H , получены мной методом «научного тыка», еще есть ^J но не знаю, что она делает)

Источник

Работаем в консоли быстро и эффективно

В сети можно встретить много советов по эффективной работе в консоли. В большинстве таких статей авторы рассказывают про банальности типа «выучите горячие клавиши» или » sudo !! запустит последнюю команду под sudo». Я же расскажу о том, что делать, когда вы уже выучили горячие клавиши и знаете про sudo !! .

Терминал должен запускаться мгновенно

Сколько времени вам нужно, чтобы запустить терминал? А ещё один? Долгое время мой терминал запускался сочетанием Ctrl+Alt+T и я думал, что это быстро. Но когда я переехал с Openbox на i3, то стал запускать терминал через Win+Enter, это сочетание было в конфиге по умолчанию. И знаете что? Я больше не считаю, что Ctrl+Alt+T — это быстро.

Разумеется, прикол не в выигрыше миллисекунд, а в том, что вы открываете терминал на уровне рефлексов, совершенно не замечая этого.

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

Zsh вместо Bash

Это холиварная тема, знаю. Zsh стоит поставить хотя бы ради трёх фич: продвинутый автокомплит, коррекция опечаток и множественный pathname completition: когда один Tab превращает /u/s/d в /usr/share/doc . Arch Linux уже давно перешёл на zsh в своём установочном диске. Я надеюсь что однажды zsh станет дефолтным шеллом в Ubuntu. Это будет исторический момент.

Начать использовать zsh вообще не сложно. Установите его через менеджер пакетов и возьмите какой-нибудь готовый конфиг. Я рекомендую конфиг, который используется в Arch Linux:

Осталось только поменять «шелл по-умолчанию» на zsh и перелогиниться.

Всё, продолжайте работать как будто ничего не произошло.

Каким должен быть shell prompt

Shell prompt (приглашение командной строки) — это тот маленький текст, который выводится в терминале перед вашей командой. Его нужно настроить под свой характер работы. Воспринимайте его как приборную панель автомобиля. Поместите туда полезную информацию, пусть он будет помогать ориентироваться. Сделайте его удобным, особенно если видите его каждый день!

Shell prompt должен показывать текущий каталог шелла. Если текущий каталог не выводится в shell prompt, вам придётся держать его в голове и периодически проверять командой pwd . Не надо так. Держите в голове более важные вещи и не тратьте время на команду pwd .

Если вы периодически переключаетесь со своего пользователя на рута, вам нужна индикация текущего пользователя. Зачастую важно не конкретное имя пользователя, а его статус (обычный или рут). Проще всего это сделать цветом: красный shell prompt у рута, зелёный у своего пользователя. Так вы ни за что не спутаете рутовый шелл с обычным.

Если вы подключаетесь к серверам по ssh, то вам нужно как-то отличать свой локальный шелл от серверного. Для этого shell prompt должен содержать имя хоста, а ещё лучше — индикатор ssh-соединения.

Shell prompt умеет показывать код возврата последней команды. Напомню, что нулевой код возврата означает, что команда завершилась успешно, ненулевой — команда завершилась неуспешно. Код возврата последней команды можно узнать командой echo $? , но набирать это всё на клавиатуре слишком долго. Пусть лучше shell prompt сообщит, если команда завершилась неуспешно.

Если вы работаете с git-репозиториями, то будет нелишним выводить в shell prompt статус репозитория: текущую ветку и состояние рабочей директории. Так вы сэкономите время на командах git status и git branch и не ошибётесь веткой при коммите.

Читайте также:  Неинвазивный способ измерения локального мозгового кровотока

Кто-то добавляет в свой shell prompt часы или имя виртуального терминала (tty), или какие-то произвольные закорючки. Это всё лишнее. Лучше оставить побольше места для команд.

Мой shell prompt в разных условиях выглядит так:

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

Как это всё реализовать в своём .zshrc ? За левый prompt отвечает переменная PROMPT , за правый — RPROMPT . Определить статус пользователя (обычный или рут) поможет переменная EUID , а наличие ssh-соединения — SSH_CLIENT или SSH2_CLIENT . Получаем такую заготовку:

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

  • Необходимый минимум — это текущий каталог.
  • Рутовый шелл должен быть хорошо заметен.
  • Имя пользователя не несёт полезной нагрузки, если вы всегда сидите под одним пользователем.
  • Хостнэйм полезен, если вы подключаетесь к серверам по SSH. Не обязателен, если всегда работаете на одной машине.
  • Неуспешное завершение последней команды полезно видеть сразу.
  • Статус git-репозитория экономит время на командах git status и git branch и является дополнительной защитой от дурака.

Активное использование истории команд

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

Возможно вы уже умеете копаться в истории сочетанием Ctrl+R. У него есть два существенных недостатка:

  1. Чтобы начать поиск, поле ввода должно быть пустым. Т.е. в случае «начал набирать команду — вспомнил про поиск» придётся стереть начатое, нажать Ctrl+R и повторить ввод. Это очень долго.
  2. Поиск «вперёд» по умолчанию не работает, т.к. Ctrl+S останавливает терминал.

Как работает самый быстрый и удобный поиск:

  1. вы начинаете набирать команду,
  2. вы вспоминаете про поиск,
  3. вы нажимаете хоткей и шелл предлагает команды из истории, которые начинались точно так же.

Например, вы хотите синхронизировать некий локальный каталог с удалённым с помощью rsync . Вы уже делали это пару часов назад и хотите вытащить команду из истории. Набираете rsync , один-два раза нажимате некую комбинацию, и вот заветная команда готова к запуску. Вам не надо предварительно включать режим поиска по истории, shell prompt не меняется на (reverse-i-search)’: , ничего никуда не прыгает. Вы просто перебираете команды из истории. Так же, как и стрелочками ↑↓ вы перебираете ранее введённые команды, только с фильтром по началу комады. Это чертовски удобно и экономит уйму времени.

В оболочках fish и ipython такой поиск уже назначен на стрелочки. Я думаю что многие перешли на fish только ради такого поведения стрелочек.

В bash и zsh по-умолчанию такой поиск не работает, его надо включить руками. Я настроил PgUp для поиска назад и PgDown для поиска вперёд. Далековато до них тянуться, но я уже привык. Возможно в будущем переназначу на что-нибудь поближе, например Ctrl+P и Ctrl+N.

Для bash надо добавить пару строк в /etc/inputrc или

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

Любопытно, что со временем я стал писать команды из расчёта, что позже буду поднимать их из истории. Вот несколько приёмов:

Объединение команд, которые всегда выполняются друг за другом

Абсолютные пути вместо относительных позволяют запускать команду, находясь в любом каталоге:
vim

/.ssh/config вместо vim .ssh/config , systemd-nspawn /home/chroot/stretch вместо systemd-nspawn stretch и т.д.

Подстановка по маске (wildcard) делает команды более универсальными. Обычно использую с chmod и chown .

Горячие клавиши

Перечислю необходимый минимум.

Alt+. — подставляет последний аргумент предыдущей команды. Также можно набрать последовательность !$ .
Ctrl+A, Ctrl+E — переход к началу и концу редактируемой команды соответственно.
Ctrl+U, Ctrl+Y — вырезать всё в буфер обмена, вставить из буфера. Выручает, когда печатаешь сложную команду, а потом понимаешь, что перед ней надо выполнить другую. Хм, куда бы припрятать текущий ввод? Вот сюда и припрятать.
Ctrl+W — стирает одно слово слева от курсора. Если зажать и удерживать, быстро очищает командную строку. По умолчанию текст не удаляется, а помещается в буфер (который для Ctrl+Y).
Ctrl+K — удаляет от курсора и до конца строки. Ctrl+A, Ctrl+K быстро очищает командную строку.
PgUp, PgDown, Ctrl+R — поиск по истории.
Ctrl+L — очистить терминал.

Отзывчивость клавиатуры

Расскажу про маленькую настройку, которая позволяет быстрее скроллить, перемещаться по тексту или стирать. Что мы делаем, когда хотим стереть что-то длинное? Зажимаем Backspace и смотрим как курсор бежит назад, забирая лишние буквы. Что при этом происходит? При нажатии Backspace стирается один символ, затем идёт небольшая задержка, затем срабатывает автоповтор: Backspace убирает символы один за другим, как будто по нему постоянно стучат.

Читайте также:  Все способы перемещения объектов

Я рекомендую отрегулировать задержку и частоту работы автоповтора под скорость своих пальцев. Задержка перед срабатыванием автоповтора нужна когда вы хотите удалить только один символ — она даёт вам время отпустить клавишу. Слишком долгая задержка заставляет ждать автоповтора. Не настолько долго, чтобы раздражать, но достаточно, чтобы тормозить перенос мыслей из головы в компьютер. Чем выше частота повтора, тем быстрее стирается текст, и тем сложнее вовремя остановить этот процесс. Суть настройки заключается в поиске золотой середины.

Итак, волшебная команда:

190 — длительность задержки в миллисекундах,
20 — частота в количестве повторений в секунду.

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

Чтобы сохранить параметры, добавьте эту команду куда-нибудь в автостарт иксов.

Индикатор завершения процесса

Мне довольно часто приходится запускать долгие процессы: какой-нибудь жирный бэкап, копирование по сети, распаковку/запаковку архивов, сборку пакетов и т.д. Обычно я запускаю такой процесс, переключаюсь на другую задачу и периодически поглядываю не завершился ли мой долгий процесс. Бывает, что я сильно погружаюсь в работу и забываю о нём. Решение — добавить нотификацию завершения процесса, которая выведет меня из транса.

Для этого можно использовать разные средства: notify-send, dzen2, beep, aplay. Все они по-своему хороши, но не работают по ssh. Поэтому я использую terminal beep:

В кодировке ASCII есть символ 0x7, именуемый bell. Он предназначен для того, чтобы пищать PC-спикером. PC-спикер — это несовременно, он не везде есть, а ещё его не слышно в наушниках. Поэтому некоторые терминалы применяют так называемый visual bell. Я использую urxvt, и он делает visual bell включением флага urgency. Это когда окно сообщает вам, что оно требует внимания.

Вы можете прямо сейчас проверить как ваш терминал реагирует на символ bell:

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

К сожалению, visual bell через urgency есть не во всех терминалах. Я проверил самые популярные.

терминал visual bell через urgency
konsole включается в настройках
urxvt есть
xfce4-terminal включается в настройках
xterm нет
cool-retro-term нет
lxterminal нет
gnome-terminal нет

Писать echo $’\a’ слишком долго, поэтому я сделал алиас wake .

Алиасы

Команды cp , scp и rm всегда должны работать рекурсивно. Аргумент -r — это просто дурное легаси! У cp ещё можно найти оправдание:

скопирует в foodir только файлы, а с ключом -r подумает, что вы решили скопировать foodir в самого себя. Но как часто вам нужна эта фича?

У rm и scp вообще нет оправданий, они просто зануды! Похожая ситуация с ключом -p у команды mkdir . Так что смело добавляем в

Ух, как же я раньше без этого жил! Можно пойти ещё дальше и добавить -f у rm , но на свой страх и риск. Я пока себя сдерживаю.

Разные вариации ls вы скорее всего уже используете, ведь это самые популярные алиасы.

Ну и цветной grep намного приятнее бесцветного:

Не забывайте, что алиасы не работают в скриптах! Там надо указывать все ключи.

Слепой метод печати

Как бы банально это ни было, но слепой десятипальцевый метод печати позволяет быстрее печатать. Поначалу будет тяжело, но со временем вы разгонетесь до невиданных ранее скоростей.

Осваивать слепой метод печати лучше всего на каникулах или в отпуске, когда вас никто не торопит. В процессе обучения ни в коем случае нельзя спешить. Ваша задача — запомнить где какая буква находится. Причём не столько мозгом, сколько мышцами. Лучше набирать медленно, но без ошибок, чем быстро с ошибками. Помните: мастера добиваются высоких скоростей не за счёт быстрых пальцев, а потому что не делают ошибок.

Не стоит поначалу увлекаться клавогонками. Психологически тяжело оставаться хладнокровным во время соревнований. Учитесь на тренажёрах. Хорошо, когда тренажёр предлагает слова, которые можно мысленно произнести. Я учился на онлайн-тренажёрах vse10 и typingstudy. Известный тренажёр «Соло на клавиатуре» мне показался бестолковым.

Начинать стоит с центрального ряда «фывапролджэ». Только после того, как вы запомните где какая клавиша расположена, стоит двигаться дальше. Только после этого.

Делайте перерывы. Давайте отдых мозгу и пальцам. Чувствуете, что посыпались ошибки — пора делать перерыв.

Сначала я освоил слепой метод печати на русском языке и прифигел от ускорения. Сейчас совершенствую навык в английской раскладке.

Источник

Оцените статью
Разные способы