标准错误重定向

标准错误重定向是一种Linux/Unix操作系统中常见的输入输出重定向技术,用于将程序的错误输出(stderr)重定向到文件或程序的标准输出(stdout)上,从而实现对程序输出结果的控制和管理。

在Linux/Unix系统中,每个进程都有三个标准的I/O流:

  • 标准输入(stdin):通常输入设备为键盘;
  • 标准输出(stdout):通常输出设备为屏幕;
  • 标准错误(stderr):通常输出设备为屏幕,用于输出错误信息。

当程序执行时,如果没有进行重定向操作,三个I/O流将连接到终端设备(通常为屏幕和键盘)。当程序发生错误时,错误信息会输出到标准错误流(stderr),并打印在屏幕上。这时,用户不方便对错误信息进行保存、查看和处理。

使用标准错误重定向技术,可以将程序的错误输出流(stderr)重定向到文件或程序的标准输出流(stdout)上,以方便对程序的输出进行控制、管理和分析。例如,将错误日志输出到一个文件:

command > output.txt 2> error.txt

上述命令表示将命令command的标准输出重定向到output.txt文件中,将标准错误重定向到error.txt文件中。

需要注意的是,标准输入、标准输出和标准错误三者之间是相互独立的,因此需要对它们进行单独的重定向操作。

管道命令

命令A|命令B --> 命令A的输出当做命令B的输入

管道是一种通信机制,通常用于进程间的通信(也可通过socket进行网络通信),它表现出来的形式将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。

例如,统计系统设备目录 /dev 下有多少个文件或子目录:

ls -l /dev | wc -l

IDE和SCSI硬盘命名规则

IDE(Integrated Drive Electronics)硬盘和 SCSI(Small Computer System Interface)硬盘在 Linux 中有不同的设备命名规则。

对于 IDE 硬盘,Linux 会将其命名为 /dev/hd[a-d][1-15]。其中,a-d 表示硬盘的 IDE 接口编号(a 表示第一接口,b 表示第二接口,以此类推),1-15 表示硬盘的分区编号(1 表示主分区,2-15 表示扩展分区中的逻辑分区)。例如,/dev/hda 表示第一接口上的主分区,/dev/hdb3 表示第二接口上的扩展分区中的第二个逻辑分区。
对于 SCSI 硬盘,Linux 会将其命名为 /dev/sd[a-p][1-15]。其中,a-p 表示 SCSI 硬盘的编号,1-15 表示硬盘的分区编号。例如,/dev/sda 表示第一个 SCSI 硬盘上的主分区,/dev/sdb3 表示第二个 SCSI 硬盘上的扩展分区中的第二个逻辑分区。

需要注意的是,对于一些新的硬盘,Linux 可能会将其命名为 /dev/nvme[0-9]n[1-31],其中 [0-9] 表示控制器编号,[1-31] 表示硬盘的分区编号。例如,/dev/nvme0n1 表示第一个 NVMe 硬盘上的主分区,/dev/nvme1n1p3 表示第二个 NVMe 硬盘上的扩展分区中的第一个逻辑分区。

总之,IDE 硬盘和 SCSI 硬盘在 Linux 中有不同的设备命名规则,需要根据具体情况选择正确的设备名称来进行操作。

Linux文件系统

Linux 文件系统是指 Linux 操作系统用于管理文件和目录的体系结构。在 Linux 中,文件系统是以文件的形式存储在硬盘中的,每个文件都有唯一的文件名和路径。Linux 文件系统的设计是基于树形目录结构,顶层目录为根目录(/),下面分别是各级子目录,最底层是文件或空目录。

Linux 文件系统支持多种类型的文件系统,如 ext2、ext3、ext4、XFS、JFS、Btrfs 等。每种文件系统都有其特定的优缺点和适用场景。

Linux 文件系统中的常用目录有:

/bin:存放常用的命令和可执行文件。

/boot:存放启动 Linux 系统所需的文件,例如 Linux 内核、引导程序等。

/dev:存放设备文件,Linux 中一切皆为文件,通过设备文件可以访问硬件设备。

/etc:存放系统的配置文件,例如用户信息、网络配置、服务配置等。

/home:存放用户的主目录。

/lib:存放系统库文件。

/media:自动挂载的可移动设备目录,例如 U 盘、光驱等。

/mnt:手动挂载的设备目录。

/opt:存放安装的可选软件。

/proc:存放内存中的进程信息和系统信息。

/root:root 用户的主目录。

/run:存放系统运行时的临时文件。

/sbin:存放系统管理员使用的命令和可执行文件。

/sys:存放系统硬件信息。

/tmp:存放临时文件。

/usr:存放用户安装的软件和文件,系统管理员不应该在此目录下进行操作。

/var:存放系统日志、邮件、数据库等可变的文件。

Linux 文件系统的根目录(/)是系统中所有文件和目录的起点,是文件系统的基础。在 Linux 中,通过文件系统的树形结构,用户可以方便地查找和管理系统中的文件和目录。

sed命令

sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

基本语法

sed [options] '{command}[flags]' [filename]    
# 中括号内容必有 大括号内容可有可无
sed  # 执行命令
[options]  # 命令选项
{command}[flags]    # sed内部选项和参数
[filename]     # 文件
命令选项
-e script 将脚本中指定的命令添加到处理输入时执行的命令中,  多条件,一行中要有多个操作
-f script 将文件中指定的命令添加到处理输入时执行的命令中
-n        抑制自动输出
-i        编辑文件内容
-i.bak    修改时同时创建.bak备份文件。
-r        使用扩展的正则表达式
!         取反 (跟在模式条件后与shell有所区别)

sed常用内部命令
a   在匹配后面添加
i   在匹配前面添加
p   打印
d   删除
s   查找替换
c   更改
y   转换   N D P 

flags
数字             表示新文本替换的模式
g:             表示用新文本替换现有文本的全部实例
p:             表示打印原始的内容
w filename:     将替换的结果写入文件

awk命令

工作原理

逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。

sed命令常用于一整行的处理,而awk比较倾向于将一行分成多个“字段”然后再进行处理。awk信息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示。在使用awk命令的过程中,可以使用逻辑操作符“&&”表示“与”、“||”表示“或”、“!”表示“非”;还可以进行简单的数学运算,如+、-、*、/、%、^分别表示加、减、乘、除、取余和乘方。

awk语法

awk ‘BEGIN {commands} pattern {commands}END{commands}' file1

BEGIN:处理数据前执行的命令

END:处理数据后执行的命令

pattern:模式,每一行都执行的命令

BEGIN和END里的命令只是执行一次

pattern里的命令会匹配每一行去处理

echo命令

echo是linux系统中使用频率很高的一个命令,它的主要作用是在屏幕上输出信息。
命令格式:echo args #args 可以是字符串和变量的组合

常用参数:

-n	不换行输出内容
-e	解析转义字符(见下面的字符)

转义字符	
\n	换行
\r	回车
\t	制表符(tab)
\b	退格
\v	纵向制表符

man 命令

man 命令是 Linux 系统中的一个非常常用的命令,它用于显示 Linux 系统的帮助手册,即 man page。man page 是 Linux 系统中的一种在线帮助文档,它包含了系统命令、函数、配置文件等各种信息的详细说明。

语法格式

man [OPTION]... [SECTION] NAME...

其中,OPTION 表示 man 命令的选项,SECTION 表示要查看的 man page 的章节号,NAME 表示要查看的 man page 的名称。

参数介绍

-a:显示所有匹配的 man page。

-f:显示与指定名称相关的命令或函数。

-k:显示与指定关键字相关的 man page。

-w:仅显示 man page 的路径名,不进行分页显示。

-C:指定 man page 的缓存时间。

-I:忽略大小写。

-S:指定 man page 所在的软件包。

-M:指定 man page 的搜索路径。

-P:指定分页程序。

-p:指定搜索路径。

-t:将 man page 输出为 PostScript 格式文件。

-h:显示帮助信息。

在 man 命令中,SECTION 表示 man page 所在的章节号,一般有以下 8 个章节:

1:用户命令。

2:系统调用。

3:C 库函数。

4:设备文件。

5:配置文件。

6:游戏。

7:惯例和协议。

8:系统管理命令。

通过 man 命令,你可以查看系统中所有命令和函数的详细使用方法,并且可以很方便地进行搜索和查找。