0%

shell-script的学习和使用

注意事项

  1. 指令的执行是从上而下、从左到右;
  2. 指令、选项、参数间的多个空白都会被忽略;
  3. 空白行也会被忽略,Tab空白也视为空白行;
  4. 如果读取到一个Enter(CR)符号,就开始执行该行命令;
  5. 如果一行的内容太多,可以使用\Enter 来延伸到下一行;
  6. # 是注释符号,该符号后面的数据全部被视为注释文字;
  7. 脚本需要有rx权限才能被执行,脚本的执行可通过绝对路径、相对路径、变量PATH实现,除此之外,还可以通过bash程序来执行bash script.sh or sh script.sh;
  8. 主文件夹下的~/bin目录默认被设置到${PATH}中,也可以将脚本存放到~/bin下,直接输入script.sh执行脚本;
阅读全文 »

从前往后删除

  • 变量的删除使用符号###,区别是:前者代表删除最短,后者代表删除最长的;
  • 使用的格式是${变量#/xxxx}or ${变量##/xxxx} ,删除从最前面开始向右删除
  • 示例,变量test_path的内容与PATH相同,分别删除最短的一个路径和删除最长的一个路径(仅剩下一个最短的)

del-from-left

阅读全文 »

sed工具

  • sed是一个管线命令,可以分析标准输入,而且可以将数据取代、删除、新增、撷取特定行;
  • sed工具的命令格式:sed [-nefre] '[n1,n2][command]'
    • -n : 使用安静模式silent,在sed的一般应用中,所有来自标准输入的数据都会列到屏幕中,如果使用了安静模式,只有经过sed处理的那一行数据才会被输出到屏幕中;
    • -e : 直接在命令行界面上进行sed的动作编辑;
    • -f : 直接将sed的动作写在一个文件内,使用该参数指定文件路径名称;
    • -r : sed动作支持的是延伸型正则表达式,不使用参数,默认使用基础正则表达式语法;
    • -i : 直接修改读取的文件内容,而不是由屏幕输出
    • n1,n2 : 选择进行动作的行数,连同后接的命令需要用单引号括住
    • command中可以使用的命令有:
      • a 新增到下一行,后接字符串,新增多行的,需要在每行最后添加换行符号\在最后一行后新增内容sed -i '$a new add content' filename
      • c 取代n1,n2之间的行,后接字符串,ex: nl ~/test | sed ‘2,5c This is a replace contend’`使用This is a replace contend取代2-5行的全部内容
      • d 删除,删除空白行sed '/^$/d'
      • i 插入到上一行,后接字符串
      • p 打印输出,可以用于取出特定行的内容,ex: nl /etc/shadow | sed -n '2,5p'
      • s 取代,直接进行取代的工作,格式s/要取代的字符/新字符/g
      • 使用sed工具取出eth0的ip地址ip addr | grep 'eth0$' | sed ‘.inet.//g’ | sed ‘s/\24.$//g’

sed-ip-addr

阅读全文 »

bash常用

  1. * : 代表0到无穷个任意字符
  2. ? : 代表一定有一个任意字符
  3. []: 代表一定有一个括号内的字符
  4. [x-x] : 代表有一个x到x范围内的字符
  5. [^] : 代表反向,没有括号内的字符

正则表达常用

  1. ^word : 以word开头
  2. word$ : 以word结尾
  3. . : 任意一个字符,可以是空白格,一定有一个
  4. \ : 转义字符
  5. * : 重复0到无穷个前一个字符,任意字符的表示.*,注意与bash中的区分
  6. [] : 集合内的一个字符
  7. [x-x] : x-x范围内的一个字符
  8. [^] : 没有范围内的字符
  9. x\{n1,n2\} : 连续n1或n2个x字符,使用符号\将符号{}进行转义

  • bash的进站与欢迎信息,通过文件/etc/issue/etc/motd2个文件实现
  • CentOS默认的进站信息如下:
    1
    2
    \S
    Kernel \r on an \m
阅读全文 »