首页 > 系统相关 >无涯教程-Linux - 重定向

无涯教程-Linux - 重定向

时间:2023-11-26 21:32:35浏览次数:45  
标签:输出 教程 users 文件 无涯 file Linux 输入 重定向

在本章中,我们将详细讨论Shell I/O 重定向。大多数Unix系统命令从您的终端获取输入,并将输出发送回您的终端输出。

输出重定向

符号 >file 命令将输出输出到指定的 file中,如检查以下 who 命令,该命令将输出重定向用户文件中。

$who > users

请注意,终端上没有输出。这是因为输出已从默认的标准输出设备(终端)重定向到指定的文件。您可以检查用户文件的完整内容-

$cat users
oko         tty01   Sep 12 07:30
ai          tty15   Sep 12 13:32
ruth        tty21   Sep 12 10:10
pat         tty24   Sep 12 13:07
leanrfk     tty25   Sep 12 13:03
$

如果命令的输出重定向到文件,并且该文件已经包含一些数据,则该数据将丢失。考虑以下示例-

$echo line 1 > users
$cat users
line 1
$

您可以使用>>运算符将输出内容追加到现有文件中,如下所示:

$echo line 2 >> users
$cat users
line 1
line 2
$

输入重定向

就像命令的输出可以重定向到文件一样,命令的输入也可以从文件重定向。 由于大于符号>用于输出重定向,小于字符<用于重定向命令的输入。

如,要计算上面生成的文件 users 中的行数,可以执行以下命令-

$wc -l users
2 users
$

执行后,您将收到以下输出。您可以通过从文件用户重定向 wc 命令的标准输入来计算文件中的行数-

$wc -l < users
2
$

Here Document

Here文档用于将输入重定向到交互式Shell脚本或程序中,一般格式为-

command << delimiter
document
delimiter

在这里,Shell将<<操作符解释为读取输入的指令,直到找到包含指定定界符的行。 然后,直到包含定界符的行的所有输入行都被输送到命令的标准输入中。

以下是命令 wc -l 的输入,以计算总行数-

$wc -l << EOF
   This is a learnfk study website 
	for good (and bad) restaurants
	in Cape Town.
EOF
3
$

您可以使用Here文档使用脚本来打印多行,如下所示-

#!/bin/sh

cat << EOF
This is a learnfk study website
for good (and bad) restaurants
in Cape Town.
EOF	

执行后,您将收到以下输出-

This is a learnfk study website
for good (and bad) restaurants
in Cape Town.

以下脚本使用 vi 文本编辑器运行会话,并将输入内容保存在文件 test.txt 中。

#!/bin/sh

filename=test.txt
vi $filename <<EndOfCommands
i
This file was created automatically from
a shell script
^[
ZZ
EndOfCommands

如果使用vim作为vi来运行此脚本,则可能会看到类似以下的输出-

$sh test.sh
Vim: Warning: Input is not from a terminal
$

运行脚本后,您应该看到以下内容已添加到文件 test.txt 中-

$cat test.txt
This file was created automatically from
a shell script
$

忽视输出

有时您需要执行命令,但是您不希望输出显示在屏幕上。在这种情况下,可以通过将输出重定向到文件/dev/null 来丢弃输出-

$command > /dev/null

命令是您要执行的命令的名称。文件/dev/null 是一个特殊文件,会自动丢弃其所有输入。

要丢弃命令的输出及其错误输出,请使用标准重定向将 STDERR 重定向到 STDOUT -

$command > /dev/null 2>&1

这里的 2 代表 STDERR ,而 1 代表 STDOUT 。您可以通过将STDOUT重定向到STDERR来在STDERR上显示消息,如下所示:

$echo message 1>&2

重定向命令

以下是可用于重定向的命令的完整列表-

Sr.No. Command & 描述
1

pgm > file

pgm的输出重定向到文件

2

pgm < file

pgm从文件读取其输入

3

pgm >> file

pgm的输出附加到文件

4

n > file

具有描述符 n 的流的输出重定向到文件

5

n >> file

描述符 n 附加到文件

6

n >& m 

将流 n 的输出与流 m 合并

7

n <& m

 将流 n 的输入与流 m 的输入合并

8

<< tag

标准输入Here文档通过行开头的下一个标签

9

|

从一个程序或过程获取输出,并将其发送到另一个

请注意,文件描述符 0 通常是标准输入(STDIN), 1 是标准输出(STDOUT),而 2 是标准错误输出( STDERR)。

参考链接

https://www.learnfk.com/linux/linux-io-redirections.html

标签:输出,教程,users,文件,无涯,file,Linux,输入,重定向
From: https://blog.51cto.com/u_14033984/8572653

相关文章

  • Linux进程管理
    Linux中的进程管理1.进程的基本介绍在linux中,每一个执行的程序和指令都称为一个进程.每一个进程都有一个独立的进程号每一个进程,都会有一个对应的父进程.而这个父进程可以复制多个子进程.每一个进程,都可能有两种方式存在:前台,后台.前台进程是指,用户在屏幕上能够操作的程序......
  • 在Linux上使用终端给系统增加新的存储盘与分区
    在Linux系统中,你可以使用终端命令来增加新的存储盘与分区。本篇博客将指导你逐步完成这个过程。步骤1:识别新的存储盘首先,你需要插入新的存储盘到Linux系统中,或者通过MVwave给安装在本机的linux增加内存。然后,使用以下命令来查看系统是否识别到新的存储盘:sudofdisk-l这将列......
  • Linux学习随笔——文件查找、打包压缩及解压
    一、文件查找echo命令可以查看变量PATH的值;which命令可以在环境变量PATH设置的目录中查找符合条件的命令文件,查看其是否存在以及执行的位置;locate命令可以让用户快速查找到所需要的文件或目录,在使用该命令之前可先使用updatedb命令手动更新数据库;find命令:查找文件添加“i”忽......
  • 了解Linux存储管理
    Linux操作系统的存储管理是其核心功能之一,负责有效地管理计算机系统的内存资源。1.内存组成1.1物理内存物理内存是计算机硬件上实际存在的内存,由RAM(随机存储器)组成。Linux内核通过物理内存管理器来分配和释放这些硬件内存。1.2虚拟内存虚拟内存是一种将硬盘空间扩展到物理......
  • 性能测试复习准备——linux环境下安装kafka_2.13-3.2.3.tgz
    参考:https://www.bilibili.com/video/BV1Xy4y1G7zA?p=6&vd_source=79bbd5b76bfd74c2ef1501653cee29d6      解压到目录路径下:  启动kafka之前,首先启动zk:       修改配置文件:        启动kafka和查看:       ......
  • Arch Linux高分辨率屏幕设置分辨率及dpi缩放
    序言由于笔记本原生屏幕分辨率太渣,于是购入一块2440x1400、14英寸副屏。窗口管理器为dwm,使用startx命令进入环境注:此文不会改变tty的设置,仅设置xorg下某用户的个人设置目标实现:关闭笔记本屏幕,只使用副屏副屏分辨率设置为最高,且屏幕缩放设置为合适大小高分辨率小屏幕导致......
  • Linux桥接模式无网络的坑
    Linux虚拟机是VMware装的CentOS764位,从NAT模式(网络正常)改到了桥接模式,就是上不去网,排查如下:0.更改乔迁模式: 1.输入命令:vim/etc/sysconfig/network-scripts/ifcfg-ens33 发现ONBOOT是yes没问题。2.曾经将桥接模式的自动改成Inter开头的那个,无效 3.死......
  • Linux操作系统学习7
    Linux操作系统存储管理在此分享一下Linux操作系统的存储管理。在Linux操作系统中,存储管理是非常重要的一部分。它涉及到如何管理计算机的内存、磁盘和其他存储设备,以确保系统的高效运行。Linux操作系统的存储管理主要包括以下几个方面:1.内存管理:Linux操作系统使用虚拟......
  • 无涯教程-Linux - 引用机制
    在本章中,我们将详细讨论Shell引用机制。我们将从讨论元字符开始。元字符UnixShell提供了各种元字符,这些元字符在任何Shell脚本中使用时都有特殊的含义,并且除非引号引起,否则会导致终止。如,?匹配单个字符,而在目录中列出文件,而*匹配多个字符。这是大多数Shell特殊字符(也称为......
  • 初始Linux
    1.1云计算简介    当一件产品必不可少,而价格又特别高时,人们往往会寻找它的替代品。一旦廉价替代品的性能与原产品的性能相当,人们就会放弃对原产品的使用。云计算最初就是为了应对互联网行业高速发展所带来的网络、服务器、存储、应用软件及服务的昂贵价格而出现的“替代品......