Linux 下如何使用 fc 命令

2022-06-25 19:54:12 字數 3310 閱讀 2976

使用linux的過程中,在處理很長的並且包含複雜的語法的命令時,如果不小心犯了一點小錯誤,需要重新輸入整個命令以及引數,直到命令執行成功為止。另一種選擇是使用 fc 命令編輯並重新執行前乙個命令,而無需重新輸入整個命令以及引數。

fc 命令是 fix command 的縮寫,是乙個內建命令,它能列出、編輯、重新執行最近在互動shell中輸入的命令,你可以使用指定的編輯器編輯並執行最近輸入的命令,而不需要重新輸入整個命令。

fc命令的語法如下:

[root@ecs-centos-7 ~]# fc --h

fc: usage: fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]

使用指定的編輯器編輯,預設是 vi 編輯器, 在下面的例子中ls /home/tt命令在 vi 中編輯,把 ls 改成 cd,在儲存退出的時候會執行cd /home/tt命令, 具體的結果如下:

[root@ecs-centos-7 ~]# fc -l

657 ls /home/tt

658 fc -l

[root@ecs-centos-7 ~]# fc -e vi 657

ls /home/tt

"/tmp/bash-fc-27929723442" 1l, 12c written

cd /home/tt

[root@ecs-centos-7 tt]# pwd

/home/tt

[root@ecs-centos-7 tt]#

列出最近的歷史命令,預設是16條

[root@ecs-centos-7 ~]# fc -l

1 date

2 cd ~

3 fc -l

4 fc -lr

5 ls /home/tt

6 chage -l

[root@ecs-centos-7 ~]# fc -l -3

4 fc -lr

5 ls /home/tt

6 chage -l

[root@ecs-centos-7 ~]#

[root@ecs-centos-7 wl]# fc -l 530

530 date

531 chage -l tt

532 chage -h

533 chage -l root

534 fc -l

[root@ecs-centos-7 wl]# fc -l 531 534

531 chage -l tt

532 chage -h

533 chage -l root

534 fc -l

逆序顯示歷史命令,一般都是跟 -l 引數一起使用,下面是使用 -r 選項的例子。fc -l 選項顯示的是從1到2行的命令。執行 fc -lr 顯示的命令列數要包括前面 fc -l 的命令,所以結果會比前面多一行,執行逆序之後的行數是從3到1行, 具體的結果如下:

[root@ecs-centos-7 ~]# fc -l

1 date

2 cd ~

[root@ecs-centos-7 ~]# fc -lr

3 fc -l

2 cd ~

1 date

[root@ecs-centos-7 ~]#

顯示歷史命令時不顯示行號,一般都是跟-l引數一起使用, 下面的例子中沒有顯示行號

[root@ecs-centos-7 tt]# fc -l

1 date

2 chage -l tt

[root@ecs-centos-7 tt]# fc -ln

date

chage -l tt

fc -l

[root@ecs-centos-7 tt]#

-s [pat=rep] [command] 把 pat 命令替換成 rep 命令並執行,下面的例子把ls /home/tt替換成cd /home/tt命令,執行成功之後,當前目錄變成了/home/tt命令執行結果如下:

[root@ecs-centos-7 tt]# fc -l

1 date

2 ls /home/tt

[root@ecs-centos-7 tt]# fc -s cd=ls 2

ls /home/tt

[root@ecs-centos-7 tt]# pwd

/home/tt

[root@ecs-centos-7 tt]#

乙個有用的小技巧, 使用 fc -s 'pre' 可以自動執行最近乙個以 'pre' 開頭的命令,輸入fc -s命令 可以再次執行這個命令。

[root@ecs-centos-7 ~]# fc -l

1 ls /home/tt

2 chage -l

3 date

上面是歷史命令列表,執行fc -s 'da'命令會執行最近乙個以 'da' 開頭的命令,下面是具體的執行結果

[root@ecs-centos-7 ~]# fc -s 'da'

date

mon jun 29 20:26:33 cst 2020

[root@ecs-centos-7 ~]# fc -s 'l'

ls /home/tt

[root@ecs-centos-7 ~]# fc -s

ls /home/tt

從上面的結果來看,執行fc -s 'da'會執行最近一條以 'da' 開頭的命令,也即 date 命令。

執行fc -s 'l'命令會執行最近一條以 'l' 開頭的命令,也即ls /home/tt命令,緊接著執行fc -s命令,會再次執行一次ls /home/tt命令

linux下如何使用sftp命令。

舉例,如遠端主機的 ip 是 202.206.64.33或者是網域名稱www.hebust.edu.cn,使用者名稱是 fyt 在命令列模式下 sftp fyt 202.206.64.33或者 fyt www.hebust.edu.cn。回車提示輸入密碼。進入提示符 sftp ssh fyt 202...

linux下如何使用sftp命令

linux的命令有許多,今天著重來講下sftp吧!sftp 在命令列模式下 sftp fyt 202.206.64.33或者 fyt www.hebust.edu.cn。回車提示輸入密碼。進入提示符 sftp ssh fyt 202.206.64.33 其實sftp就是ssh 的乙個程式。sftp ...

Linux下如何使用vim命令

一 一般模式 刪除 複製與貼上類命令 x,x x為向後刪除乙個字元,x為先前刪除乙個字元 nx n代表數字 向後刪除n個字元 dd 刪除當前行 d 刪除當前行所有字元,試成為空行 ndd n代表數字 刪除游標所在行的向下n列 d1g 刪除游標所在行到第一行的所有資料 dg 刪除游標所在行到最後一行的...