1.数组:
xx=(aa bb cc dd),定义一个数组xx,里面的值分别为aa,bb,cc,dd。
echo ${xx[0]},查看数组xx的第一个元素;
echo ${xx[*]}查看数组的所有元素,或echo ${xx[@]}查看数组的所有元素。
echo ${!xx[@]},查看所有的下标。
echo ${#xx[@]},查看数组有几个元素。
2.declare -r xx,将xx设为只读的变量,也可使用readonly xx 将xx设为只读变量。
3.echo "$xx" 当变量出现在双引号中会正常解析;
echo '$xx' 当变量出现在单引号中没有意义,只是按字符串处理,,没有特殊意义。
echo ${xx},最标准的引用变量,要加上大括号,可以防止系统理解错误。例如xx=book ; echo "我买了10本$xxs"本意是想输出我买了10本书,但实际输出的是我买了10本。使用xx=book ; echo "我买了10本${xx}s"则不会出现歧义。
命令嵌套echo "xxxxxxxxxxxxxx `hostname` xxxxxxxxxxxxxx",或echo "xxxxxxxxxxxxxx $(hostname) xxxxxxxxxxxxxx",(反引号或$()里面的写嵌套的命令)。
4.ulimit -a 查看所有的限制。
5.r=${xxx#*yyy},将xxx变量中最近含有yyy之的都删除(#表示删除最近的一个,* 表示所有字符,*yyy就是不管yyy前面是什么字符);
r=${xxx##*yyy}表示将xxx变量中删到最远出现yyy地方。一个#表示从头向后删除,尽量删的多,两个#表示从头向后删,尽量山的删的多。
r=${xxx%yyy*},从后往 前删,将最近一次出现yyy后的都删除;
r=${xxx%%yyy*},从后往前删,将最后一次出现yyy后的都删除。
6.r=${xx-"yyy"},如果xx变量存在则将xx的值赋给r,若果xx变量不存在则将yyy赋给r。
r=${xx:-"yyy"},如果xx不存在或xx存在但值为空,则将yyy赋给r。
r=${xx:="yyy"},如果xx变量不存在或存在值为空,则将yyy赋给xx,再将xx赋给r。
r=${xx:?"yyy"},如果xx不存在或存在值为空,只会出现yyy警告/提示信息,若存在且支部为空则会将xx的值赋给r。
r=${xx:+"yyy"},若xx存在且不为空则将yyy赋给r。
7. alias 可以查看系统中做了哪些别名。
alias xx="yyy",将命令yyy取一个别名xx。
unalias xxx 将xxx别名取消。
8.echo &HISTFILESIZE 查看可以记录多少历史命令。
history -c 清除所有历史命令;
history 查看所有历史命令。
type -a xxx 可以查看xxx命令的执行顺序。
9.vim /etc/issue 更改登陆前的系统显示信息。
vim /etc/motd 更改登陆后的显示信息。
10. login-shell ,no-login shell, vim /etc/profile 这个文件设置了整个环境的全局变量。
vim /etc/inputrc 设置了使用shell常用的快捷键;
vim /etc/profile.d 依次执行这三个文件后,进入home目录后.bash_profile。
11.Ctrl+z 将一个进程放进后台。
12. stty -a 查看终端机的快捷键。
13.set -u 在引用变量前检查该变量是否定义,若没有定义则显 示提示信息(-u 开启此功能 ,+u 关闭此功能)。
set -x 会跟踪我执行的每一个操作(-x 开启此功能,+x 关闭此功能)。在脚本中使用set -x 命令可以排错。
14.[]一对中括号匹配一个字符,?表示一个任意字符,^或!表示非。* 表示0个或多个任意字符。
15. xxx > yyy 将xxx命令的结果输出到yyy文件中(本来xxx命令的结果是输出到屏幕上的),若yyy文件存在则会将其中的内容清空再写入输出结果,若不存在则会创建该文件在输出结果。
xxx >> yyy 将xxx命令的结果输出到yyy文件中(本来xxx命令的结果是输出到屏幕上的),若yyy文件存在则会在其原内容后追加输出结果,若不存在则会创建该文件在输出结果。>和 >>只能重定向正确的结果 ;2>和2>>只能重定向错误的结果。&> 不论结果正确与否都可以重定向记录。
xxx 2> yyy 1>&2 表示xxx虽然是正确的命令但是要像错误命令一样将结果导入到yyy文件中。xxx > yyy 2>&1 表示xxx虽然是错误的命令但是要像正确命令一样将结果导入到yyy文件中。
16.tr 字符转换命令 tr 'a-z' 'A-Z' < xxx 将xxx文件中小写的a到z转换成大写的A到Z。(< 输入重定向)。 cat > xxx << yy
aaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbb
ccccccccccccccccc
yy
将输入的内容(内容里也支持使用变量)写到xxx文件中(以yy开头就要以yy结尾)。
17.echo $? 查看刚刚执行的命令是否是正确的,正确的输出为0,错误输出为非0的数。
xxx && yyy xxx命令与yyy命令同时执行成功才返回0,如xxx执行失败则不会执行yyy 。
xxx || yyy xxx与yyy命令只要有一个执行成功就返回0,若xxx执行成功则不会执行yyy。
18.管道命令:
xxx | yyy xxx执行的结果是yyy命令的参数。
grep xxx yyy 在yyy文件中过滤含有xxx的行。如:ifconfig eth0 | grep 'inet addr' 用grep 命令过滤ifconfig eth0命令中输出的结果中含有inet addr 的行。xxx |yyy | zzz ..... 可以多可命令一起使用原理相同。
19. xxx | tee yyy | zzz 将xxx的命令的输出结果通过管道传给tee ,tee将结果存储到yyy文件中 ,再将tee执行结果通过管道传给zzz命令,作为zzz命令的参数。(tee 是覆盖原有内容,tee -a 是在原有内容的基础上追加)。
20.cut -dx -fy zzz 将zzz文件按x分隔符分割并查看第y部分(-d 指明分隔符 -f 指明查看第几部分)。
last 可以查看用户登陆的信息。
21.grep -i xxx yyy --color在yyy文件中过滤出含有xxx的行不区分大小写并将xxx高亮显示(-i 不区分大小写,--color 高亮显示)。
grep -inv xxx yyy --color(-n 显示行号 ;-v 反向过滤即将含有xxx的那几行不显示,显示其余的行)。
grep -An xxx yyy 将yyy文件中含有xxx的那行连同其一下的n行都够滤出来(-A )。
grep -Bn xxx yyy 将yyy文件中含有xxx的那行连同其一下的n行都够滤出来(-B )
22.sort 排序。默认按字符排序,-n 按数字大小排序,-r 反向排序 ,-u 排除重复的行。
sort -tx -ky zzz 将zzz文件以x分隔符分割,取第y部分。
23.uniq -c 统计重复的个数。
wc xxx 统计xxx文件的信息(行号,单词数(以空格分割的就是一个单词),字符数,文件名),-l 统计行号,-w 统计单词数,-c 统计字符。
ls -1 /xxx | wc -l 统计xxx目录下有多少个文件。
24.col -x和expand都是把tab键转换为空格。
cat -A xxx 显示xxx文件全部字符(包括tab键,结束符等)。
25.paste xxx yyy 把xxx文件与yyy文件组在一起,并显示出来但并没有动这两个文件里面的内容。cut 是把文件弄成一条一条的。
join -t "x" yyy zzz 将yyy与zzz文件按x分隔符分割,并拿第一部分作比较,若相同则可以拼接到一起,若不同则不能拼接到一起。
join -t “x” -1 n yyy -2 m zzz 将第1个文件yyy的第n部分与第2个文件zzz的第m部分进行对比若相同则拼接(yyy zzz 以x作为分隔符分割)。
26.split 可以将大文件分割成小的文件。
split -b xx yyy zzz 将yyy文件分割成xx大小的多个文件,每个文件以zzz开头( -b 分割块每块的大小)。
cat zzz* > yyy 将分割好的以zzz开头的文件合并成一个yyy文件。
diff xxx yyy 比较xxx文件与yyy文件有什么不同,若相同则没有输出。
27.xargs 大多时候与find一起使用。
find -name ‘xxx*’ | xargs ls 将以xxx开头的文件找出来,并用ls 将其列出。因为如果不加xargs 则管道不生效,所以xargs一般用在管道不生效的地方。
阅读(1788) | 评论(0) | 转发(0) |