Linux重定向><命令的使用

简介: 重定向分为输出重定向和输入重定向。

重定向分为输出重定向和输入重定向。


一、输出重定向


1、简介


  输出重定向分为正确输出和错误输出,这是由FD来控制的,由上一章文章讲到1为标准正确输出,2为标准错误输出。

      正确输出命令:程序命令   1>   指定文件     等价于  程序命令   >   指定文件

                               程序命令    1>> 指定文件      等价于    程序命令   >>    指定文件

      错误输出命令:程序命令    2>  指定文件                    

                               程序命令    2>>    指定文


注意:>是覆盖输出,>>是追加输出。


1)演示正确输出

[root@localhost ~]# ls /test                    //普通查看/test的内容
dir001  dir002  file1  file2  t1  t2  t3  time.txt
//将/test文件夹内容输出到time.txt中,在终端不会显示任何信息。
[root@localhost ~]# ls /test 1> /test/time.txt  
//查看time.txt文件,发现ls  /test命令输出的内容到了time文件中
[root@localhost ~]# cat /test/time.txt
dir001
dir002
file1
file2
t1
t2
t3
time.txt
tme.txt
//将没有输出信息的程序输出到time文件中
[root@localhost ~]# mkdir /test/list   1> /test/time.txt
//time文件中没有任何信息
[root@localhost ~]# cat /test/time.txt
//将有输出的程序输出的信息放入到time文件中
[root@localhost ~]# mkdir -v  /test/list1   1> /test/time.txt
//time中有内容,发现覆盖了原来time文件中的内容
[root@localhost ~]# cat /test/time.txt
mkdir: 已创建目录 "/test/list1"
//将date命令的信息追加到time文件中
[root@localhost ~]# date  1>>  /test/time.txt
//发现原来的内容还在,并且多了刚刚写入的信息
[root@localhost ~]# cat /test/time.txt
mkdir: 已创建目录 "/test/list1"
2022年 10月 12日 星期三 14:46:08 CST


注意:程序本身要有输出才可以将输出信息写入指定文件


2)演示错误输出

//将ls/ text的错误信息写入到time中
[root@localhost ~]# ls /test 2> /test/time.txt    
//在终端显示出来了        
dir001  dir002  file1  file2  list  list1  t1  t2  t3  time.txt  tme.txt
//time文件中没有信息,因为ls /test命令没有错误信息
[root@localhost ~]# cat /test/time.txt


注意:错误输出是要将由错误信息的程序写入到指定文件,没有错误信息的将写入空信息。


//将ls /aaaaaaaaaaaa  输出的错误信息写入到time文件中
[root@localhost ~]# ls /aaaaaaaaaaaa 2> /test/time.txt   
//信息被写入到time文件中 
[root@localhost ~]# cat /test/time.txt
ls: 无法访问/aaaaaaaaaaaa: 没有那个文件或目录


3)将正确输出和错误输出都放到一个文件中或者分别放到两个文件中


命令:&>  


注意:这个&虽然和将程序放到后台运行时一样的但是&>是表示and的意思中间不能有空格


//查看test目录下的内容,查看aaaaaaaa目录下的内容
[root@localhost ~]# ls /test/    /aaaaaaaa  
ls: 无法访问/aaaaaaaa: 没有那个文件或目录
/test/:
dir001  file1  list   t1  t3        tme.txt
dir002  file2  rigth  t2  time.txt  wrong
//将两个命令输出的内容都写入到list文件中(不区分是正确输出还是错误输出)
[root@localhost ~]# ls /test/    /aaaaaaaa  &> /test/list
//写入成功
[root@localhost ~]# cat /test/list
ls: 无法访问/aaaaaaaa: 没有那个文件或目录
/test/:
dir001
dir002
file1
file2
list
rigth
t1
t2
t3
time.txt
tme.txt
wrong
//将正确输出写入到right文件中,将错误输出写入到wrong文件中
[root@localhost ~]# ls /test/ 1> /test/right   /aaaaaa 2> /test/wrong
//查看right文件,写入成功
[root@localhost ~]# cat /test/right
/test/:
dir001
dir002
file1
file2
list
right
rigth
t1
t2
t3
time.txt
tme.txt
wrong
//查看wrong文件,写入成功
[root@localhost ~]# cat /test/wrong
ls: 无法访问/aaaaaa: 没有那个文件或目录


4)在生产环境中的使用


生产环境中我们一般将信息都写入到/dev/null


/dev/null相当于垃圾桶,表示我们不看这些输出信息,因为有些命令会输出很多行信息,这时候我们只需要写入到/dev/null中即可看不到了。


[root@localhost ~]# ls /test/    /aaaaaaaa  &> /dev/null
//不会显示任何信息
[root@localhost ~]# 

二、输入重定向


1、简介


标准输入:0<  等价于  <


注意:这的符号和输出符号相反,可以将其看做成是漏斗,信息从大口向小口流入。


2、以输入重定向发送邮件为例


1)默认发邮件过程


发送邮件命令:mail   -s  “邮件名”   收件人

111                                                        //邮件信息

.                                                              //以.为终止

查看邮件命令:mail

                       然后输入邮件号查看邮件


//编辑邮件发送给sure1用户
[root@localhost ~]# mail -s "toyou" sure1        
hello.                                        //发现在这一行输入.是不会终止的
.                                                //另起一行输入.会结束编辑
EOT
//切换sure1用户
[root@localhost ~]# su - sure1
上一次登录:三 10月 12 15:23:16 CST 2022pts/0 上
//查看邮件
[sure1@localhost ~]$ mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/sure1": 2 messages 2 new
>N  1 root                  Wed Oct 12 15:18  18/609   "toyou"
 N  2 root                  Wed Oct 12 15:23  19/613   "mymail"
//选择需要查看的邮件
& 1
Message  1:
From root@localhost.localdomain  Wed Oct 12 15:18:49 2022
Return-Path: <root@localhost.localdomain>
X-Original-To: sure1
Delivered-To: sure1@localhost.localdomain
Date: Wed, 12 Oct 2022 15:18:49 +0800
To: sure1@localhost.localdomain
Subject: toyou
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root@localhost.localdomain (root)
Status: R
hello.
//按q退出邮件
& q     
Held 2 messages in /var/spool/mail/sure1
//退出sure1用户
[sure1@localhost ~]$ exit
登出


解释邮件对应的信息


N  1 root                  Wed Oct 12 15:18  18/609   "toyou"

1:邮件编号

root:发送人

Wed Oct 12 15:18:时间

"toyou":邮件名


2)用重定向的方法快速发送邮件


准备一个邮件内容


//创建mail文件
[root@localhost ~]# touch /test/mail
//编辑文件内容
[root@localhost ~]# vim /test/mail
//查看mail文件内容
[root@localhost ~]# cat /test/mail
hello i am sure


通过重定向发邮件


原理:利用输入重定向,把文件内容代替人为的输入。


//将mail文件内的内容输入到邮件中,发送给sure1,邮件名为hello
[root@localhost ~]# mail -s "hello" sure1  0< /test/mail
//切换sure1
[root@localhost ~]# su - sure1
上一次登录:三 10月 12 15:32:59 CST 2022pts/0 上
//查看邮件
[sure1@localhost ~]$ mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/sure1": 3 messages 1 new 2 unread
    1 root                  Wed Oct 12 15:18  19/620   "toyou"
 U  2 root                  Wed Oct 12 15:23  20/623   "mymail"
>N  3 root                  Wed Oct 12 15:33  18/618   "hello"    //收到hello邮件
& 3                                                                //选择查看3号邮件
Message  3:
From root@localhost.localdomain  Wed Oct 12 15:33:14 2022
Return-Path: <root@localhost.localdomain>
X-Original-To: sure1
Delivered-To: sure1@localhost.localdomain
Date: Wed, 12 Oct 2022 15:33:14 +0800
To: sure1@localhost.localdomain
Subject: hello
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root@localhost.localdomain (root)
Status: R
hello i am sure                        //邮件信息
& q                                                   //退出邮件
Held 3 messages in /var/spool/mail/sure1
您在 /var/spool/mail/sure1 中有邮件
[sure1@localhost ~]$ exit                           //退出sure1用户         
登出


通过这种方式可以将编辑好的文件信息发送给任何人就不需要一遍遍的编辑,只需要拟好模板即可










相关文章
|
18天前
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
80 16
|
10天前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
|
2月前
|
监控 Linux 网络安全
Linux命令大全:从入门到精通
日常使用的linux命令整理
654 13
|
3月前
|
Linux 网络安全 数据安全/隐私保护
使用Linux系统的mount命令挂载远程服务器的文件夹。
如此一来,你就完成了一次从你的Linux发车站到远程服务器文件夹的有趣旅行。在这个技术之旅中,你既探索了新地方,也学到了如何桥接不同系统之间的距离。
525 21
|
3月前
|
JSON 自然语言处理 Linux
linux命令—tree
tree是一款强大的Linux命令行工具,用于以树状结构递归展示目录和文件,直观呈现层级关系。支持多种功能,如过滤、排序、权限显示及格式化输出等。安装方法因系统而异常用场景包括:基础用法(显示当前或指定目录结构)、核心参数应用(如层级控制-L、隐藏文件显示-a、完整路径输出-f)以及进阶操作(如磁盘空间分析--du、结合grep过滤内容、生成JSON格式列表-J等)。此外,还可生成网站目录结构图并导出为HTML文件。注意事项:使用Tab键补全路径避免错误;超大目录建议限制遍历层数;脚本中推荐禁用统计信息以优化性能。更多详情可查阅手册mantree。
linux命令—tree
|
1月前
|
Linux 网络安全 开发工具
技术栈:这50条最常用的 Linux 命令你一定要会!
建议多在终端中实践,遇到不懂的命令就用 man 或 --help 了解详情!
374 0
|
3月前
|
监控 Linux
Linux系统中使用df命令详解磁盘使用情况。
`df`命令是Linux系统管理员和用户监控和管理磁盘空间使用的重要工具。掌握它的基本使用方法和选项可以帮助在必要时分析和解决空间相关问题。简洁但功能丰富,`df`命令确保了用户可以快速有效地识别和管理文件系统的空间使用情况。
241 13
|
1月前
|
安全 Linux Shell
Linux系统中sudo命令的高效运用技巧。
用户可以通过sudo -l来列出自己目前可执行的命令列表,这有助于用户了解自己的权限范围。
112 0
|
1月前
|
监控 Linux Shell
linux命令
常用 Linux 命令汇总
|
3月前
|
Unix Linux
linux命令—cd
`cd` 命令是 Linux/Unix 系统中用于切换工作目录的基础命令。支持相对路径与绝对路径,常用选项如 `-L` 和 `-P` 分别处理符号链接的逻辑与物理路径。实际操作中,可通过 `cd ..` 返回上级目录、`cd ~` 回到家目录,或利用 `cd -` 在最近两个目录间快速切换。结合 Tab 补全和 `pwd` 查看当前路径,能显著提升效率。此外,需注意特殊字符路径的正确引用及脚本中绝对路径的优先使用。