shell重定向与变量

一、重定向与管道符

重定向

重定向:改变电脑的数据输出方向,默认是输出在屏幕上

类型设备文件文件描述编号默认设备
标准输入 /dev/stdin 0 键盘
标准输出 /dev/stdout 1 显示器
标准错误输出 /dev/stderr 2 显示器

交互式硬件设备

  • 标准输入:从该设备接收用户输入的数据

  • 标准输出:通过该设备向用户输出数据

  • 标准错误:通过该设备报告执行出错信息

重定向输入输出

类型操作符用途
重定向输入 < 从指定的文件读取数据,而不是从键盘输入
重定向输出 1>或> 将输出结果保存到指定的文件(覆盖原有内容)
1>>或>>  将输出结果追加到指定的文件尾部
标准错误输出 2> 将错误信息保存到指定的文件(覆盖原有内容)
2>>  标准错误输出结果追加到指定的文件尾部
混合输出 &>无论对错都可以重定向

将标准输出、标准错误的内容保存到同一个文件中

/dev/pts改变输出的终端显示器

管道符 |

将左侧的命令输出结果,作为右侧命令的输入(处理对象)可以 叠加使用

管道符 | 结合 xargs 通常在以下情况下会很有用:

  1. 将命令的输出作为另一个命令的参数: 当你想要将一个命令的输出作为另一个命令的参数时,可以使用管道符结合 xargs 来实现。例如,你可能想要对 find 命令的结果应用某种操作,而 xargs 可以帮助你将这些结果作为参数传递给另一个命令。

  2. 批量处理文件列表: 当你需要对一个命令的输出中的每一行进行处理时,xargs 就会派上用场。它可以将输入分割成适当大小的块,并将它们作为参数传递给另一个命令,从而避免参数列表过长的问题。

  3. 处理特殊字符: 在某些情况下,命令的输出可能包含特殊字符(如空格或换行符),而 xargs 可以帮助你处理这些特殊字符,确保命令的正确执行。

  4. 多线程执行命令: 通过 xargs-P 选项,你可以实现多线程执行命令,从而加速处理过程,特别是在处理大量数据时。

总的来说,当你需要将命令的输出作为另一个命令的参数,并且希望能够灵活地处理这些参数时,结合管道符和 xargs 是一个不错的选择。

例如批量操作文件: 可以使用 find 命令查找符合条件的文件,然后通过管道符将文件列表传递给 xargs,再执行相应的操作,如删除、移动或压缩等。

find /path/to/files -type f -name "*.txt" | xargs rm

二、变量

变量类型

常见的shell变量类型包括:

  • 自定义变量:由用户自己定义,修改和使用
  • 预定义变量:Bash中内置的一类变量 shell 不能修改 规定好的变量 放在那里让你使用
  • 环境变量:由系统维护,用于设置工作环境 当前目录 当前主机名 $PATH
  • 只读变量:只可以读取不可以更改 只能不能修改
  • 位置变量:通过命令行给脚本传递参数

变量调用

  1. 赋值时使用双引号(" ")可以直接调用变量
  2. 赋值时使用单引号(' ')变量$只会被认为是字符$ 不会调用变量
  3. 赋值时使用(``反撇在tab上面)命令替换,提取命令执行后的输出结 果 和$( ) 用法相同
  4. {}可以分隔变量值

read -p

从键盘输入的内容变成变量

 整数运算

运算符:
加法 + ; 减法 - ; 乘法 \* ; 除法 / ; 取余(取模)% ; 

1.let

 2.(())

 3.$[]

 4.expr(注意在运算符前后加空格)

5.bc

6.生成随机数

生成1-34的随机数:

i=$(expr 12  \ *  5 )
i=$((12 * 5))
i=$[12 * 5]
let i=12*5
i++ 相当于 i=$[ $i+1 ]
i-- 相当于 i=$[ $i - 1 ]
i+=2 相当于 i=$[ $i+2 ]

环境变量

env查看环境变量

$USER 表示用户名称
$HOME 表示用户的宿主目录
$LANG 表示语言和字符集
$PWD 表示当前所在工作目录
$PATH 表示可执行用户程序的默认路径

预定义(状态)变量

bash 帮你定义的常见状态变量如下:

  • $*:表示所有位置参数的内容看成一个整体返回 返回所有

  • $@:表示所有位置参数的内容分割成n份,每份作为一个独立的个体返回 返回所有

  • $?:表示前一条命令执行后的返回状态,返回值为 0 表示执行正确,返回任何非 0值均表示执行出现异常

  • $#:表示命令行中位置参数的总个数

  • $0:表示当前执行的脚本或程序的名称 当前脚本的名字

  • $$:当前bash的进程id

  • $!: 后台任务最后一个id

 位置变量

位置变量也称为位置参数,使用$1、$2、$3、…$9 表示。

 只读变量

变量值不允许修改(重新赋值)的情况

无法使用 unset删除

最快方法重启

 





 

posted @ 2024-05-14 14:29  hx_ky36  阅读(22)  评论(0编辑  收藏  举报