《Shell脚本学习指南》学习笔记

时间:2022-06-12 21:45:21

Shell脚本学习

《Shell脚本学习指南》一书

基本语法

  • 环境变量$PATH
  • IO重定向:
    • <改变标准输入
      • 如:tr -d '\r' < dos-file.txt
    • >改变标准输出
      • 如:tr -d '\r' < dos-file.txt > UNIX-file.txt(如果>的目的文件不存在,将自动创建,若存在,将覆盖原文件)
    • >>附加到文件(文件末尾追加)
      • 若文件不存在,则自动创建,若存在,则在文件末尾追加
    • |建立管道
      • 前一个program的输出作为后一个program的输入(program1 | program2),如:ls | grep a
  • 特殊文件:/dev/null/dev/tty

    • /dev/tty:输入密码时,默认不打印输入的密码到终端,例如:(-echo 用来关闭打印输入,echo打开)

          printf "Enter new password: "
          stty -echo 
          read pass < /dev/tty
          printf "Enter again: "
          read pass2 < /dev/tty
          stty echo
          ...
      

常用命令:

  • who:查询系统的登陆用户
  • cat > 文件名 :将后面的输入信息重定向到文件中,以 ^D 结束
  • tr:转换字符
    • -d:删除source-char-list所列举的字符,如:tr -d '\r' < dos-file.txt | sort > UNIX-file.txt,将dos-file.txt中的回车符全部删掉,再排好序重定向到UNIX-file.txt文件中
  • sh (执行一个脚本)
    • -x显示脚本中的每个命令,以+开头,可以在脚本中打开追踪功能, set -x,用set +x关闭追踪
  • grep
  • sed
  • cut
  • awk
  • sort
  • uniq :(去重)
  • head -n n 查看前n行
  • tail -n n 查看后n行

  • umask

命令使用注意事项

  • -开头表示选项,以--开头表示长选项
  • 多条命令写在一行,以;分隔

脚本的语法说明:

  1. #! 脚本解释器路径开头,如:#! /bin/sh
  2. 变量
    • 命名:字母或下划线开头,后面可以是字母数字,下划线
    • 赋值:变量名=值(注意等号前后不能有任何空格,变量值之间有空格时,需要用引号括起来),单行多次赋值,之间用空格分隔
    • 使用变量:以$变量名
    • 输出:
      • echo
        • echo 参数(参数以空格分隔)
      • printf
        • 不会自动换行,需要换行,需在末尾加上\n
        • 例句:printf "the first program always print %s,%s" hello world (\d表示十进制整数)
  3. 再shell脚本中访问shell脚本的参数
    • 读取第n个参数,通过$n读取,若n的数值大于9,则需用大括号括起来,如${10},读取第10个参数

未完–