Shell应用技巧

一、输入输出重定向

  1. 输入重定:命令<文件名 ```bash

    file中内容作为wall命令输入

    wall<file
  1. 2. 输出重定向:`命令>文件名`
  2. ```bash
  3. 将命令的的结果输出到file文件中,> 覆盖原文件,>> 追加输出
  4. cat /etc/password>file
  5. cat /etc/password>>file
  1. 错误重定向:命令 2>文件名
    1. gcc -c hello.c -o hello 2>err_file
    2. gcc -c hello.c -o hello 2>>err_file
    !!运算符&使用:表示等同于
    2>&1表示将标准错误的输出重定向到指定的标准输出文件

二、管道

作用:连接多个命令。将一个命令的输出作为另一个命令的输入

  1. 命令1|命令2|...|命令n
  1. 输出etc目录下包含init关键字的文件的详细信息
  2. ls -l /etc | grep init
  3. <=>
  4. ls -l /etc > temp.txt
  5. grep init < temp.txt

三、命令连接符

作用:一次性输入多条shell指令,让操作自动执行

  1. ; 连接符

使用;连接符间隔的命令会按照先后次序依次执行

  1. tar -xzvf gdb-7.11.1.tar.gz;cd gdb-7.11.1;./configure;make;make install;gdb -v
  1. && 连接符

只有前面命令执行成功,后面命令才执行

  1. || 连接符

只有后面命令执行失败时,后面命令才执行

!!! 四、文本提取器命令

未测试成功
将文本按指定分隔符分割,并从分割结果中提取出置顶项

  1. awk [-F分隔符1] '{print $1["分隔符2"]$2}'
  2. awk -F: '{print $1" "$3}' /etc/passwd

Shell编程

脚本执行方式

  1. 作为可执行文件

    1. 先提升文件权限
    2. 再直接执行
      1. root@hu:~/Shell_learn # chmod +x first
      2. root@hu:~/Shell_learn # ./first
  2. 将脚本文件作为参数,通过Shell解释器对其进行解析

    1. root@hu:~/Shell_learn # sh first
  3. 变量定义

  • 使用前无需定义
  • 使用=赋值,前后不能有空格
  • 含空格的字符串赋值,使用单双引号括起来
  • **readonly 变量名** 设置只读变量
  1. 变量引用
  • 使用$引用变量
  • 双引号引起来的字符串有变量的引用,会输出变量存储的值
  • 单引号引起来的字符串有变量的引用,原样输出变量名

shell变量常见引用

  • $var返回变量值
  • ${#var}返回变量长度
  1. 变量输入

read 变量名

  1. 变量分类

1) 环境变量

  • 永久变量;可用于所有的用户进程
  • 变量全部大写
  • 使用expoer定义或设定

export 变量名
export 变量名=值
2) 位置变量
执行脚本时传入脚本对应位置的变量
$0表示脚本命令
$1 $2 等表示脚本的第一个、第二个参数

  1. #!/bin/sh
  2. echo "number of vars:"$#
  3. echo "name of shell script:"$0
  4. echo "first var:"$1
  5. echo "second var:"$2
  6. echo "third var:"$3
  7. exit 0

image.png
3)标准变量
bash环境建立时生成的环境变量;该变量自动解析
查看系统标准环境变量

  • **cat /etc/profile**

查看系统环境变量:环境变量和标准变量

  • **env**

4)特殊变量

  • 传递到脚本或函数的参数数量

  • ?上一个命令执行情况,0表示成功,其他值表示失败
  • $ 运行当前脚本的当前进程的id号
  • ! 运行脚本的最后一个命令
    • 传递给脚本或函数的全部参数
  1. 变量运算

let 表达式