前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Shell中的命令别名、命令历史和命令替换

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

作者头像
mwangblog
发布2018-07-04 11:25:43
1.4K0
发布2018-07-04 11:25:43
举报
文章被收录于专栏:mwangblogmwangblog

命令别名

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

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

代码语言:javascript
复制
$ 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'

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

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

代码语言:javascript
复制
$ 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"的别名,当运行前者时,实际上运行的是后者。

用户还可以删除别名:

代码语言:javascript
复制
$ unalias dt

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

命令历史

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

使用history查看命令历史:

代码语言:javascript
复制
$ history

# 省略

634  ls
635  date
636  history

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

代码语言:javascript
复制
$ !635
date
Sat Jun 30 12:21:11 CST 2018

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

代码语言:javascript
复制
$ !!
date
Sat Jun 30 12:21:42 CST 2018

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

代码语言:javascript
复制
640  ls ~

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

代码语言:javascript
复制
$ !640:s/~/./

命令替换

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

代码语言:javascript
复制
$ 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中执行的命令。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 mwangblog 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 命令别名
    • 命令历史
      • 命令替换
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档