Linux标准输入输出与重定向详解|果断收藏

Linux标准输入输出与重定向详解|果断收藏,第1张

linux中的>、>>、<、<<、2>、2>>、2>&1、&>、&<,总归要面对的

为了更好的理解这个问题,我们需要追本溯源。

执行一个shell命令行时通常会自动打开三个标准文件

(1) 、标准输入文件(stdin)

通常对应终端的键盘。

(2)、标准输出文件(stdout)。

(3)、标准错误输出文件(stderr)。

(2)和(3)这两个文件都对应终端的屏幕。

进程将从标准输入文件中得到输入数据。

将正常输出数据输出到标准输出文件[显示器]。

将错误信息送到标准错误文件中[显示器]。

下图所示:

0、1、2表示一个文件描述符

但是,有时候我们不想把一些进程处理后信息输出到显示器。

这时我们就引出了重定向。

改变标准输入/输出的方向

三种重定向:

1、重定向标准输出,包括两种。

(1)、>(覆盖),等价1>

将命令执行的结果输出到指定文件,非显示器。

(2) 、>>(追加),等价1>>

将命令执行的结果追加到指定文件,非显示器。

2、 重定向标准输入,包括两种。

(1) 、<

将命令中接收的输入途径,由键盘改为指定文件。

(2) 、<<[Here Document]

命令序列传递到一个交互程序或者命令中。

3、 重定向标准错误,包括两种。

(1) 、2>(覆盖)

将命令执行的结果输出到指定文件。

(2) 、2>>(追加)

将命令执行的结果追加到指定文件。

1、重定向标准输出和重定向标准错误到同一个文件中

有以下的几种方式

(1) 、2>&1

(2) 、>&

(3) 、&>

2、 两个特殊文件

(1) 、/dev/nul

过滤标准错误信息

意思就是不想显示结果就输出到这里面。

(2) 、/dev/zero

创建指定长度的文件

案例1:

测试>and >>

案例2:

测试<and <<

测试<

测试<<

案例3:

测试2>and 2>>

案例4:

测试重定向标准输出和重定向标准错误到同一个文件中

(1)、>&

(2)、&>

与上面的案例类似,不做解释

(3) 、2>&1

案例5:

使用/dev/nul文件

有时候我们使用命令,不想将输出的信息显示到界面

这时我们可以使用 &>/dev/nul[常用]

简单测试修改demo 用户密码

嵌入式linux的启动主要分为两个阶段:

①第一部分bootloader启动阶段

②第二部分linux 内核初始化和启动阶段

第一节:start_kernel

第二节:用户模式( user_mode )开始,start_kernel结束

第三节:加载linux内核完毕,转入cpu_idle进程

Linux version 2.4.20-uc0 (root@Local) (gcc version 2.95.3

20010315 (release)(ColdFire patches - 20010318 from http://f

(uClinux XIP and shared lib patches from http://www.snapgear.com/)) #20 三 6月 1

8 00:58:31 CST 2003

Processor: Samsung S3C4510B revision 6

Architecture: SNDS100

On node 0 totalpages: 4096

zone(0): 0 pages.

zone(1): 4096 pages.

zone(2): 0 pages.

Kernel command line: root=/dev/rom0

Calibrating delay loop... 49.76 BogoMIPS

Memory: 16MB = 16MB total

Memory: 14348KB available (1615K code, 156K data, 40K init)

Dentry cache hash table entries: 2048 (order: 2, 16384 bytes)

Inode cache hash table entries: 1024 (order: 1,

Mount-cache hash table entries: 512 (order: 0, 4096 bytes)

Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)

Page-cache hash table entries: 4096 (order: 2, 16384 bytes)

POSIX conformance testing by UNIFIX

Linux NET4.0 for Linux 2.4

Based upon Swansea University Computer Society NET3.039

Initializing RT netlink socket

Starting kswapd

Samsung S3C4510 Serial driver version 0.9 (2001-12-27) with no serial options en

abled

ttyS00 at 0x3ffd000 (irq = 5) is a S3C4510B

ttyS01 at 0x3ffe000 (irq = 7) is a S3C451

Blkmem copyright 1998,1999 D. Jeff Dionne

Blkmem copyright 1998 Kenneth Albanowski

Blkmem 1 disk images:

0: BE558-1A5D57 [VIRTUAL BE558-1A5D57] (RO)

RAMDISK driver initialized: 16 RAM disks of 1024K size 1024 blocksize

Samsung S3C4510 Ethernet driver version 0.1 (2002-02-20) <mac@os.nctu.edu.tw>

eth0: 00:40:95:36:35:34

NET4: Linux TCP/IP 1.0 for NET4.0

IP Protocols: ICMP, UDP, TCP

IP: routing cache hash table of 512 buckets, 4Kbytes

TCP: Hash tables configured (established 1024 bind 1024)

VFS: Mounted root (romfs

Freeing init memory: 40K

输出即把相关对象通过输出设备(显示器等)显示出来,输出又分正确输出和错误输出

一般情况下标准输出设备为显示器,标准输入设备为键盘。

linux中用0代表标准输入,1代表标准正确输出,2代表标准错误输出。

输出重定向:正常输出是把内容输出到显示器上,而输出重定向是把内容输出到文件中

例如:ifconfig >test.log 即把ifconfig执行显示的内容写入test.log.当前页面不再显示执行结果。

注意:错误输出重定向>/>>后边没有空格

命令 >>文件 2>&1 和 命令 &>>文件 两个命令作用相同

系统有个常见用法 ls &>/dev/null 正确输出或错误输出结果都不要。(null可以理解为黑洞或垃圾站)

命令>>文件1 2>>文件2 正确日志和错误日志分开保存

例:nohup java -jar /usr/sbin/lb-agent.jar >>/var/log/lb-agent.log 2>&1 &

将jar执行的结果写入到lb-agent.log中

在命令最后加上&符号,表示让这个进程到后台去执行,这样立刻返回到提示符状态,我们可以接着做下面的事。如:command &。

这种“后台”进程在shell一直打开的情况下是没有问题的,如果我们关了shell窗口甚至退出ssh登录或vnc登录,那么进程自动就结束了。所以如果想退出窗口乃至退出登录仍然保持程序运行,再加上nohup,形如:nohup command 1>output 2>&1 &  《Linux就该这么学》学习更多linux知识。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8966201.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存