ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Unix & Linux 教程学习_7

2019-08-29 16:06:18  阅读:213  来源: 互联网

标签:教程 shell 编号 键入 命令 Unix fc Linux date


13.14命令替换

shell提供的一个最神奇、强大的特点:命令替换(command substitution)。 命令替换允许在一条命令中嵌入另一条命令。shell首先执行嵌入的命令。并且输出替换该命令。然后shell再执行整个命令。
基本语法: 通过将一条命令封装在(反引号)字符中,可以将它嵌入到另一条命令中,例: >echo \"The time and date are \date`. "

这个例子中,date命令就封装在反引号中。shell首先求date命令的值,并将date命令的输出替换到较大的命令中,然后,执行较大的命令(这个例子中就是echo).
假如现在时间是"2019年8月29日 星期四 13时53分51秒 CST"。则之前的命令就会被其值替换修改成:

echo "The time and date are 2019年8月29日 星期四 13时53分51秒 CST "

然后shell执行echo命令,生成最终输出:

The time and date are 2019年8月29日 星期四 13时53分51秒 CST

13.15 键入命令并进行修改

当需要进行一个微小修改而不得不键入整个命令是不方便的,为了方便,shell提供了几个特性,从而使命令的输入大为简化。这些特性包括:历史列表、命令行编辑、自动补全和别名.

13.16 历史列表:fc、history

fc(fix command)命令: Bourne shell家族,可以用fc命令加__-l__(list, 列举)选项显示历史列表,C-Shell家族用history命令:

fc -l
history

通过事件编号也可以调取并执行特写的命令。对于Bourne shell,可以__-s__(substitute)选项,后面跟事件编号,例如,假设希望重新执行编号24的命令,可以使用:

fc -s 24
!24
对于C-Shell,只需键入一个!(bang)字符,后面跟事件编号即可。注意, !之后不能有空格:

重新执行上一条命令:

fc -s
!!
\(~~\)//C-Shell用两个!!

两种shell都允许在重新执行命令前做些小修改:

fc -s pattern=replacement number
!number:s/pattern/replacement/
patternreplacement都是字符串,number是事件编号.
例如,事件编号25的命令是一条启动vi编辑器并打开一个叫tempfile的文件的命令:
25 vi tempfile
假设希望再次执行这条命令,但这次希望打开一个叫data的文件,可以这样:
fc -s tempfile=data 25
!25:s/tempfile/data/

如果不指定事件编号,则默认为上一条命令.
例如,希望执行date命令,但不小心输成了datq, 将显示一个错误消息:

$ datq
datq: command not found.
因此您希望将q修改成e, 然后再重新执行这条命令。则可以:
fc -s q=e
对于C-Shell可以这样:
^pattern^replacement
例:
^q^e

假设您希望复制masterdate文件,并将副本命名为backup. 这时可以用cp命令,但是您键入了:

cp masterxate backup
您得到了一个错误消息,因为不小心键入了x,而不是d.
为了修复这个错误并重新运行该命令,只需要输入下述命令即可:
^x^d

标签:教程,shell,编号,键入,命令,Unix,fc,Linux,date
来源: https://www.cnblogs.com/cnyxj/p/11430150.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有