shell重定向与变量

news/2024/9/22 15:46:54

一、重定向与管道符

重定向

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

类型设备文件文件描述编号默认设备
标准输入 /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删除

最快方法重启

 





 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/31403.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

【最新】windows电脑FFmpeg安装教程手把手详解

【最新】windows电脑FFmpeg安装教程手把手详解 写在最前 一、下载&解压 二、配置环境变量 1、配置系统环境变量 三、验证 写在最前 FFmpeg是一个免费的开源程序库,一个命令行工具软件,专门用来编辑处理各种音视频或图像。本文以WINDOW 64位操作系统为例演示。 一、下载&a…

Node.js如何安装?Node.js各版本的区别?如何选择合适的版本?

初步学习了解Node.js,首先第一个问题就是给自己电脑上装Node.js 既然要安装那就要找官方下载地址:官网下载地址:https://nodejs.org/en/download 找到了下载地址:里面那么多的版本,应该选择哪个呢?初学不懂这些版本。下面对这些版本的区别做个大概的介绍这两种版本有什么…

JSON

JSON笔记 1、什么是JSON?SON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,目前使用特别广泛。 采用完全独立于编程语言的文本格式来存储和表示数据。 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解…

[Paper Reading]

BEVDet: High-Performance Multi-Camera 3D Object Detection in Bird-Eye-View BEVDet 时间:21/12 机构:PhiGo(鉴智机器人) TL;DR 一种BEV空间做detection的方法,构建了新颖的数据增强方法以及更新了nms策略,精度与FCOS3D comparable,计算量Flops仅为其11%。 Method模型架…

协同平台启动开发环境提示持久化系统中找不到指定的数据格式

解决方案: 搭建开发环境启用安全加固 (kingdee.com)

恒流源电路

下图利用Q2三极管的基级导通电压为0.6~0.7V这个特性设计的三极管恒流源电路。分析: 当GPIO口给高电平时,三极管Q1是一个NPN管,就会导通,同时Q2就会导通。当Q2三极管导通,Q1三极管基级电压被拉低而截止,负载R1不工作,Q2没有电流流过,Q2基极电压下拉到地,Q2截止,Q1基极…

e语言 取公网ip地址

本文来自博客园,作者:__username,转载请注明原文链接:https://www.cnblogs.com/code3/p/18191173