linu 文件管理及重定向

目录

 

1 文件系统目录结构

 1.1 常见的文件系统目录功能

1.2 应用程序的组成部分

1.3 Linux下的文件类型

2 文件操作命令

2.1 显示当前工作目录

2.2 绝对和相对路径

2.3文件通配符模式 wildcard pattern

3 文件操作命令

4 软硬链接

5,IO 重定向和管道

6管道


1 文件系统目录结构

 1.1 常见的文件系统目录功能

/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
/bin:所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录
/home/USERNAME:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点
/mnt:临时文件系统挂载点
/dev:设备文件及特殊文件存储位置
b: block device,随机访问
c: character device,线性访问
/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存储位置
/usr: universal shared, read-only data
bin: 保证系统拥有完整功能而提供的应用程序
sbin:
lib:32位使用
lib64:只存在64位系统
include: C程序的头文件(header files)
share:结构化独立的数据,例如doc, man等
   local:第三方应用程序的安装位置
 bin, sbin, lib, lib64, etc, share
/var: variable data files
cache: 应用程序缓存数据目录
lib: 应用程序状态信息数据
local:专用于为/usr/local下的应用程序存储可变数据
lock: 锁文件
log: 日志目录及文件
opt: 专用于为/opt下的应用程序存储可变数据
run: 运行中的进程相关数据,通常用于存储进程pid文件
spool: 应用程序数据池
tmp: 保存系统两次重启之间产生的临时数据
/proc: 用于输出内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置

1.2 应用程序的组成部分

二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
配置文件:/etc, /etc/DIRECTORY, /usr/local/etc
帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man,
/usr/local/share/doc

1.3 Linux下的文件类型

- 普通文件
d 目录文件directory
l 符号链接文件link
b 块设备block
c 字符设备character
p 管道文件pipe
s 套接字文件socket

2 文件操作命令

2.1 显示当前工作目录

每个shell和系统进程都有一个当前的工作目录 CWD:current work directory
显示当前shell CWD的绝对路径
pwd命令: printing working directory
-P 显示真实物理路径
-L 显示链接路径(默认)

[root@centos8 ~]#pwd
/root
[root@centos8 ~]#cd /data
[root@centos8 data]#pwd
/data
[14:38:41 root@centos8 sysconfig]#cd /bin
[14:38:52 root@centos8 bin]#pwd
/bin
[14:38:54 root@centos8 bin]#ll /
total 28
lrwxrwxrwx.  1 root root   7 May 11  2019 bin -> usr/bin
dr-xr-xr-x.  6 root root 4096 Dec 11 11:21 boot
drwxr-xr-x.  2 root root  142 Dec 13 14:26 data
drwxr-xr-x.  19 root root 3280 Dec 13 11:21 dev
[14:38:57 root@centos8 bin]#pwd -P
/usr/bin

2.2 绝对和相对路径

*绝对路径
以正斜杠/ 即根目录开始
完整的文件的位置路径
可用于任何想指定一个文件名的时候

*相对路径名
不以斜线开始
一般情况下,是指相对于当前工作目录的路径,特殊场景下,是相对于某目录的位置
可以作为一个简短的形式指定一个文件名

#基名:basename,只取文件名而不要路径
#目录名:dirname,只取路径,不要文件名


#例:
[root@centos8 bin]#basename /etc/sysconfig/network
network
[root@centos8 bin]#dirname /etc/sysconfig/network
/etc/sysconfig
[root@centos8 ~]#dirname /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts
[root@centos8 ~]#basename /etc/sysconfig/network-scripts/ifcfg-eth0
ifcfg-eth0



#例:
[root@ubuntu2004 ~]#basename http://nginx.org/download/nginx-1.18.0.tar.gz
nginx-1.18.0.tar.gz
[root@ubuntu2004 ~]#basename http://nginx.org/download/nginx-1.18.0.tar.gz
.tar.gz
nginx-1.18.0
[root@ubuntu2004 ~]#basename -s .tar.gz http://nginx.org/download/nginx-
1.18.0.tar.gz
nginx-1.18.0
[root@ubuntu2004 ~]#url=http://nginx.org/download/nginx-1.18.0.tar.gz
[root@ubuntu2004 ~]#echo $url
http://nginx.org/download/nginx-1.18.0.tar.gz
[root@ubuntu2004 ~]#basename $url
nginx-1.18.0.tar.gz

2.3文件通配符模式 wildcard pattern

#文件通配符可以用来匹配符合条件的多个文件,方便批量管理文件
#通配符采有特定的符号,表示特定的含义,此特符号称为元 meta 字符
常见的通配符如下:

* 匹配零个或多个字符,但不匹配 "." 开头的文件,即隐藏文件
? 匹配任何单个字符,一个汉字也算一个字符
~ 当前用户家目录
~liang 用户liang家目录
[0-9] 匹配数字范围
[a-z] 一个字母
[A-Z] 一个字母
[xin] 匹配列表中的任何的一个字符
[^xin] 匹配列表中的所有字符以外的字符
[^a-z] 匹配列表中的所有字符以外的字符
. 和 ~+ 当前工作目录
~-   前一个工作目录


#另外还有在Linux系统中预定义的字符类表示法如下:man 7 glob
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母,表示 a-z
[:upper:]: 任意大写字母,表示 A-Z
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符


#例:
[root@centos8 xin]#echo $OLDPWD
/data
[root@centos8 xin]#ll -/linux.txt
ls: invalid option -- '/'
Try 'ls --help' for more information.
[root@centos8 xin]#ll ~-/linux.txt
-rw-r--r-- 1 root root 6 Mar 23 09:48 /data/linux.txt


#例: [ ] 和 { }
[root@centos8 data]#ll f{1..5}
ls: cannot access 'f1': No such file or directory
ls: cannot access 'f2': No such file or directory
-rw-r--r-- 1 root root 0 Nov  7 09:34 f3
-rw-r--r-- 1 root root 0 Nov  7 09:34 f4
-rw-r--r-- 1 root root 0 Nov  7 09:34 f5
[root@centos8 data]#ll f[1-5]
-rw-r--r-- 1 root root 0 Nov  7 09:34 f3
-rw-r--r-- 1 root root 0 Nov  7 09:34 f4
-rw-r--r-- 1 root root 0 Nov  7 09:34 f5
[root@centos8 data]#ll f[a-c]
-rw-r--r-- 1 root root 0 Nov  7 09:46 fa
-rw-r--r-- 1 root root 0 Nov  7 09:46 fA
-rw-r--r-- 1 root root 0 Nov  7 09:46 fb
-rw-r--r-- 1 root root 0 Nov  7 09:46 fB
-rw-r--r-- 1 root root 0 Nov  7 09:46 fc
[root@centos8 data]#ll f{a..c}
-rw-r--r-- 1 root root 0 Nov  7 09:46 fa
-rw-r--r-- 1 root root 0 Nov  7 09:46 fb
-rw-r--r-- 1 root root 0 Nov  7 09:46 fc


#例:
[root@centos8 data]#touch file{a..z}.txt file{A..Z}.txt file{0..9}.txt
[root@centos8 data]#ll file{0..9}.txt
-rw-r--r-- 1 root root 0 Mar 23 10:46 file0.txt
-rw-r--r-- 1 root root 0 Mar 23 10:46 file1.txt
-rw-r--r-- 1 root root 0 Mar 23 10:46 file2.txt
-rw-r--r-- 1 root root 0 Mar 23 10:46 file3.txt
-rw-r--r-- 1 root root 0 Mar 23 10:46 file4.txt
-rw-r--r-- 1 root root 0 Mar 23 10:46 file5.txt
...

[root@centos8 data]#ll file[0-9].txt
-rw-r--r-- 1 root root 0 Mar 23 10:46 file0.txt
-rw-r--r-- 1 root root 0 Mar 23 10:46 file1.txt
-rw-r--r-- 1 root root 0 Mar 23 10:46 file2.txt
-rw-r--r-- 1 root root 0 Mar 23 10:46 file3.txt
-rw-r--r-- 1 root root 0 Mar 23 10:46 file4.txt
-rw-r--r-- 1 root root 0 Mar 23 10:46 file5.txt
...

[root@centos8 data]#ls file[a-c].txt
filea.txt fileA.txt fileb.txt fileB.txt filec.txt

[root@centos8 data]#ls file[C-E].txt
fileC.txt filed.txt fileD.txt filee.txt fileE.txt

[root@centos8 data]#ls file[xxx].txt
filea.txt fileg.txt filen.txt filew.txt
[root@centos8 data]#ls file[^xxx].txt

[root@centos8 data]#ls file[:lower:].txt
filee.txt filel.txt fileo.txt filer.txt filew.txt
[root@centos8 data]#ls file[[:lower:]].txt
filea.txt filed.txt fileg.txt filej.txt filem.txt filep.txt files.txt
filev.txt filey.txt
fileb.txt filee.txt fileh.txt filek.txt filen.txt fileq.txt filet.txt
filew.txt filez.txt
filec.txt filef.txt filei.txt filel.txt fileo.txt filer.txt fileu.txt
filex.txt

3 文件操作命令

#ls 命令可以列出当前目录的内容或指定目录
    ls [options] [files_or_dirs]


#常见选项:
-a 包含隐藏文件
-l 显示额外的信息
-R 目录递归
-ld 目录和符号链接信息
-1 文件分行显示
-S 按从大到小排序
-t 按mtime排序
-u 配合-t选项,显示并按atime从新到旧排序
-U 按目录存放顺序显示
-X 按文件后缀排序
-F 对不同类型文件显示时附加不同的符号:*/=>@|
-C 文件多时,以多列的方式显示文件,默认是一列(标准输出)


#touch命令可以用来创建空文件或刷新文件的时间
    touch [OPTION]... FILE...

-a 仅改变 atime和ctime
-m 仅改变 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
-c 如果文件不存在,则不予创建


#cp(copy)命令可以实现文件或目录的复制
    cp [OPTION]... [-T] SOURCE DEST
    cp [OPTION]... SOURCE... DIRECTORY
    cp [OPTION]... -t DIRECTORY SOURCE...

#常用选项
-i 如果目标已存在,覆盖前提示是否覆盖
-n 不覆盖,注意两者顺序
-r, -R 递归复制目录及内部的所有内容
-a 归档,相当于-dR --preserv=all,常用于备份功能
-d --no-dereference --preserv=links 不复制原文件,只复制链接名
--preserv[=ATTR_LIST
    mode: 权限
    ownership: 属主属组
    timestamp:
    links
    xattr
    context
    all   
-p 等同--preserv=mode,ownership,timestamp
-v --verbose
-f --force
-u --update 只复制源比目标更新文件或目标不存在的文件
-b 目标存在,覆盖前先备份,默认形式为 filename~ ,只保留最近的一个备份
--backup=numbered 目标存在,覆盖前先备份加数字后缀,形式为 filename.~#~ ,可以保留多
个版本



#mv 命令可以实现文件或目录的移动和改名
    mv [OPTION]... [-T] SOURCE DEST
    mv [OPTION]... SOURCE... DIRECTORY
    mv [OPTION]... -t DIRECTORY SOURCE...

-i 交互式
-f 强制
-b 目标存在,覆盖前先备份


#利用 rename 可以批量修改文件名
    rename [options] <expression> <replacement> <file>...
#为所有的f开头包含conf的文件加上.bak后缀:
rename  'conf'   'conf.bak'  f*
#去掉所有的bak后缀:
rename  '.bak'  '' *.bak


#rm 命令可以删除文件和目录
注意:此命令非常危险,慎重使用,建议使用 mv 代替 rm
    rm [OPTION]... FILE...

#常用选项:
-i 交互式
-f 强制删除
-r 递归
--no-preserve-root 删除/

#例:
[root@centos8 ~]#rm -rf /
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe
#思考删除/ 文件,如何验证
[root@centos8 ~]#rm -rf  /*
[root@centos8 ~]#/2TAB
[root@centos8 ~]#echo *


#例: rm 别名
[root@centos8 ~]#alias rm="echo 请使用mv"


#例:删除特殊文件
#将名为 “/data/-f” 的文件删除
[root@centos8 data]#rm -f -f #此方式错误
[root@centos8 data]#rm -- -f




#显示目录树 tree
#常见选项:
-d: 只显示目录
-L level:指定显示的层级数目
-P pattern: 只显示由指定wild-card pattern匹配到的路径


#创建目录 mkdir
#常见选项:
-p: 存在于不报错,且可自动创建所需的各目录
-v: 显示详细信息
-m MODE: 创建目录时直接指定权限


#删除空目录 rmdir
#常见选项:
-p 递归删除父空目录
-v 显示详细信息



4 软硬链接

4.1硬链接

硬链接本质上就给一个文件起一个新的名称,实质是同一个文件
*硬链接特性:
        创建硬链接会在对应的目录中增加额外的记录项以引用文件
        对应于同一文件系统上一个物理文件
        每个目录引用相同的inode号
        创建时链接数递增
        删除文件时:rm命令递减计数的链接,文件要存在,至少有一个链接数,当链接数为零时,该文件被删除
        不能跨越驱动器或分区
        不支持对目录创建硬链接

# 格式:ln filename [linkname ]

4.2符号 symbolic (或软 soft)链接一个符号链接指向另一个文件,就像 windows 中快捷方式,软链接文件和原文件本质上不是同一个文件
*软链接特点:

         一个符号链接的内容是它引用文件的名称
        可以对目录创建软链接
        可以跨分区的文件实现
        指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的
        引用计数
        在创建软链接时, 如果源文件使用相对路径,是相对于软链接文件的路径,而非相对于当前工作目录,但是软链接的路径如果是相对路径,则是相对于当前工作目录

#格式:ln -s filename [linkname]


#例:
#绝对路径
ln -s /data/dir /data/dirlink
#相对路径
cd /data
ln -s ../data/dir /root/dirlink
#查看链接文件指向的原文件
readlink /data/dirlink
[root@centos8 ~]#readlink /proc/$$/exe
/usr/bin/bash


#注意: 删除此软链接务必不要加-r选项
rm -rf /data/dirlink   #只删除软链接本身,不会删除源目录内容
rm -rf /data/dirlink/  #删除源目录的文件,但不会删除链接文件,此方法非常危险

4.3 软硬链接区别

软连接硬链接
本质本质不是同一个文件本质是同一个文件
跨设备支持不支持
inode不同相同
链接数创建或删除,链接数不会变化创建新的硬链接,链接数会增加,删除硬链接,链接数减少
文件夹支持不支持
相对路径原始文件的相对路径是相对于链接文件的相对路径原始文件相对路径是相对于当前工作目录
删除源文件链接文件将无法访问只是链接数减一,但链接文件的访问不受影响
文件类型

链接文件,和源文件无关和源文件相同
 文件大小源文件的路径的长度和源文件相同

5,IO 重定向和管道

5.1标准输入和输出

程序:指令+数据
读入数据:Input
输出数据:Output
打开的文件都有一个fd: file descriptor (文件描述符)
Linux给程序提供三种 I/O 设备
标准输入(STDIN) -0 默认接受来自终端窗口的输入
标准输出(STDOUT)-1 默认输出到终端窗口
标准错误(STDERR) -2 默认输出到终端窗口

5.2 标准输出和错误重新定向

STDOUT和STDERR可以被重定向到指定文件,而非默认的当前终端

#格式:命令 操作符号 文件名


#支持的操作符号包括:
1> 或 >    把STDOUT重定向到文件
2> 把STDERR重定向到文件
&> 把标准输出和错误都重定向
>& 和上面功能一样,建议使用上面方式


#以上如果文件已存在,文件内容会被覆盖
#追加  ‘>> ’ 可以在原有内容基础上,追加内容
#把输出和错误重新定向追加到文件

    >> 追加标准输出重定向至文件
    2>> 追加标准错误重定向至文件


#标准输出和错误输出各自定向至不同位置
COMMAND > /path/to/file.out 2> /path/to/error.out


#合并标准输出和错误输出为同一个数据流进行重定向
&>  覆盖重定向
&>> 追加重定向
COMMAND > /path/to/file.out 2>&1 (顺序很重要)
COMMAND >> /path/to/file.out 2>&1



#合并多个程序
(CMD1;CMD2......) 或者{ CMD1;CMD2;....; }合并多个程序的STDOUT

#例:
[root@centos8 ~]#ls 1> /dev/pts/1
[root@centos8 ~]#ls /data > /dev/pts/1

#例:标准错误重定向
[root@centos8 ~]#rm /data/f1.log  2> /data/all.log

#例:合并多个命令的结果至一个文件中
[root@centos8 ~]#( cal 2019 ; cal 2020 ) > all.txt
[root@centos8 ~]#{ ls;hostname;} > /data/all.log

#例:清除大文件
#通用
cat /dev/null > /data/file.log
#依赖于shell类型,不通用
> /data/file.log

#例:分别重定向
[root@centos8 ~]#ls /data/ /xxx > stdout.log 2> stderr.log

#例:将标准输出和错误都重定向到同一个文件
[root@centos8 ~]#ls /data /xxx > /data/all.log 2>&1
[root@centos8 ~]#ls /data /xxx 2> /data/all.log 1>&2
[root@centos8 ~]#ls /data /xxx &> /data/all.log
[root@centos8 ~]#ls /data /xxx >& /data/all.log
[root@centos8 ~]#ls /data /xxx 2>&1 > /data/all.log

#例:
[root@centos8 ~]#man bash > bash.txt
[root@centos8 ~]#wc -l bash.txt
3821 bash.txt

#例: 实现标准输出和错误的互换
[root@centos8 ~]#ls f1.txt f2.txt
ls: cannot access 'f1.txt': No such file or directory
ls: cannot access 'f2.txt': No such file or directory
[root@centos8 ~]#( cat /etc/centos-release /etc/xxx 3>&1 1>&2 2>&3 ) > f1.txt
2> f2.txt
[root@centos8 ~]#cat f1.txt
cat: /etc/xxx: No such file or directory
[root@centos8 ~]#cat f2.txt
CentOS Linux release 8.2.2004 (Core)

5.3标准输入重定向

从文件中导入STDIN,代替当前终端的输入设备,使用 < 来重定向标准输入
某些命令能够接受从文件中导入的STDIN

# tr 命令 转换和删除字符
tr [OPTION]... SET1 [SET2]

#选项:
-d --delete:删除所有属于第一字符集的字符
-s --squeeze-repeats:把连续重复的字符以单独一个字符表示,即去重
-t  --truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符
-c –C --complement:取字符集的补集
\NNN      character with octal value NNN (1 to 3 octal digits)
\\       backslash
\a       audible BEL
\b       backspace
\f       form feed
\n       new line
\r       return
\t       horizontal tab
\v       vertical tab
[:alnum:]:字母和数字
[:alpha:]:字母
[:digit:]:数字
[:lower:]:小写字母
[:upper:]:大写字母
[:space:]:空白字符
[:print:]:可打印字符
[:punct:]:标点符号
[:graph:]:图形字符
[:cntrl:]:控制(非打印)字符
[:xdigit:]:十六进制字符


#例:
#该命令会把/etc/issue中的小写字符都转换成大写字符
tr ‘a-z’  ‘A-Z’< /etc/issue
#删除fstab文件中的所有abc中任意字符
tr –d abc < /etc/fstab  


#例:将 Windows 的文本转化 Linux的文本格式
[root@centos8 ~]#cat windows.txt
a
b
c[root@centos8 ~]#file windows.txt
windows.txt: ASCII text, with CRLF line terminators
[root@centos8 ~]#hexdump -C windows.txt
00000000  61 0d 0a 62 0d 0a 63               |a..b..c|
00000007
[root@centos8 ~]#nano linux.txt
[root@centos8 ~]#hexdump -C linux.txt
00000000  61 0a 62 0a 63 0a                 |a.b.c.|
00000006
[root@centos8 ~]#tr -d '\r' < windows.txt > windows2.txt
[root@centos8 ~]#hexdump -C windows2.txt
00000000  61 0a 62 0a 63                  |a.b.c|
00000005
[root@centos8 ~]#file windows2.txt
windows2.txt: ASCII text





#标准输入重定向

5.4标准输入重定向

实现标准输入重定向的符号

#格式:
COMMAND 0< FILE
COMMAND < FILE

#例
[root@centos8 ~]#echo 2^3 > bc.log
[root@centos8 ~]#cat bc.log
2^3
[root@centos8 ~]#bc < bc.log
8
[root@centos8 ~]#cat < mail.txt
hello
how old are you
[root@centos8 ~]#cat mail.txt
hello
how old are you
[root@centos8 ~]#cat < mail.txt > mail2.txt
[root@centos8 ~]#cat mail2.txt
hello
how old are you
[root@centos8 ~]#cat mail.txt
hello
how old are you
[root@centos8 ~]#mail -s test2 xin < mail.txt
[root@centos8 ~]#cat > cat.log
line1
line2
line3

5.5把多行重定向

使用 "<<终止词" 命令从键盘把多行重导向给STDIN,直到终止词位置之前的所有文本都发送给
STDIN,有时被称为就地文本(here documents)
其中终止词可以是任何一个或多个符号,比如:!,@,$,EOF(End Of File),liang等,其中EOF比较常用

#例:
mail -s "Please Call" admin@liang.com <<EOF
> Hi xin
>       
> Please give me a call when you get in. We may need
> to do some maintenance on server1.
>       
> Details when you're on-site
> Zhang
> EOF

5.6高级重定向写法

# cmd <<< "string"

含义是 here-string ,表示传给给cmd的stdin的内容从这里开始是一个字符串。

#例:
[root@rocky8 ~]#tr 'a-z' 'A-Z' <<<"I am xin"
I AM XIN


# cmd1 < <(cmd2)

名称为 Process substitution ,是由两个部分组成
<(cmd2) 表示把cmd2的输出写入一个临时文件, 注意:<和(之间无空格
cmd1 < 这是一个标准的stdin重定向
把两个合起来,就是把cmd2的输出stdout传递给cmd1作为输入stdin, 中间通过临时文件做传递

#例
[root@rocky8 ~]#tr 'a-z' 'A-Z' < <(echo I am xin)
I AM XIN
[root@rocky8 ~]#ll  <(echo I am xin)
lr-x------ 1 root root 64 Nov 26 17:20 /dev/fd/63 -> 'pipe:[30384]'

6管道

6.1管道(使用符号“|”表示)用来连接多个命令

命令1 | 命令2 | 命令3 | …

功能说明:
将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的STDIN
所有命令会在当前shell进程的子shell进程中执行
组合多种工具的功能

注意:STDERR默认不能通过管道转发,可利用2>&1 或 |& 实现,格式如下

命令1 2>&1 | 命令2
命令1 |& 命令2
# 例
#转换为大写字母
ls | tr ‘a-z’ ‘A-Z’
#less实现分页地查看输入
ls -l /etc | less
#mail通过电子邮件发送输入
echo "test email" | mail  -s "test" xin@example.com
#算术运算
echo "2^3" |bc


#例
[root@rocky8 ~]#ls --help | grep size
#有此命令的帮助信是是标准错误
[root@rocky8 ~]#mysqldump --help |& grep master-data

6.2tee 命令

利用 tee 命令可以重定向到多个目标,经常配合管道符一起使用

功能:
保存不同阶段的输出
复杂管道的故障排除
同时查看和记录输出

#格式:
命令1 | tee [-a ] 文件名 | 命令2
以上可以把命令1的STDOUT保存在文件中,做为命令2的输入
#选项:
-a 追加

#例:
[root@centos8 ~]#echo {1..100}|tr ' ' +|bc
5050
[root@centos8 ~]#echo {1..100..2} | tr ' ' + | bc
2500
[root@centos8 ~]#seq -s + 1 100 |bc
5050
[root@centos8 ~]#seq -s+ 1 2 100 | bc
2500


#例
[root@centos8 ~]#cat <<EOF | tee .mailrc
> set from=xxxxxxx@qq.com
> set smtp=smtp.qq.com
> set smtp-auth-user=xxxxxxx@qq.com
> set smtp-auth-password=esvnhbnqocirbicf
> set smtp-auth=login
> set ssl-verify=ignore
> EOF
set from=xxxxxxx@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=xxxxxxx@qq.com
set smtp-auth-password=esvnhbnqocirbicf
set smtp-auth=login
set ssl-verify=ignore
[root@centos8 ~]#



#例
[root@centos8 ~]#cat  <<EOF | tee /etc/motd
> welcome to China
> happy new year
> EOF
welcome to China
happy new year


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值