1.type [-tpa] name。通常直接不加参数使用.例如:
root@bh-ThinkPad-T560:~# type ls
ls 是 `ls --color=auto' 的别名
2.变量的显示与设置echo,unset
变量显示:echo格式echo $PATH或者echo${PATH}
变量的设置:name=bh
变量的取消:unset变量名称
3.env查看环境变量与常见环境变量说明
随机数RANDOM(随机产生0-32768):root@bh-ThinkPad-T560:~# declare -i number=$RANDOM*10/32768 ;echo $number
set查看环境变量与自定义变量
echo $?显示回传吗0代表正确,非0代表错误 ;export 变量名称 自定义变量转换为环境变量
4.键盘读取、数组、声明
read [- p t]变量;p后面接提示符、t后面接等待的秒数
root@bh-ThinkPad-T560:~# read -p "Please input your name:" -t 30 name
Please input your name:bh
root@bh-ThinkPad-T560:~# echo $name
bh
declare [-aixr]变量 -a定义数组 ;-i定义整数数字;-x把后面变量变成环境变量;-r设置成readonly类型
declare -i sum=100+50+20;declare -x sum变成环境变量;declare +x sum取消环境变量
数组定义:array=(10 20 30) 或者 array[0]=10 array[1]=20 array[2]=30
显示数组:echo${array[i]} ;显示数组所有元素echo${array[@]}或者echo ${array[*]};显示数组长度echo${#array[@]}或者
echo ${#array[*]};删除数组第二个元素 unset array[1] (unset仅仅只清除array[1]的值,并没有将array[1]删除掉)删除数组
unset array ;输出数组的第1-3项echo ${array[@]:0:3} 参考“${数组名[@或*]:起始位置:长度}” 将数组中的0替换成1:echo ${a[@]/0/1}
${数组名[@或*]/查找字符/替换字符
5.变量内容的删除、替代与替换
删除替代 替换6.别名设置alias rm='rm -i'取消别名unalias rm
7.bash的登录与欢迎信息/etc/issue,/etc/motd。当使用telnet连接到主机,主机的登录页面会显示/etc/issue.net而不是/etc/issue;登陆后用户可以看到的一些信息,可以设置到/etc/motd里
8.组合按键Ctrl+C终止目前命令;Ctrl+D输入结束(EOF);Ctrl+M就是enter;Ctrl+S暂停屏幕输出;Ctrl+Q恢复屏幕的输出;Ctrl+U在提示符下将整行命令删除;Ctrl+Z暂停目前命令
9.数据流重定向
标准输入:代码0 使用<或<<;标准输出:代码1:>或>>;标准错误输出:代码2使用2>或2>> 这里面所有的>都是覆盖模式>>都是累加模式,输入模式中<代表输入流, <<代表结束输入,例如cat>file <<"eof" 当输入eof时候结束输入。
输出例子:ls -l /etc > ~/etcbck;使用输入留代替键盘的输入:cat > catfile <file 这里file作为键盘的输入给catfile
10.与或符
cmd1&&cmd2 若cmd1执行完毕且正确,则cmd2执行;若cmd1执行完毕且错误 则cmd2不执行
cmd1||cmd2 若cmd1执行完毕且正确执行,则cmd2不执行 若cmd1执行完毕且错误,则cmd2执行
通常一个判断式为 cmd1 && cmd2 ||cmd3 才可能让正常从左到右执行
11.管道命令
选取命令cut、grep
cut -d '分隔字符' -f fields 例如:echo $PATH|cut -d ':'-f 5这是用:作为分隔符,选取第五个 若想选取范围 则cut -d ':' -f 3,5
cut -c 字符范围 用于选取一个范围内的数据 例如export |cut -c 12- 这个例子选取了export的输出流,找出了字符12个以后的列显示在屏幕上
grep [-acinv] [--color=auto] '查找字符串' filename -a:将binary文件以text文件的方式查找数据
-c计算找到'查找字符串'的次数;-i忽略大小写的不同;-n输出行号;-v反向选择,即显示出没有'查找字符串'内容的那一行 例子:last |grep 'root'有root就取出来
排序命令:sort、wc、uniq
sort [-fbMnrtuk] [file or stdin]-f忽略大小写 ;-b忽略最前面空格部分 -M以月份来排序;-n使用纯数字进行排序;-r反向排序;-u就是uniq,相同的数据中,仅出现一行代表;-t分隔符,默认用【Tab】键分隔;-k以那个区间(field)来进行排序
cat /etc/passwd |sort 默认是以“第一个”数据来排序;
uniq[-ic] -i忽略大小写-c进行计数 用于将重复的数据仅列出一个显示
wc[-lwm] -l仅列出行;-w仅列出多少字(英文单字) -m多少字符
双向重定向:tee
tee [-a] file -a以累加的方式把数据加入file中 例如 ls -l /home |tee ~/file
字符转换命tr、col、join、paste、expand
tr删除一段信息当中的文字或者进行文字信息的替换
tr [-ds] SET1 -d删除信息当中的SET1这个字符串;-s替换到重复的字符
例子:last输出小写转大写 last | tr '[a-z]' '[A-Z]'
col [-xb]-x把tab键转换成对等的空格键;-b在文字内有反斜杠(\)时,仅保留反斜杠最后接的那个字符
join 把两个文件当中有相同数据的那一行加在一起 join [-t i 1 2] file1 file2
-t默认以空格符分隔数据,并且对比“第一个字段”的数据,如果两个文件相同,则将两条数据连城一行,且第一个字段放在第一个;-i忽略大小写差异;-1代表第一个文件要用哪个字段来分析;-2代表第二个文件要用哪个字段来分析
paste [-d] file1 file2 -d后面接分隔字符,默认以[tab]键分隔 -如果file部分写成-,表示来自standard input的数据 paste直接把两行粘贴在一起
expand把tab键转换成空格键 expand[-t] file -t后面可以接数字,一个tab可以用8个空格替换
切割命令split
split[-b l ] file PREFIX
-b后面可接欲切割成的文件大小,可加单位 例如b,k.m;-l以行数来进行分割;PREFIX代表前导符 例如:split -b 300k /etc/termcap termcap
将分割出来的小文件合成一个文件:cat termcap* >> termcapback
关于-的使用 (stdin与stdout都可以利用-来替代)
tar -cvf - /home | tar -xvf - 这个例子把/home里面的文件打包,打包的数据传送到stdout,通过管道,传送给后面,而后面的-是取用前一个命令的stdout。
网友评论