Учебное пособие по команде fc с примерами
Отображение или выполнение команд из списка истории с помощью команды fc в Linux
Команда fc, сокращение от fix commands, представляет собой встроенную команду оболочки, используемую для перечисления, редактирования и повторного выполнения большинства недавно введенные команды в интерактивную оболочку. Вы можете редактировать недавно введенные команды в своем любимом редакторе и запускать их без необходимости заново вводить все команды.
Команда fc может помочь исправить орфографические ошибки в ранее введенных командах и избежать повторения длинных и сложных команд. Поскольку она встроена в оболочку, она доступна в большинстве оболочек, включая Bash, Zsh, Ksh и т. д. В этом кратком руководстве мы научимся использовать команду fc в Linux.
Получение списка недавно выполненных команд с помощью команды fc
Если вы запустите команду fc -l
без аргументов, она отобразит последние 16 команд.
$ fc -l
507 fish
508 fc -l
509 sudo netctl restart wlp9s0sktab
510 ls -l
511 pwd
512 uname -r
513 uname -ms
514 touch ostechnix.txt
515 vi ostechnix.txt
516 echo "Welcome to OSTechNix"
517 sudo apcman -Syu
518 sudo pacman -Syu
519 more ostechnix.txt
520 wc -l ostechnix.txt
521 cat ostechnix.txt
522 clear
Список последних команд в обратном порядке
Чтобы изменить порядок команд (самые новые команды указаны первыми), используйте флаг -r
.
fc -r
Список последних команд без номеров строк
Как вы могли заметить, все ранее выполненные команды отображаются с префиксными номерами. Вы можете подавить номера строк, используя флаг -n
.
$ fc -ln
nano ~/.profile
source ~/.profile
source ~/.profile
fc -ln
fc -l
sudo netctl restart wlp9s0sktab
ls -l
pwd
uname -r
uname -ms
echo "Welcome to OSTechNix"
sudo apcman -Syu
cat ostechnix.txt
wc -l ostechnix.txt
more ostechnix.txt
clear
Теперь вы не увидите номера строк.
Отобразить результат, начиная с определенной команды
Чтобы вывести результат, начиная с определенной команды, просто используйте номер строки вместе с опцией -l
. Например, чтобы отобразить команды, начиная с номера строки 520 до настоящего времени, мы делаем:
$ fc -l 520
520 ls -l
521 pwd
522 uname -r
523 uname -ms
524 echo "Welcome to OSTechNix"
525 sudo apcman -Syu
526 cat ostechnix.txt
527 wc -l ostechnix.txt
528 more ostechnix.txt
529 clear
530 fc -ln
531 fc -l
Вместо использования номеров строк мы также можем использовать строки. Например, перечислите команды, начиная с команды pwd
и заканчивая последней, просто используйте начальную букву этой команды (т. е. p), как показано ниже.
$ fc -l p
521 pwd
522 uname -r
523 uname -ms
524 echo "Welcome to OSTechNix"
525 sudo apcman -Syu
526 cat ostechnix.txt
527 wc -l ostechnix.txt
528 more ostechnix.txt
529 clear
530 fc -ln
531 fc -l
532 fc -l 520
533 fc -l 520 525
534 fc -l 520
535 fc -l 522
536 fc -l l
Список последних команд в определенном диапазоне
Чтобы вывести список команд в определенном диапазоне, например от 520 до 525, выполните:
$ fc -l 520 525
520 ls -l
521 pwd
522 uname -r
523 uname -ms
524 echo "Welcome to OSTechNix"
525 sudo apcman -Syu
Список команд между определенным диапазоном
Чтобы увидеть все, что находится между командой pwd
и more
, вы можете использовать либо:
fc -l p m
Или используйте комбинацию первой буквы начальной команды и номера строки конечной команды:
fc -l p 528
Или просто номера строк начальной и конечной команд:
fc -l 521 528
Все эти три команды отобразят один и тот же результат.
Автоматическое редактирование и повторный запуск последней команды
Иногда вы могли допустить ошибку в написании предыдущей команды. В таких ситуациях вы можете легко отредактировать орфографические ошибки команды с помощью редактора по умолчанию и выполнить ее без необходимости повторного ввода.
Чтобы отредактировать последнюю команду и повторно запустить ее, выполните:
fc
Это откроет вашу последнюю команду в редакторе по умолчанию.
Отредактируйте и повторно запустите последнюю команду с помощью команды fc.
Как вы видите на скриншоте выше, моей последней командой была "fc -l"
. Теперь вы можете вносить любые изменения в команду и автоматически запускать ее снова после сохранения и выхода из редактора. Это может быть полезно при использовании длинных и сложных команд или аргументов.
Важное примечание: Помните, что это также может быть разрушительным . Например, если предыдущая команда была смертельно опасной, например "rm -fr
, она выполнится автоматически, и вы можете потерять важные данные. Итак, вы ДОЛЖНЫ быть очень осторожны при использовании команды fc
.
Измените редактор по умолчанию для редактирования команд
Еще одна примечательная опция fc — "e"
, которая используется для выбора другого редактора для редактирования команд. Например, мы можем использовать редактор "nano"
для редактирования последней команды, как показано ниже.
fc -e nano
Эта команда откроет редактор nano (вместо редактора по умолчанию) для редактирования последней команды.
Измените редактор по умолчанию для команды fc
Установить редактор по умолчанию для команды fc
Использование опции -e
для каждой команды может занять много времени. Чтобы сделать новый редактор редактором по умолчанию, просто задайте для переменной среды FCEDIT
имя редактора, который вы хотите использовать fc.
Например, чтобы установить "nano" в качестве нового редактора по умолчанию, отредактируйте свой ~/.profile
или файл среды:
vi ~/.profile
Добавьте следующую строку:
FCEDIT=nano
Вы также можете использовать полный путь к редактору, как показано ниже.
FCEDIT=/usr/local/bin/emacs
Введите :wq
, чтобы сохранить и закрыть файл. Чтобы обновить изменения, запустите:
source ~/.profile
С этого момента просто введите «fc
», чтобы отредактировать последнюю команду с помощью редактора «nano»
.
Повторно запустите последнюю команду без ее редактирования.
Мы уже знали, что если мы запустим «fc
» без каких-либо аргументов, он загрузит в редактор по умолчанию самую последнюю команду. Иногда вам может потребоваться не редактировать, а просто выполнить последнюю команду.
Для этого используйте символ дефиса (-
) в конце, как показано ниже.
$ echo "Welcome to OSTechNix"
Welcome to OSTechNix
$ fc -e -
echo "Welcome to OSTechNix"
Welcome to OSTechNix
Как видите, fc не редактировал последнюю команду (то есть эхо «Добро пожаловать в OSTechNix»), даже если я использовал опцию -e
.
Обратите внимание, что некоторые параметры зависят от оболочки. Они могут не работать в других оболочках. Например, в оболочке zsh можно использовать следующие параметры. Они не будут работать в оболочках Bash или Ksh.
Отображение времени выполнения команд
Чтобы узнать, когда были выполнены команды, используйте -d, как показано ниже.
fc -ld
1 18:41 exit
2 18:41 clear
3 18:42 fc -l
4 18:42 sudo netctl restart wlp9s0sktab
5 18:42 ls -l
6 18:42 pwd
7 18:42 uname -r
8 18:43 uname -ms
9 18:43 cat ostechnix.txt
10 18:43 echo "Welcome to OSTechNix"
11 18:43 more ostechnix.txt
12 18:43 wc -l ostechnix.txt
13 18:43 cat ostechnix.txt
14 18:43 clear
15 18:43 fc -l
Теперь вы видите время выполнения последних выполненных команд.
Мы также можем отобразить полную временную метку каждой команды, используя опцию -f
.
fc -lf
1 4/5/2018 18:41 exit
2 4/5/2018 18:41 clear
3 4/5/2018 18:42 fc -l
4 4/5/2018 18:42 sudo netctl restart wlp9s0sktab
5 4/5/2018 18:42 ls -l
6 4/5/2018 18:42 pwd
7 4/5/2018 18:42 uname -r
8 4/5/2018 18:43 uname -ms
9 4/5/2018 18:43 cat ostechnix.txt
10 4/5/2018 18:43 echo "Welcome to OSTechNix"
11 4/5/2018 18:43 more ostechnix.txt
12 4/5/2018 18:43 wc -l ostechnix.txt
13 4/5/2018 18:43 cat ostechnix.txt
14 4/5/2018 18:43 clear
15 4/5/2018 18:43 fc -l
16 4/5/2018 18:43 fc -ld
Конечно, европейцы могут использовать европейский формат даты, используя опцию -E
.
fc -lE
2 5.4.2018 18:41 clear
3 5.4.2018 18:42 fc -l
4 5.4.2018 18:42 sudo netctl restart wlp9s0sktab
5 5.4.2018 18:42 ls -l
6 5.4.2018 18:42 pwd
7 5.4.2018 18:42 uname -r
8 5.4.2018 18:43 uname -ms
9 5.4.2018 18:43 cat ostechnix.txt
10 5.4.2018 18:43 echo "Welcome to OSTechNix"
11 5.4.2018 18:43 more ostechnix.txt
12 5.4.2018 18:43 wc -l ostechnix.txt
13 5.4.2018 18:43 cat ostechnix.txt
14 5.4.2018 18:43 clear
15 5.4.2018 18:43 fc -l
16 5.4.2018 18:43 fc -ld
17 5.4.2018 18:49 fc -lf
Краткое содержание
Позвольте мне суммировать важные ключевые моменты.
- При запуске без каких-либо аргументов fc загрузит самую последнюю команду в текстовом редакторе по умолчанию.
- При работе с числовым аргументом fc загружает в редактор команду с указанным номером.
- При работе со строковым аргументом fc загружает самую последнюю команду, начинающуюся с указанной строки.
- При запуске с двумя аргументами fc аргументы указывают начало и конец диапазона команд.
Примечание. Некоторые параметры в последних версиях BASH устарели.
Получать помощь
Более подробную информацию можно найти на странице руководства команды fc
.
man fc
В некоторых дистрибутивах страница руководства для команды fc
недоступна. В таких случаях вы можете ввести команду fc --help
, чтобы отобразить раздел справки.
fc --help
fc: fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]
Display or execute commands from the history list.
fc is used to list or edit and re-execute commands from the history list.
FIRST and LAST can be numbers specifying the range, or FIRST can be a
string, which means the most recent command beginning with that
string.
Options:
-e ENAME select which editor to use. Default is FCEDIT, then EDITOR,
then vi
-l list lines instead of editing
-n omit line numbers when listing
-r reverse the order of the lines (newest listed first)
With the `fc -s [pat=rep ...] [command]' format, COMMAND is
re-executed after the substitution OLD=NEW is performed.
A useful alias to use with this is r='fc -s', so that typing `r cc'
runs the last command beginning with `cc' and typing `r' re-executes
the last command.
Exit Status:
Returns success or status of executed command; non-zero if an error occurs.
Надеюсь это поможет.
Связанное чтение:
- Различные способы повторить последнюю команду в Linux
- Как удалить определенную команду из истории Bash в Linux
- Как очистить историю командной строки в Linux