shell编程(一):简单命令

1.默认使用 #!/bin/bash。

2.echo“hello”、echo ‘hello’和echo hello都可以打印hello,但是双引号不能打印!,只能放在双引号外面,或使用\转义。单引号不能打印变量值$var,会被原样输出。

3.printf格式化输出
这里写图片描述

4.获取pid:
ps –u root | grep filename 或pgrep filename

5.查看进程环境变量:
cat /proc/(进程pid)/environ

6.添加自定义环境变量/home/user/bin的方法:
Export PATH=”$PATH:/home/user/bin”
Shell自动在PATH环境变量所包含的目录列表中查找可执行文件

7.查看当前shell:
echo $SHELL

8.重定向问题:如 ls + 是一个错误命令
如果 ls + > out.txt,错误仍会输出到终端,因为我们重定向的是stdout;
如果 ls + 2>out.txt,错误就会输出到文件中了。
2>/dev/null,消除所有错误输出。
2>&1,stderr重定向到stdout的输出位置。

9.重定向脚本内部文本块:
这里写图片描述

10.文件打开方式有三种:只读、截断、追加。

exec 3<input.txt,使用fd为3打开并读取文件,这样以后在查看文件时可以用cat <&3。
而再次读取就不能用3了,需要重新分配描述符。
同样的,写文件和追加文件分别为:exec 4>output.txt和exec 5>>input.txt。

注意:exec的作用就是给文件指定相应操作的fd,且只能用一次。

11.数组的定义和打印:

array = {1 2 3 4 5},定义。
echo ${array[0]},打印一个。
echo ${array[*]},打印全部。
Echo ${#array[*]},打印个数。
Array={[index1]=val1 [index2]=val2},定义索引
Echo ${!array[*]},列出索引

12.别名:
Alias install=’sudo apt-get install’,起别名。
注意别名是临时的,当关闭终端就没了,所以为了一直存在,要存在~/.bashrc中,因为每个新的shell启动时都会执行~/.bashrc中的命令。
于是有:alias install=’sudo apt-get install’ >> ~/.bashrc
要删除将其在~/.bashrc中的语句删除或用unalias即可。

13.获取终端信息(tput和stty)
Tput cols或tput lines,获取列数和行数
这里写图片描述
Stty例子如下:
这里写图片描述

14.获取、设置时间和日期
Date,获取时间和日期。
Date +%s,获取纪元时,即从1970/1/1 0:0:0到现在的秒数,这个很有用,可以用来做时间戳。
这里写图片描述

15.调试脚本:
Bash –x script.h,启动调试。
将 #!/bin/bash替换为 #!/bin/bash –xv可以直接使用调试版本启动。

16.函数:
Fname() {echo $1; return0;},定义函数
Fork炸弹:
由于shell的函数可以递归调用,最后可能会死循环,可以通过修改配置文件/etc/security/limits.conf来限制可生成的进程数避免。
这里写图片描述

17.shell中()可以生成一个子shell,是独立的进程

18.read命令可以从键盘或stdin中读取文本。
-n 指定个数,-t 指定时间, -d 指定结束符

19.字符串比较时最好用双括号,单括号容易发生错误。使用test可以避免过多的使用双括号。

20.script和scriptreplay命令可以录制终端会话/播放命令序列
在两个终端上实现实时播放:
终端1上输入mkfifo myfifo,终端2上输入cat myfifo,终端1再输入script –f myfifo。
这样终端1输入的任何命令都可以在终端2上实时播放了。

常用命令:
cat、find、locate、md5sum、sort、uniq。

uniq用于消除重复内容,只对已经排序的有效,经常和sort一起使用:
Sort unsorted.txt | uniq,消除重复行
Sort unsorted.txt | uniq -d,显示重复行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值