首页 > 代码库 > shell总结
shell总结
1 tr命令 处理文本中的内容
tr -d ‘\r‘ <file.txt|sort >file2.txt
参数:-c 取反
-C
-d 删除字符
-s 浓缩重复字符
特殊文件:/dev/null /dev/tty
2 .profile 文件中的PATH
PATH=$PATH:$HOME/bin 永久生效
3 执行跟踪 (看程序都做了什么)
set -x 打开执行跟踪
set +x 关闭执行跟踪
4 脚本语言 shell 编译型语言 c++
5 sed 命令
-e ‘editing command‘ -e ‘‘ .. 可以有多个
-f 读取编辑命令
6 变量 判断 重复动作
1)位置参数=命令行参数
2)$(( ))里面可以进行算数表达式
3)readonly 和 export
readonly 使变量不得修改
export 用于修改环境变量
env -i 用来初始化环境变量
env -i path=$path home=$home
4)删除变量
unset full_name
unset -v
unset -f 删除函数
who_is_on () {
who |awk ‘{print $1}‘ |sort -u
}
...
unset -f who_is_on
5)参数展开
{} 花括号本身也是很好用的,当你需要在变量名称之后马上跟一个 可能会解释成名称的一部分字符,这个时候就用{ }
${varname : -word} 存在,返回其值
不存在或未定义 返回word
$# 目前进程参数个数
$@ 传递给当前进程的命令行参数
for i in $@
do
echo $i
done
结果:hello hi there greetings
for i in "$@"
do
echo $i
done
结果:hello hi there greetings
$? 前一个命令的返回状态值
$$ shell 进程的pid
$0 shell 程序的名称
$! 最近一个后台的pid
6)read 将信息读入一个或多个shell变量
while read 变量1 变量2
do
....
done</etc/passwd
IFS 内部字段分割器
while IFS=: read user pass uid
do
....
done
7)环境变量:
作用范围:当前shell,及其子shell
export varname
export varname=2
declare -x varname=value
export PATH=/usr/local/apache/bin:$PATH
查看:env
7特殊变量
$? 命令状态返回值 成功:0
失败:1-255
命令替换:用命令的执行结果替换命令
`date +%F` 显示几月几日
取结果 1)``
2)$( )
touch file-`date +%F-%H-%M-%S`
file-2012-09-19-14-45-17 备份时候很有用
Num=`seq 1 2 100`
变量的周期跟你的进程相关联
8变量的读取顺序
bash
全局:/etc/profile -----/etc/profile.d/* --------/etc/bashrc
个人:~/.bash_profile ~/.bashrc ~/.bash_history
profile类:设置环境变量
bashrc类:本地变量
重新读取配置文件的命令:source或者.
设置别名:
alias cdnet=‘cd /etc/sysconfig/network-script/‘
unalias cdnet 撤销
9 标准输入,标准输出,标准错误输出
0 1 2 -------------$?
command >>file 追加输出
/dev/null 数据黑洞 吞噬数据
/dev/zero 泡泡机 吐数据
/dev/random 随机生成器
tr ‘a-z‘ ‘A-Z‘ </etc/passwd 输出重定向
command << "EOF"
结束符
错误重定向:command 2>file
command 2>/dev/null
正确错误都重定向:
command >file 2>&1
| 管道符 只传递正确信息
more less 分页显示
file ‘command‘ 查看文件类型
uniq 忽略重复行
uniq=sort -n
tee 一个输入,两个输出 1)保存到文件
2)屏幕显示
command |tee /tmp/out |command
10 正则表达式
1)基本正则
.任意单个字符
*匹配前字符0次或多次
?匹配前字符0次或1次
[]指定范围内的单个字符
[^ ]指定范围内以外的字符
\{m,n\} 精确表示 从m到n次
\{m,\} 至少m次
\{0,n\} 至多n次
次数匹配(贪婪模式)
grep ‘a[[:space:]]*b‘ yy.txt
[[:space:]]表示空格 (更精确)
.*匹配任意长度字符
分组字符
\(\) x\(ab\)*y
grep 选项
-v 取反
-i 不区分大小写
-o 只显示匹配的字符串
-E 扩展定则
-A
-B
-C
都是显示匹配行的附近显示行
--color 颜色显示
单引号:强引用 ------------一般对字符串引用
双引号:弱引用 ------------一般内容含有变量
2)扩展正则
次数匹配:
*
?
+ 其前字符至少一次 相当于正则里的\{1,n\}
{m,n} m到n次
grep -E=egrep
11 bash 的算术 ------------------只支持整数运算
+ - * / %(求余数)
++ -- 这些是变量
$[2+3]或者$(( ))里面可以做算术运算
浮点运算:
echo ‘scale=6;3/2‘ | bc
精确到六位的小数运算
12 逻辑关系 &&&&&&&&&&&&&&&&&&&&&&&&很重要&&&&&&&&&&&&&&
&& 逻辑与 第一个表达式为真,然后继续执行 第一个为假,那就不执行了
|| 逻辑或 第一个表达式为真,然后就不用执行 第一个为假,后边必须执行
! 非
13 整数的比较
-eq 等于
-ne 不等于
-ge 大于等于
-gt 大于
-le 小于等于
-lt 小于
例子:
A=3,B=5
test $A -ge $B && echo "the max number is &A" ||echo "the max number is $B"
字符串比较:
‘STRING1’==‘STRING2‘
!= 或者 <> 不等于
shell总结