Shell编程

  1. 当运行一个shell时,linux会创建一个新的bash,使用里面的环境变量都用的是全局的(export),如果事先AAA=aaa,在这个shell脚本里则打印不出AAA来,如果实现export AAA则可以,这就是环境变量和普通变量区别
  2. 双引号和单引号区别:echo "a b $USER"得到a b root,而 echo 'a b $USER'得到a b $USER 。获取变量值的时候就使用双引号,如果是在脚本中要编写一个新的脚本,同时这个新的脚本中还需要包含变量,你就可以选择使用单引号。双引号是脱去空格的意义。反引号的作用是设置系统命令输出到变量,即执行反引号的内容得到的输出赋给变量.
  3. [ ] 实际上是bash 中 test 命令的简写。即所有的 [ expr ] 等于 test expr
  4. $#代表传入几个参数;
    $?代表上面执行的命令返回值,0代表成功;
    $$代表进程的ID号,即PID
    \$[]代表要进行算术运算。
  5. read用法:
    read -p "please input your name:" AAA
    printf "$AAA is good"

    从键盘输入的字符复制给AAA,然后打印
  6. seq 1 100 产生1到100之间的整数
  7. 查看当前所有进程:ps -aux
  8. 查看端口号为8000的网络状态:netstat -an | grep 8000
  9. 杀掉某个进程:killall xxx(名称)或者kill xxx(进程号)
  10. 同步/etc/profile下的环境变量:source /etc/profile
    同步后profile里面的变量可以全局使用,函数也可以直接在命令行中使用,例如mm就是这样产生的
  11. 清屏:Ctrl + L
  12. 调试b.sh脚本程序:bash -vx ./b.sh
  13. 输入输出重定向:
    1). >代表把正确的消息输入重定向到一个文件中去,会先清空之前的
    2). 2>代表把错误的消息输入重定向到一个文件中去,会先清空之前的
    3). find / -name shrek > /tmp/findfile 2>&1 代表把输出正确的消息重定向到/tmp/findfile中,将错误消息也重定向到findfile中
    4). find / -name shrek &> /tmp/findfile 代表把正确或者错误的消息都重定向到/tmp/findfile中。
    5). 查找/etc下有多少个目录:ls /etc/ -l | grep ‘^d’ |wc -l
    6). ls |tee bbb 将显示的内容输入到bbb中去
    7). tr ‘“a-m”’ ‘“N-Z”’ < /etc/pam.conf >abc.txt 代表将pam.conf中的a-m变成N-Z然后写到abc.txt中

  14. var:string {var:=string}:若变量var为空,则用在命令行中用string来替换 var:stringvarvar {var:-string};对于 var:=string {var:-string}是一样的,所不同之处是 var:=stringvarstring {var:=string}的同时,把string赋给变量var: ${var:=string}很常用的一种用法是,判断某个变量是否赋值,没有的话则给它赋上一个默认值。

  15. 记忆方法:#是去掉左边(在鉴盘上#在$之左边)
    %是去掉右边(在鉴盘上%在$之右边)
    单一符号是最小匹配﹔两个符号是最大匹配。
    0
    1 [root@root shell]# var=testcase
    02 [root@root shell]# echo $var
    03 testcase
    04 [root@root shell]# echo ${var%s*e} 从最右边删除最短匹配
    05 testca
    06 [root@root shell]# echo $var
    07 testcase
    08 [root@root shell]# echo ${var%%s*e} 从最右边删除最长匹配
    09 te
    10 [root@root shell]# echo $var 变量没有改变
    11 testcase
    12 [root@root shell]# echo ${var#?e} 从最左边删除最短匹配
    13 stcase
    14 [root@root shell]# echo $var
    15 testcase
    16 [root@root shell]# echo ${var#*e} 从最左边删除最短匹配
    17 stcase
    18 [root@root shell]# echo $var
    19 testcase
    20 [root@root shell]# echo ${var##*e} 从最左边删除最长匹配,即删除所有
    21 [root@root shell]# echo $var
    22 testcase
    23 [root@root shell]# echo ${var##*s} 从最左边删除最长匹配
    24 e
    25 [root@root shell]# echo $var
    26 testcase
    27 [root@root shell]# echo ${var#test} 删除test
    28 case
    29 [root@root shell]# echo $var
    30 testcase
    31 [root@root shell]# echo ${var#tests} 没有匹配
    32 testcase
  16. cut用法:
    cat /etc/passwd | cut -d: -f2 显示passwd下的每行中以:为分隔符截成几段,显示第二段的内容
    who | cut -b 1-5 显示第1到第5个字符(从1开始不是0)

  17. ${#var} 可计算出变量值的长度
    export luyao=goodman
    echo ${luyao: -2} 显示 an
    echo ${luyao: 2} 显示odman
    echo ${variable//pattern/replacement} 将变量variable的pattern部分替换成replacement

文件查找:

1) which/whereis:查找命令所在的路径。
2) locate:类似"search everything"的查找,查找数据库中的数据,可以使用updatedb来更新本地数据库.无法查找刚刚添加的文件。
3) find / -name "\*newfile*" -ls  :查找带有newfile的所有文件以ls形式列出来.
4) find /home -name "*newfile*" -exec rm {} \;  :查找带有newfile的所有文件放入{}中然后执行rm删除。
5)find /home -user shrek -a -group shrek -ls   :查找home目录下用户是shrek并且所属组是shrek的文件显示出来。-a代表是并且,-o是或者.
6) grep avcon -R -l /device :在device目录下递归查找含有avcon字符串的文件,只显示文件名出来。
7) grep -A5 -B5 shrek /etc/pwd :在pwd文件中查找shrek字符串,并显示上面5行(-A指定)和下面5行(-B指定)

正则表达式

1)-r启用正则表达式,然后用''框起来。
2) tail -f /vat/log :实时检测log文件
   tail -n /var/log :看log文件的末尾n行
3) cut -d: -f1 /etc/pwd :显示pwd下每行以“:”为分隔符,且显示第一列。注:分隔符必须是单字符
4)  sort -n -k 2 -t ‘:’ facebook.txt
    apple:10:2.5
    orange:20:3.4
    banana:30:5.5
    pear:90:2.3
    -n代表以数字进行排序(number),不加以ASCII码排序,-k指定列数,-t指定以什么为分隔符
5)  head -n a.txt:显示a文件的头n行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值