Linux Shell 常用命令
Posted 云深不知、处
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux Shell 常用命令相关的知识,希望对你有一定的参考价值。
Linux Shell 中的反引号,单引号,双引号的区别
1.反引号位 (`):在Linux中起着命令替换的作用。命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置。
和$()是一样的。在执行一条命令时,会先将其中的 `` ,或者是$() 中的语句当作命令执行一遍,再将结果加入到原命令中重新执行,
例如:echo `ls`
会先执行 ls 得到 xx.sh等,再替换原命令为:echo xx.sh
[root@localhost ~]# echo today is $(date "+%Y-%m-%d") today is 2017-11-07 [root@localhost ~]# echo today is `date "+%Y-%m-%d"` today is 2017-11-07
注意:
[root@localhost ~]# echo Linux `echo Shell `echo today is `date "+%Y-%m-%d"```
Linux Shellecho today is 2017-11-07 #过多使用``会有问题
[root@localhost ~]# echo Linux `echo Shell $(echo today is $(date "+%Y-%m-%d"))`
Linux Shell today is 2017-11-07 ``和$()混合使用
[root@localhost ~]# echo Linux $(echo Shell $(echo today is $(date "+%Y-%m-%d")))
Linux Shell today is 2017-11-07 #多个$()同时使用也不会有问题
注释:反引号与$()都是命令替换
最大的区别为:转义字符的使用不同。
反引号中:若要使用转自字符需要\\\\
$()中:若要使用转义字符用\\
例1:反引号使用1个\\,$()使用1个
例2:反引号使用2个\\,$()使用1个
2.单引号he双引号
首先, 单引号和双引号,都是为了解决中间有空格的问题。
因为空格在linux中时作为一个很典型的分隔符,比如 string1=this is a string,这样执行就会报错。
为了避免这个问题,因此就产生了单引号和双引号。他们的区别在于,单引号将剥夺其中的所有字符的特殊含义,而双引号中的 \' $ \'(参数替换)和\' ` \'(命令替换)和 \' \\ \'是例外。所以,两者基本上没有什么区别,除非在内容中遇到了参数替换符$和命令替换符`。
所以下面的结果:
num=3
echo ‘$num’
$num
echo “$num”
3
所以,如果需要在双引号””里面使用这两种符号的直接含义,需要用反斜杠转义
摘取于:https://www.cnblogs.com/yasmi/articles/5129571.html
3.大括号、花括号 { }
大括号拓展。将对大括号中的文件名做扩展
第一种:对大括号中的以 逗号分割的文件列表进行拓展。如 touch {a,b}.txt 结果为a.txt b.txt。
第二种:对大括号中以点点(..)分割的顺序文件列表起拓展作用,如:touch {a..d}.txt 结果为a.txt b.txt c.txt d.txt
4.双中括号[[ ]]
5.单小括号 ()
①命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。
②命令替换。等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令。有些shell不支持,如tcsh。
③用于初始化数组。如:array=(a b c d)
6.单中括号 []
Test和[]中可用的比较运算符只有==和!=,两者都是用于字符串比较的,不可用于整数比较,整数比较只能使用-eq,-gt这种形式。无论是字符串比较还是整数比较都不支持大于号小于号。如果实在想用,对于字符串比较可以使用转义形式,如果比较"ab"和"bc":[ ab \\< bc ],结果为真,也就是返回状态为0。[ ]中的逻辑与和逻辑或使用-a 和-o 表示。
7${ }变量替换
一般情况下,$var与${var}是没有区别的,但是用${ }会比较精确的界定变量名称的范围
[root@hadoop000 WorkPath]# A=linux
[root@hadoop000 WorkPath]# echo $AB #输出为空
[root@hadoop000 WorkPath]# echo ${A}B # 精准的界定范围
linuxB
[root@hadoop000 WorkPath]#
更多详细介绍 :http://www.cnblogs.com/chengd/p/7803664.html
8.布尔运算符
== 可用于判断变量是否相等,= 除了可用于判断变量是否相等外,还可以表示赋值。
= 与 == 在 [ ] 中表示判断(字符串比较)时是等价的,例如:
1 2 3 4 |
|
最后两个语句是等价的
在 (( )) 中 = 表示赋值, == 表示判断(整数比较),它们不等价,比如
1 2 3 |
|
((n=5)) 表示赋值,((n==5)) 表示判断。
以上是关于Linux Shell 常用命令的主要内容,如果未能解决你的问题,请参考以下文章