bash学习

2017-12-19  本文已影响0人  CaptainWhite

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。

上一篇 下一篇

猜你喜欢

热点阅读