搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
羊村懒王
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
modelsim 2020.4SE安装教程超详细(仅供学习使用)
2
【小白专用】MySQL查询数据库所有表名及表结构其注释_数据库表名
3
Flutter:网络图像缓存插件——cached_network_image
4
短链接的算法_短链接生成算法
5
软件测试之自动化测试_软件自动化测试
6
入门教程:使用 Postman 发送 post 请求_postman在线post请求
7
机器学习在网络安全领域的深度探索与实践_安全监控 机器学习
8
IntelliJ IDEA中好用的插件 写代码必备_tabnine ai code completion
9
第1篇:weblogic9.x在JDK1.5下T3反序列化漏洞利用方法_weblogic反序列化漏洞利用工具
10
React-项目构建
当前位置:
article
> 正文
Linux Shell(bash) 输出到文本、重定向技巧_bash 日志重定向
作者:羊村懒王 | 2024-04-19 03:35:41
赞
踩
bash 日志重定向
linux 环境中支持输入输出重定向,用符号<和>来表示。
0、1和2分别表示标准输入、标准输出和标准错误信息输出,
将一个脚本的执行过程及执行结果打印到日志的常用命令:
./myscript.sh 2>&1 | tee mylog.log
可以用来指定需要重定向的标准输入或输出,比如 2>a.txt 表示将错误信息输出到文件a.txt中。
同时,还可以在这三个标准输入输出之间实现重定向,比如将错误信息重定向到标准输出,可以用 2>&1来实现。
Linux下还有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。
如果想要正常输出和错误信息都不显示,则要把标准输出和标准错误都重定向到/dev/null, 例如:
# ls 1>/dev/null 2>/dev/null
还有一种做法是将错误重定向到标准输出,然后再重定向到 /dev/null,例如:
# ls >/dev/null 2>&1
注意:此处的顺序不能更改,否则达不到想要的效果,此时先将标准输出重定向到 /dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null.
1. 标准输入的控制
语法:命令< 文件将文件做为命令的输入。
例如:
mail -s “mail test” wesongzhou@hotmail.com < file1 将文件file1 当做信件的内容,主
题名称为mail test,送给收信人。
2. 标准输出的控制
语法:命令> 文件将命令的执行结果送至指定的文件中。
例如:
ls -l > list 将执行“ls -l” 命令的结果写入文件list 中。
语法:命令>! 文件将命令的执行结果送至指定的文件中,若文件已经存在,则覆盖。
例如:
ls -lg >! list 将执行“ls - lg” 命令的结果覆盖写入文件list 中。
语法:命令>& 文件将命令执行时屏幕上所产生的任何信息写入指定的文件中。
例如:
cc file1.c >& error 将编译file1.c 文件时所产生的任何信息写入文件error 中。
语法:命令>> 文件将命令执行的结果附加到指定的文件中。
例如:
ls - lag >> list 将执行“ls - lag” 命令的结果附加到文件list 中。
语法:命令>>& 文件将命令执行时屏幕上所产生的任何信息附加到指定的文件中。
例如:
cc file2.c >>& error 将编译file2.c 文件时屏幕所产生的任何信息附加到文件error 中。
关于输入、输出和错误输出
在字符终端环境中,标准输入/标准输出的概念很好理解。输入即指对一个应用程序或命令的输入,无论是从键盘输入还是从别的文件输入;输出即指应用程序或命令产生的一些信息;与Windows系统下不同的是,Linux系统下还有一个标准错误输出的概念,这个概念主要是为程序调试和系统维护目的而设置的,错误输出于标准输出分开可以让一些高级的错误信息不干扰正常的输出信息,从而方便一般用户的使用。
在 Linux 系统中:标准输入(stdin)默认为键盘输入;标准输出(stdout)默认为屏幕输出;标准错误输出(stderr)默认也是输出到屏幕(上面的 std 表示 standard)。在 BASH 中使用这些概念时一般将标准输出表示为 1,将标准错误输出表示为 2。下面我们举例来说明如何使用他们,特别是标准输出和标准错误输出。
输入、输出及标准错误输出主要用于 I/O 的重定向,就是说需要改变他们的默认设置。先看这个例子:
$ ls > ls_result
$ ls -l >> ls_result
上面这两个命令分别将 ls 命令的结果输出重定向到 ls_result 文件中和追加到 ls_result 文件中,而不是输出到屏幕上。">"就是输出(标准输出和标准错误输出)重定向的代表符号,连续两个 ">" 符号,即 ">>" 则表示不清除原来的而追加输出。下面再来看一个稍微复杂的例子:
$ find /home -name lost* 2> err_result
这个命令在 ">" 符号之前多了一个 "2","2>" 表示将标准错误输出重定向。由于 /home 目录下有些目录由于权限限制不能访问,因此会产生一些标准错误输出被存放在 err_result 文件中。大家可以设想一下 find /home -name lost* 2>>err_result 命令会产生什么结果?
如果直接执行 find /home -name lost* > all_result ,其结果是只有标准输出被存入 all_result 文件中,要想让标准错误输出和标准输入一样都被存入到文件中,那该怎么办呢?看下面这个例子:
$ find /home -name lost* > all_result 2>& 1
上面这个例子中将首先将标准错误输出也重定向到标准输出中,再将标准输出重定向到 all_result 这个文件中。这样我们就可以将所有的输出都存储到文件中了。为实现上述功能,还有一种简便的写法如下:
$ find /home -name lost* >& all_result
如果那些出错信息并不重要,下面这个命令可以让你避开众多无用出错信息的干扰:
$ find /home -name lost* 2> /dev/null
同学们回去后还可以再试验一下如下几种重定向方式,看看会出什么结果,为什么?
$ find /home -name lost* > all_result 1>& 2
$ find /home -name lost* 2> all_result 1>& 2
$ find /home -name lost* 2>& 1 > all_result
另外一个非常有用的重定向操作符是 "-",请看下面这个例子:
$ (cd /source/Directory && tar cf - . ) | (cd /dest/directory && tar xvfp -)
该命令表示把 /source/directory 目录下的所有文件通过压缩和解压,快速的全部移动到 /dest/directory 目录下去,这个命令在 /source/directory 和 /dest/directory 不处在同一个文件系统下时将显示出特别的优势。
下面还几种不常见的用法:
n<&- 表示将 n 号输入关闭
<&- 表示关闭标准输入(键盘)
n>&- 表示将 n 号输出关闭
>&- 表示将标准输出关闭
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/羊村懒王/article/detail/449746
推荐阅读
article
Linux
Docker
安装
Docker
-
Compose
安装
Docker
安装
Mysql8
Nac...
Docker
安装
Docker
Compose
安装
Docker
安装 Mysql Nacos OpenResty Redi...
赞
踩
article
linux
数据
链路层
socket
编程 广播...
在Linux系统中,要进行数据
链路层
的
socket
编程,并发送广播包,你可以使用原始套接字(raw
socket
),并将...
赞
踩
article
C++
Qt实现
拦截
自身
键盘
事件
_
qt
linux
霸屏屏蔽
键盘
...
【代码】
C++
Qt实现
拦截
自身
键盘
事件
。_
qt
linux
霸屏屏蔽
键盘
qt
linux
霸屏屏蔽
键盘
...
赞
踩
article
解决方案
:2024年
Pytorch
(
GPU
版本)+
torchvision
手动
安装
教程[万能
安装
方法...
对于深度学习新手和入门不久
的
同学来说,在
安装
PyTorch和
torchvision
时经常会遇到各种各样
的
问题。本文介绍...
赞
踩
article
解决
git
bash
here 连接GitHub失败的问题
fatal
: unable to acce...
解决
git
bash
here 连接GitHub失败的问题
fatal
: unable to access '
https
:...
赞
踩
article
【
Linux
C | 多
线程
编程】
线程
的
创建
、
线程
ID
、
线程
属性
...
本文介绍了
线程
创建
相关的内容,包括pthread_create函数的详细介绍和使用例子,然后依次介绍该函数第一个参数相关...
赞
踩
article
Linux
GPIO
模块-
RK3588
GPIO
驱动分析_
rk3588
lp4x
evb
...
Linux
GPIO
驱动_
rk3588
lp4x
evb
rk3588
lp4x
evb
...
赞
踩
article
Java
必备技能之环境搭建篇 (
linux
ab
压力
测试
),35岁
程序员
...
-e filename Output CSV file with percentages served-r Do...
赞
踩
article
Linux
操作系统下
Docker
和
Docker
Compose
的
安装
教程(包含
x86
和
arm64
平台...
本文章将详细介绍
Linux
下
Docker
和
Docker
Compose
的
安装
教程。目录3为
x86
和
arm64
平台Dock...
赞
踩
article
Linux
ARM架构 银河麒麟V10
docker
+
mongodb
+
docker
-
compose
离...
由于本次
安装
的国产服务器没有网络,所以我们先找一台有网络的
docker
服务器找到对应的镜像下载下来,如果若是需要
安装
的服...
赞
踩
article
Linux
-
Zabbix
监控
-
安装
与配置...
Linux
CentOS 7 搭建
Zabbix
详细部署流程_zabbixzabbix 一、zab...
赞
踩
article
一种快速
移植
OpenHarmony
Linux
内核
的方法...
本文面向希望将
OpenHarmony
移植
到三方芯片平台硬件的开发者,介绍一种借助三方芯片平台自带
Linux
内核
的...
赞
踩
article
centos
是
什么
linux
操作系统
,
Linux
操作系统
之
CentOS
的介绍...
原标题:
Linux
操作系统
之
CentOS
的介绍
CentOS
是
一个基于Red Hat
Linux
提供的可自由使用源...
赞
踩
article
linux
mips
汇编
指令
集,
MIPS
汇编与
指令
...
一、
MIPS
寄存器
MIPS
的系统结构及设计理念比较先进,其
指令
系统经过通用处理器
指令
体系
MIPS
I、
MIPS
II、M...
赞
踩
article
【
Linux
】
网络
基础常识{
OSI
七层
模型/
TCP
/IP /
端口号
/各种协议}...
网络
编程前导知识。【
Linux
】
网络
基础常识{
OSI
七层
模型/
TCP
/IP /
端口号
/各种协议} ...
赞
踩
article
【
Linux
】
make
/
Makefile
&
进度
条
小
程序
_
make
进度
百分比...
【
Linux
】
make
/
Makefile
&
进度
条
小
程序
一,认识
make
/
make
file 二,实例代码 1,依赖...
赞
踩
article
linux
---
git
_smart
git
linux
...
目录安装
git
:用户信息检查配置信息用命令修改这里演示修改本地仓库的用户名和邮箱:文件的跟踪与提交:
git
分支安装
git
...
赞
踩
article
【
Linux
】
Linux
远程
连接
工具(
secureCRT
)的下载和
安装
_
linux
系统
安装
crt
...
如果不需要改变
安装
路径,可以直接点击 “Next” ,如果需要改变,点击 右边的 " Change“,选择自己想要
安装
的...
赞
踩
article
Linux
远程
管理
工具(
SecureCRT
)_
远程
crt...
SecureCRT
是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linu...
赞
踩
article
YOLOv8
测试
4:在
Linux
中
使用
Docker
部署
YOLOv8
模型
,并
使用
简单的...
在
Linux
中
使用
Docker
部署
YOLOv8
模型
,并
使用
简单的命令行脚本 CLI
测试
模型
,对图片内容进行...
赞
踩
相关标签
docker
elasticsearch
linux
网络
运维
c++
qt
计算机外设
pytorch
macos
torchvision
深度学习
github
c语言
pthread_create
多线程
线程创建
GPIO
中断
RK3588
java
压力测试