Shell中的命令别名、命令历史和命令替换的方法

命令别名

可以使用 alias 命令查看和修改命令别名。

下面是一个查看系统中命令别名的示例:

$ alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'

可以看到, ls ls --color=auto 的别名,当键入 ls 并运行时,实际上运行的是 ls --color=auto 命令。

用户也可以自行创建或修改别名:

$ alias dt='date -d today +"%Y-%m-%d %H:%M:%S"'
$ dt
2018-06-30 12:15:37

上面的例子将 dt 作为 date -d today +"%Y-%m-%d %H:%M:%S" 的别名,当运行前者时,实际上运行的是后者。

用户还可以删除别名:

$ unalias dt

上面的命令删除了 dt 别名。

命令历史

在Shell提示符后按 <Up> <Down> (上箭头和下箭头)按键,可以翻出上一条和下一条命令,这是命令历史的功能。

使用 history 查看命令历史:

$ history

# 省略

634 ls
635 date
636 history

每一条命令都被赋予一个编号,使用 !编号 即可运行该编号的命令:

$ !635
date
Sat Jun 30 12:21:11 CST 2018

!! 可以运行上一条命令:

$ !!
date
Sat Jun 30 12:21:42 CST 2018

还可以对历史命令进行部分替换并执行,例如使用 history 查看时有一条这样的命令:

640 ls ~

使用 !number:s/pattern/replacement/ 将编号为 number 的命令中的 pattern 替换为 replacement ,比如将上面命令中的 ~ 替换为 . ,即执行 ls . ,可使用下面的命令:

$ !640:s/~/./

命令替换

使用 ` 完成将命令嵌入到另一条命令:

$ echo "Time is `date`"
Time is Sat Jun 30 12:31:28 CST 2018

事实上,Shell会首先执行 date 命令,得到 Sat Jun 30 12:31:28 CST 2018 ,之后再执行 echo "Time is Sat Jun 30 12:31:28 CST 2018" ,这样就实现了将 date 嵌入到 echo 中执行的命令。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Shell 命令替换的两种方式

    命令替换(command substitution)是指 Shell 执行命令并将命令替换部分替换为执行该命令后的结果. 命令替换有两种方式: 1. 使用 backtick 符号(即 ...,反引号,重音符号). 复制代码 代码如下: for i in `cd /old/code/dir ; echo *.c`do    diff -c /old/code/dir/$i $i | moredone 2. 使用 $(-) 的方式. 复制代码 代码如下: for i in $(cd /old/cod

  • Shell中使用grep、sed正则提取和替换字符串

    Linux中使用grep正则提取字符串 echo office365 | grep -P '\d+' -o find . -name "*.txt" | xargs grep -P 'regex' -o xargs会将find结果作为grep的输入,防止find结果过多无法处理 -P参数表明要应用正则表达式 -o表示只输出匹配的字符串,这样我们就可以把正则匹配到的结果拿到了. Linux.Mac OS中使用sed正则提取字符串 Mac OS上用正则的话要用e参数取代P参数,也可以用se

  • Shell中变量作用域的介绍与使用命令

    前言 众所周知Shell 中的变量只作用于当前进程.如需在子进程中创建副本可使用 export 内建命令. 有时使用临时变量语法可以非常方便. 变量使用 任何地方都可以定义 Shell 变量,使用 = 分隔变量名和变量值.= 前后不可出现空格,但变量的值可以留空. 读取变量需要添加$前缀. 变量作用域为当前进程. 例如: url=http://harttle.com echo $url export 到子进程 通常变量是不需要 export 的,但是当你需要把一个工作分割成若个小的任务, 分别用

  • shell中使用echo打印彩色字体和彩色背景的方法

    对于shell中的终端打印感觉很好玩! 首先知道shell中终端打印有echo printf一般常用的就是echo咯: 注:字体颜色 重置=0,黑色=30,红色=31,绿色=32, ***=33,蓝色=34, 洋红=35, 青色=36, 白色=37.  背景颜色 重置=0,黑色=40,红色=41,绿色=42, ***=43,蓝色=44, 洋红=45, 青色=46, 白色=47. 要打印彩色文本,可输入如下命令: 复制代码 代码如下: # echo -e "\e[1;36m \e[0m"

  • linux shell中curl 发送post请求json格式问题的处理方法

    今天在linux中使用curl发送一个post请求时,带有json的数据,在发送时发现json中的变量没有解析出来 如下 curl -i -X POST -H 'Content-type':'application/json' -d {"BTime":""$btime""} http://api.baidu.com 变量没有做解析 原来在shell中,"" '还是有很大区别的, 把修改后的curl发送贴出 atime=`dat

  • Shell中删除某些文件外所有文件的3个方法

    我的一位同事曾经问过我这样一个问题:在 Linux 下,如何 删除目录中除某些文件之外的所有文件?当时,我告诉他可 以通过模式匹配的方法解决.但其实,除此之外,还有其他 的方法,正所谓"条条大路通罗马".让我们来逐一看看. 假设要删除 ~/Downloads 目录中除 *.iso 和 *.zip 外的 所有文件,那么在 bash 中可以按以下方法处理: 方法1:模式匹配法 复制代码 代码如下: shopt -s extglob # 确认开启 extglob 选项 cd ~/Downlo

  • Shell中创建序列和数组(list、array)的方法

    关于linux数组定义,以及生成方法,请看:linux shell 动态生成 数组系列 seq使用技巧 .这里我主要说的是高效生成list 字符串,还有数组方法. 一.seq方法生成: [chengmo@centos5 shell]$ aNumList=$(seq 100); [chengmo@centos5 shell]$ echo $aNumList 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

  • Shell中去除字符串里的空格或指定字符的方法

    网上很多办法,虽然是对的,用起来结果不对.这里提供正确办法. 去掉开头的空格 $text=" 123 456 " # 这个写法,保证了得到正确的结果. text=`echo $text | sed -e 's/^[ \t]*//g'` # 这些方法没有测试,写法参照上面的. # 去掉尾巴的空格 sed 's/[ \t]*$//g' # 删除前.后空格,不删除中间空格 sed -e 's/^[ \t]*//g' -e 's/[ \t]*$//g' # 删除字符串中所有空格 sed 's/

  • 一天一个shell命令 文本操作系列-comm命令用法

    comm命令比较两个已排序文件每行数据的差异,并将其结果显示出来,如果没有指定任何参数,comm命令读取这两个文件,然后生成三列输出:1>仅在file1中出现的行2>仅在file2中出现的行3>在两个文件中都存在的行.   如果为文件名之一指定 -(减号),则 comm 命令会从标准输入设备读取数据. 题外话:说到比较文件,过来人都用过Beyond Compare,老版本时候,我们只能右键选中用于比较的文件,再选中被比较文件,对比. 如今他有了丰富的界面,支持linux上比较文件. 干什

  • Linux Shell中curl和wget使用代理IP的方法教程

    前言 大家都知道,在Linux Shell中提供两个非常实用的命令来爬取网页,它们分别是 curl 和 wget,本文将给大家详细介绍关于在Linux Shell中curl和wget使用代理IP的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看吧. curl 和 wget 使用代理 curl 支持 http.https.socks4.socks5 wget 支持 http.https 代理示例: #!/bin/bash # # curl 支持 http.https.socks4.so

  • Shell中的命令别名、命令历史和命令替换的方法

    命令别名 可以使用 alias 命令查看和修改命令别名. 下面是一个查看系统中命令别名的示例: $ alias alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' al

随机推荐