Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在Linux使用Bash脚本命令

在Linux使用Bash脚本命令

原创
作者头像
用户5005176
修改于 2021-08-10 02:26:48
修改于 2021-08-10 02:26:48
2.2K00
代码可运行
举报
文章被收录于专栏:网站知识网站知识
运行总次数:0
代码可运行

编写Bash脚本或在Linux命令行上工作时,最常见的任务之一是读写文件。

本文介绍了如何使用重定向操作符和tee命令或者在bash脚本将文本写入文件。

使用重定向操作符写入文件

在Bash中,输出的重定向使您可以从命令捕获输出并将其写入文件。

将输出重定向和写入文件的一般格式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
output > filename 
output >> filename 

  • >重定向运算符将输出写入指定文件。 如果文件存在,则将其截断为零长度。 否则,将创建文件。 使用此运算符时要格外小心,因为您可能会覆盖重要文件。
  • >>重定向运算符会将输出追加到给定文件。 如果文件不存在,则会创建该文件。

您需要具有对该文件的写入权限。 否则,您将收到拒绝权限错误。

这是一个简单的示例,显示了如何将echo命令的输出重定向到文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo "this is a line" > file.txt

为防止覆盖现有文件,请使用内置的set启用“ noclobber”选项:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set -o noclobber
echo "this is a line" > file.txt

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bash: file.txt: cannot overwrite existing file

>|运算符可让您覆盖Bash的“ noclobber”选项:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set -o noclobber
echo "this is a line" >| file.txt

>>运算符将输出追加到文件末尾,而不是覆盖文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo "this is a line" >> file.txt

使用printf命令创建复杂的输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
printf "Hello, I'm %s.\n" $USER > file.txt

如果要将多个行写入文件,请使用heredoc文档(Heredoc)重定向。

例如,您可以将内容传递到cat命令并将其写入文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat << EOF > file.txt
The current working directory is: $PWD
You are logged in as $(whoami)
EOF

要添加这些行,请在文件名之前将>更改为>>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat << EOF >> file.txt
The current working directory is: $PWD
You are logged in as $(whoami)
EOF

您可以将任何命令的输出写入文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
date +"Year: %Y, Month: %m, Day: %d" > file.txt

date命令的输出将被写入文件。

使用tee命令写入文件

tee命令从标准输入读取并同时写入标准输出和一个或多个文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo "this is a line" | tee file.txt

tee命令的默认行为是覆盖指定的文件,与>运算符相同。 要将输出附加到文件,请使用-a--append)选项调用命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo "this is a line" | tee -a file.txt

如果您不希望tee写入标准输出,则可以将其重定向到/dev/null

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo "this is a line" | tee file.txt >/dev/null

要将文本写入多个文件,请将文件指定为tee命令的参数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo "this is a line" | tee file_1.txt file_2.txt file_3.txt

tee命令的另一个优点是,您可以将其与sudo结合使用,并写入其他用户拥有的文件。 要将文本追加到您没有写权限的文件中,请在tee之前加 sudo

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo "this is a line" | sudo tee file.txt

echo命令输出作为输入传递到tee,这将提升sudo权限并将文本写入文件。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linux常用命令05 - 文本追加到文件中
重定向允许您捕获命令的输出,并将其作为输入发送到另一个命令或文件。 重定向运算符将输出追加到给定文件。
叉叉敌
2020/04/21
6K0
Linux命令技巧分享:Bash Heredoc 使用示例
编写shell脚本时,您可能需要将多行文本或代码块传递给交互式命令,例如tee,cat或sftp。在Bash和其他类似Zsh的shell中,Here document(Heredoc)是一种重定向,允许您将多行输入传递给命令。
用户8710643
2021/06/22
2K0
如何在Linux中创建文件?多个文件创建操作命令。
如果文件file1.txt不存在,则上面的命令将创建该文件,否则,它将更改其时间戳。
用户5005176
2021/08/10
40K0
SHELL(bash)脚本编程三:重定向
在这一篇中,我们介绍了一点关于输入输出重定向和管道的基础知识,本篇将继续重定向的话题。 在开始前,先说一说shell中的引用。
用户5030870
2019/04/11
1.7K0
Shell脚本攻略04-玩转文件描述符及重定向
在编写脚本的时候会频繁使用标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。
小小工匠
2021/08/16
9150
如何将 Linux 命令输出重定向到文件?
在Linux系统中,命令行是非常强大和灵活的工具。它允许我们执行各种任务和操作,包括将命令的输出保存到文件中。本文将介绍如何使用重定向操作符将Linux命令的输出导入到文件中,并列举尽可能多的命令示例。
网络技术联盟站
2023/07/14
1.9K0
如何将 Linux 命令输出重定向到文件?
《Linux命令行与shell脚本编程大全》第十五章 呈现数据
15.1 理解输入和输出 现在知道两种显示脚本输出的方法 1)在显示器屏幕上显示 2)将输出文件重定向到文件中 15.1.1 标准文件描述符 Linux系统将每个对象当做文件处理。这包括输入和数出进程。 Linux用文件描述符来标识每个文件对象。 它是一个非负整数,可以唯一标识会话中打开的文件。 每个进程一次最多可以有九个文件描述符 bash shell保留的前3个文件描述符(0、 1、 2) 1.STDIN 标准输入(0) STDIN文件代表shell的标准输入。 对终端界面来说,标准输入是键盘。 she
xcywt
2018/01/11
1.4K0
《Linux命令行与shell脚本编程大全》第十五章 呈现数据
shell 管道与重定向
使用 >> 或 > 将输出流重定向到文件。如果文件不存在则创建文件;如果文件已存在的话,> 覆盖文件,>> 附加文本到文件。例如:
sir5kong
2023/05/25
8750
【linux学习指南】Linux管理文件与处理数据二(重定向与管道)
本文将介绍Linux系统中的常用命令:mv、cat、echo、重定向、head和tail,主要用于文件管理和数据处理。重点讲解mv命令和重定向的示例,最后演示如何用head和tail快速提取大型文件中的指定行。
学习起来吧
2024/08/16
4510
【linux学习指南】Linux管理文件与处理数据二(重定向与管道)
Linux重定向
在 Linux 中,重定向是一种将命令的输出或输入重定向到文件或其他命令的机制。它可以用于管理标准输入、标准输出、标准错误等。重定向通常与命令行中的 >、<、>>、2> 等符号一起使用。下面是关于 Linux 重定向的详细说明。
ljw695
2024/10/18
2350
Shell编程:流程控制与高级应用的深入解析
使用Shell编程时,流程控制是非常重要的,它允许你根据条件执行不同的命令或者控制程序的执行流程。Shell支持一些基本的流程控制结构,包括条件语句和循环语句。
久绊A
2023/12/19
2090
如何在Linux中将文本内容追加到文件末尾?
在Linux中处理配置文件时,有时您需要将诸如配置参数之类的文本附加到现有文件中。追加只是意味着将文本添加到文件的末尾。
用户6543014
2020/03/06
14.7K0
如何在Linux中将文本内容追加到文件末尾?
编写快速安全Bash脚本的建议
作者:oschina 来源:https://www.oschina.net/translate/bash-scripting-quirks-safety-tips?print 昨天我和一些朋友聊起Ba
小小科
2018/05/02
1.9K0
编写快速安全Bash脚本的建议
Linux下的常用基本指令
推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏网站,请点击下方链接查看。 https://www.captainbed.cn/f1
鲜于言悠
2024/05/24
1630
Linux下的常用基本指令
linux中将文本附加到文件末尾
在 Linux 中使用配置文件时,有时需要将诸如配置参数之类的文本附加到现有文件中。追加只是意味着将文本添加到文件的末尾或底部。 使用>>运算符附加文本 >>操作者输出重定向到一个文件,如果该文件不存在,则创建,但如果它存在,则输出将在文件的末尾追加。 例如,你可以使用echo 命令将文本附加到文件的末尾 # echo "rumenz.com" >> /root/rumenz.txt 或者,你可以使用 printf命令(不要忘记使用\n字符添加下一行) # printf "rumenz.com\n" >>
玖柒的小窝
2021/10/21
1.6K0
Shell脚本管道符与重定向
命令格式: 命令1 | 命令2,有一定的编程思想在里面 命令1的正确输出作为命令2的操作对象,和逻辑与不一样
全栈工程师修炼指南
2020/10/26
1.8K0
Shell脚本管道符与重定向
shell 快速入门
变量 #!/bin/bash # 变量 echo "01_变量.sh" # 变量定义与赋值,等号两边不能用空格分开 name=hahahaha echo $name echo 也使用 {} 输出为 ${name} # 一些特殊变量 test_func() { echo "function name is $FUNCNAME" } test_func echo $HOSTNAME echo $HOSTTYPE echo $MATCHTYPE echo $LANG echo $PWD # echo $
祥祥
2021/01/08
1.9K0
How to Use the Stdin, Stderr, and Stdout Streams in Bash
How to Use the Stdin, Stderr, and Stdout Streams in Bash – Linux Consultant
阿东
2023/03/16
2.8K0
How to Use the Stdin, Stderr, and Stdout Streams in Bash
Linux常用指令(2)
echo 的用法不只如此,可以利用 echo 进行 输出重定向,输出重定向就是将输出的结果从默认的终端(屏幕)重定向输出到其他地方,可以输出到文件中或者追加到文件末尾。
HZzzzzLu
2024/12/26
1240
Linux常用指令(2)
如何在Bash Shell脚本中使用`exec`命令?
exec 是一个在Bash Shell脚本中使用的命令,它允许您替换当前进程的内容,包括进程ID和文件描述符。使用exec命令可以实现一些有用的功能,例如替换脚本当前的Shell进程、切换到不同的命令解释器、重定向标准输入输出等。本文将详细介绍如何在Bash Shell脚本中使用exec命令,并提供一些常见的用例和示例。
网络技术联盟站
2023/06/08
4K0
相关推荐
Linux常用命令05 - 文本追加到文件中
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验