linux中 > 、>> 的用法
linux中>表示覆盖原文件内容(文件的日期也会自动更新),>>表示追加内容(会另起一行,文件的日期也会自动更新)
1 将history命令执行的结果保存到history.log文件中
[root@gxzs-solr1 ~]# history > history.log (history.log 文件 会自动生成)
[root@gxzs-solr1 ~]# cat history.log
2 执行命令 curl 'xxx' ,将其返回结果保存到 log.log 中
[root@gx-solr1 ~]# curl 'http://192.168.0.110:8983/solr/scan_detail/admin/file?_=1544066402749&contentType=text/plain;charset=utf-8&file=managed-schema&wt=json' > log.log
3 执行命令 cat /etc/hosts , 将其返回结果保存到 hosts.log 中
[root@slave1 ~]# cat /etc/hosts > hosts.log [root@slave1 ~]# more hosts.log 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
注意:
使用 > ,执行命令时,每次都会新生成一个 > 后面的文件,将之前生成的文件替换掉(文件创建时间也会跟着改变)。
4 使用 >> 向 hosts.log中追加 当前日期
[root@slave1 ~]# echo "当前日期是 `date`" >> hosts.log
[root@slave1 ~]# ls -l hosts.log -rw-r--r--. 1 root root 11 Dec 13 16:04 hosts.log # 查看hosts.log 的日期 [root@slave1 ~]# cat hosts.log # 查看hosts.log 文件的内容 I am OK! [root@slave1 ~]# echo "当前日期是 `date`" >> hosts.log # 向hosts.log中追加 当前日期 [root@slave1 ~]# cat hosts.log # 再次查看hosts.log 文件的内容 I am OK! 当前日期是 Thu Dec 13 16:05:18 CST 2018 [root@slave1 ~]# ls -l hosts.log # 再次查看hosts.log 的日期 -rw-r--r--. 1 root root 56 Dec 13 16:05 hosts.log [root@slave1 ~]#
1 和 2 在 Linux 中代表什么
在Linux系统中0 1 2是一个文件描述符
从上表看的出来,我们平时使用的
echo "hello" > t.log
其实也可以写成
echo "hello" 1> t.log
为什么2>&1要放在后面
考虑如下一条shell命令
nohup java -jar app.jar >log 2>&1 &
我们不妨把1和2都理解是一个指针,然后来看上面的语句就是这样的:
本来1----->屏幕 (1指向屏幕) 执行>log后, 1----->log (1指向log) 执行2>&1后, 2----->1 (2指向1,而1指向log,因此2也指向了log) `` 再来分析下
nohup java -jar app.jar 2>&1 >log &
本来1----->屏幕 (1指向屏幕) 执行2>&1后, 2----->1 (2指向1,而1指向屏幕,因此2也指向了屏幕) 执行>log后, 1----->log (1指向log,2还是指向屏幕)
java代码如下:
public class Htest { public static void main(String[] args) { System.out.println("out1"); System.err.println("error1"); } }
javac编译后运行下面指令:
java Htest 2>&1 > log
你会在终端上看到只输出了"error1",log文件中则只有"out1"
每次都写">log 2>&1"太麻烦,能简写吗?
有以下两种简写方式
&>log
>&log
比如上面小节中的写法就可以简写为:
nohup java -jar app.jar &>log &
上面两种方式都和">log 2>&1"一个语义。
那么 上面两种方式中&>和>&有区别吗?
语义上是没有任何区别的,但是第一中方式是最佳选择,一般使用第一种。
故乡明
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话