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,总结)