双引号仍然可以保有变量的内容,但单引号内仅能是一般字符,而不会有特殊符号
name=abc
echo $name
显示:abc
myname="$name is me"
echo $myname
显示:abc is me
myname='$name is me'
echo $myname
显示:$name is me
使用“`…`”扩起来的内容会优先执行。例如
cd /lib/modules/`unmae -r`/kernel
便会先执行unmae -r的内容。然后再处理整个数据
env
其中:
set
其中:
提示符:(命令行前面的显示)
[budding@budding ~]
具体修改方法可以查看man
: : :本身也是一个变量。代表目前这个shell的线程代号。
?:上个执行命令的回传码
read [-pt] variable
-p:后面可以接提示符
-t:后面可以接等待的“秒数”
declare [-aixr] variable
- 后面什么都没有加,用法和set一样
-a:将后面的变量定义为数组类型
-i:将后面的变量定义为整数数字类型(目前最高精度是整数)
-x:用法和export一样,将后面的变量设置为环境变量
-r:设置变量为readonly。不可被修改
个人觉得这个数组的声明在这里没有很大的作用,和普通变量类型。可能在shell script才会比较有用吧。
列出所有的限制额度
ulimit -a
可以根据提示进行设置。例如设置最大的文件容量。可以使用下面的命令:
limit -f 10240
复原ulimit的设置最简单的方法就是注销之后再登录。
使用命令
history [n] 查看最近n条命令
history [-c] 将目前shell中的所有history内容全部清除
!number:执行第number条命令
!command:执行最近以command开头的命令
!!:执行最近的命令。
重定向就是将原本要出现在屏幕上的数据传输到其他的地方。
标准输入:代码为0,使用< 或者<<
标准输出:代码为1,使用> 或者>>
标准错误输出:代码为2,使用2> 或者2>>(注意区分标准输出,多了个数字2)
> 和>>的区别:>会直接重新覆盖原有内容。而>>会在最后追加
示例:
标准输出:
ll / > ~/rootfile
标准错误输出:
find /home -name .bashrc 2> errorlist
分别输出到不同文件
find /home -name .bashrc > list_right 2>errorlisr
对于不想处理的错误输出,可以扔到垃圾桶黑洞中:/dev/null
cmd; cmd;
cmd1 && cmd2
- cmd1执行完毕且正确执行,则开始执行cmd2
- cmd1执行错误,则cmd2不执行
cmd1 || cmd2
- cmd1执行正确,则cmd2不执行
- cmd1执行错误,则cmd2执行
cut -d '分割字符' -f fields
cut -c 字符范围
-d:后面接分割字符,与-f一起使用(不能单独使用)
-f:依据-d的分割字符将一段信息切割成为数段,用-f取出第几段的意思
-c:以字符的单位取出固定字符区间
示例:
//以“:”为分割,取出第3和第5条
echo $PATH | cut -d ':' -f 3,5
grep [-acinv] '查找字符串' filename
-a:将binary文件以text文件的方式查找数据
-c:计算找到“查找字符串”的次数
-i:忽略大小写的不同
-n:顺便输出行号
-v:反向选择。显示没有找到“查找字符串”内容的那一行
示例:
last | grep 'root'
sort [-fbMnrtuk] [file or stdin]
-f:忽略大小写的差异
-b:忽略最前面的空格符部分
-n:使用“纯数字”来进行排序(默认是以文字类型来排序)
-r:反向排序
-u:就是uniq,相同的数据中,仅出现一行代表
-k:以那个区间来进行排序的意思
示例:
cat /etc/passwd | sort
last | cut -d ' ' -f1 | sort | uniq
wc [-lwm]
-l:仅列出行
-w:仅列出多少字
-m:多少字符
介绍:tee会同时将数据流送与文件和屏幕。(相当于同时流两份内容到不同地方,一份去文件,一份流向屏幕)
tee [-a] file
-a:以累加的方式
示例
last | tee last.list | cut -d ' ' -f1
tr [-ds] SET1
-d:删除信息当中SET1这个字符串
-s:替换掉重复的字符
示例
所有小写变大写
last | tr '[a-z]' '[A-Z]'
col [-xb]
-x:将tab键转换成对等的空格键
示例:
可以使用cat -A file 显示出所有特殊键
man col > /root/col.man
paste [-d] file1 file2
-d:后面可以接分割字符,默认是以tab来分割的
expand [-t] file
-t:后面可以接数字,一般来说,一个tab按键可以用8哥空格键替换
-unexpand
将空白转成tab的命令
split [-bl] file PREFIX
-b:后面可以接欲切割成的文件的大小,可加单位。例如b,k,m等
-l:以行数来进行切割
PREFIX:前导符,可以作为切割文件的前导文字
示例:
split -b 300k /etc/termcap termcap
会自动生成termcapaa、termcapab、termcapac等
合并:
cat termcap* >> termcapback
可以用来代替命令间的stdin和stdout
示例:
tar -cvf - /home | tar -xvf -
前面一个’-‘代表tar -cvf产生的stdout
后面一个’-'代表取前面一个命令的stdout