zoukankan      html  css  js  c++  java
  • Linux 下如何使用 fc 和 alias 命令

    使用Linux的过程中,在处理很长的并且包含复杂的语法的命令时,如果不小心犯了一点小错误,需要重新输入整个命令以及参数,直到命令执行成功为止。另一种选择是使用 fc 命令编辑并重新运行前一个命令,而无需重新输入整个命令以及参数。

    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]
    

    -e 选项

    使用指定的编辑器编辑,默认是 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]#
    

    -l 选项

    列出最近的历史命令,默认是16条

    • 不带参数,默认显示最近的16条命令
    [root@ecs-centos-7 ~]# fc -l
    1        date
    2        cd ~
    3        fc -l
    4        fc -lr
    5        ls /home/tt
    6        chage -l
    
    • 显示最近的指定行数,下面的命令显示最近的3行
    [root@ecs-centos-7 ~]# fc -l -3
    4        fc -lr
    5        ls /home/tt
    6        chage -l
    [root@ecs-centos-7 ~]# 
    
    • 指定起始行号,显示从指定行号到末尾行的命令,下面的命令显示行号为530到末尾行的命令
    [root@ecs-centos-7 wl]# fc -l 530
    530      date
    531      chage -l tt
    532      chage -h
    533      chage -l root
    534      fc -l
    
    • 指定起始行号以及结束行号,显示指定行号区间的命令,下面的命令显示行号从531-534的命令
    [root@ecs-centos-7 wl]# fc -l 531 534
    531      chage -l tt
    532      chage -h
    533      chage -l root
    534      fc -l
    

    -r 选项

    逆序显示历史命令,一般都是跟 -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 ~]#
    

    -n 选项

    显示历史命令时不显示行号,一般都是跟-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 选项

    -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 命令

    出处:https://www.cnblogs.com/wanng/p/linux-fc-command.html

    =======================================================================================

    Linux 下如何使用 alias 命令

    有时我们会重复多次的进入项目的目录,如果目录很深的话,每次都需要输入很长的命令,而且有时候路径错了一个字母,就需要修改出错的位置,完全正确之后才会进入正确的目录。

    现在有一种方法可以很便捷的解决重复输入以及输入错误的问题,那就是 alias 命令,简单来说, alias 就是把一些长的繁琐的命令变成一个短的便于记忆的命令

    语法

    alias [-p] [name='value']
    
    -p : 查看已添加了哪些别名
    
    name='value': 把 'value' 的别名设置为 name
    

    用途1:缩短输入命令的长度

    例如: 项目目录是 /home/tt/project/branches/release/code/server 每次进入都需要输入 cd /home/tt/project/branches/release/code/server 命令,通过
    alias pr_code='cd /home/tt/project/branches/release/code/server' 把上面很长的命令设置成一个简短的命令,后面进入项目目录的话只需要执行 pr_code命令即可,下面是具体的过程

    [tt@ecs-centos-7 ~]$ alias pr_code='cd /home/tt/project/branches/release/code/server/'
    [tt@ecs-centos-7 ~]$ pwd
    /home/tt
    [tt@ecs-centos-7 ~]$ pr_code
    [tt@ecs-centos-7 server]$ pwd
    /home/tt/project/branches/release/code/server
    
    

    从上面的结果可以看出,执行 pr_code 命令,相当于执行了 cd /home/tt/project/branches/release/code/server/ 命令,对于一些很长的又常用命令可以通过 alias 设置成短的命令,使用起来更便捷

    用途2:内置命令设置默认选项

    例如:df 是查看系统磁盘信息的命令,但是默认结果显示不是按照人类习惯的方式,可以把 -h 选项设置为 df 的默认选项,具体命令结果如下:

    [root@ecs-centos-7 ~]# df
    Filesystem     1K-blocks     Used Available Use% Mounted on
    devtmpfs         1929572        0   1929572   0% /dev
    tmpfs            1939936        0   1939936   0% /dev/shm
    tmpfs            1939936    33316   1906620   2% /run
    tmpfs            1939936        0   1939936   0% /sys/fs/cgroup
    /dev/vda1       41152736 20456832  18582420  53% /
    tmpfs             387988        0    387988   0% /run/user/0
    [root@ecs-centos-7 ~]# alias df='df -h'
    [root@ecs-centos-7 ~]# df
    Filesystem      Size  Used Avail Use% Mounted on
    devtmpfs        1.9G     0  1.9G   0% /dev
    tmpfs           1.9G     0  1.9G   0% /dev/shm
    tmpfs           1.9G   33M  1.9G   2% /run
    tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
    /dev/vda1        40G   20G   18G  53% /
    tmpfs           379M     0  379M   0% /run/user/0
    

    用途3:命令交互提高安全性

    修改命令的交互选项,可以强制用户二次确认希望执行的命令,避免误用或滥用了一些命令,造成不可挽回的损失。

    例如:rm 命令默认是直接删除,没有二次确认的,这样很容易误删一些重要的资料,可以把 -i 选项作为 rm 的默认选项,具体的命令结果如下:

    • rm 没有设置默认选项
    [root@ecs-centos-7 ~]# ls
    a.txt  lrzsz-0.12.20  lrzsz-0.12.20.tar.gz  tmp
    [root@ecs-centos-7 ~]# rm a.txt 
    [root@ecs-centos-7 ~]# ls
    lrzsz-0.12.20  lrzsz-0.12.20.tar.gz  tmp
    [root@ecs-centos-7 ~]# 
    
    • rm 设置了默认选项
    [root@ecs-centos-7 ~]# ls
    a.txt  lrzsz-0.12.20  lrzsz-0.12.20.tar.gz  tmp
    [root@ecs-centos-7 ~]# alias rm='rm -i'
    [root@ecs-centos-7 ~]# rm a.txt 
    rm: remove regular file ‘a.txt’? y
    [root@ecs-centos-7 ~]# 
    

    从上面例子可以看出,rm 命令设置了 -i 默认选项以后每次执行 rm filename 时都会有一个二次确认,通过这种方式,可以避免一些误删除的操作

    注意

    • 定义的别名只针对当前SSH连接有效,如果需要针对当前用户有效,需要把alias pr_code='cd /home/tt/project/branches/release/code/server/' 加入到 ~/.bashrc配置中,如果需要针对所有用户有效,需要把 alias pr_code='cd /home/tt/project/branches/release/code/server/' 加入到/etc/bashrc 配置中

    • 编辑过的配置不会立即生效,需要执行 source ~/.bashrc命令或者重新连接SSH

    • 撤销别名, unalias -a 插销全部别名,unalias 别名 撤销指定的别名

    出处:https://www.cnblogs.com/wanng/p/alias-command.html

    您的资助是我最大的动力!
    金额随意,欢迎来赏!
    款后有任何问题请给我留言。

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐按钮。
    如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我。(●'◡'●)

    如果你觉得本篇文章对你有所帮助,请给予我更多的鼓励,求打             付款后有任何问题请给我留言!!!

    因为,我的写作热情也离不开您的肯定支持,感谢您的阅读,我是【Jack_孟】!

  • 相关阅读:
    磁盘冗余 ---RAID磁盘管理
    linux磁盘管理
    linux基础命令
    Apache配置rewrite
    memcache运维整理
    mysql主从配置
    rsync相关整理
    Lua 学习笔记(六)
    Lua 学习笔记(五)
    Lua 学习笔记(四)
  • 原文地址:https://www.cnblogs.com/mq0036/p/14784225.html
Copyright © 2011-2022 走看看