linux环境下运行脚本时常用>/dev/null 2>&1 &这一串的作用

前言

大雨哗哗哗,叫车无人接,把最近用到的命令总结一下,方便日后的拿来主义。

>/dev/null 2>&1

>/dev/null 2>&1 & 是一个常见的 Shell 命令行用法,用于在 Linux 或类 Unix 系统上运行一个程序并将其输出(标准输出和标准错误输出)重定向到 /dev/null,同时将程序在后台(background)运行。

接下来可以逐步解释下各部分的作用:

  • >:重定向符号,用于将输出重定向到指定的文件或设备。

  • /dev/null:在 Unix 系统上,/dev/null 是一个特殊的设备文件,它会将所有写入它的内容都丢弃,相当于一个空黑洞。将输出重定向到 /dev/null 就意味着将输出丢弃,不会显示在终端或记录到文件中。

  • 2>:重定向标准错误输出的符号。2 表示标准错误流,也称为文件描述符 2。

  • &1:将标准错误输出重定向到标准输出的符号。&1 表示文件描述符 1,而标准输出的文件描述符也是 1。这样,就将标准错误输出和标准输出合并到一起,都重定向到了 /dev/null

  • &:在命令行中,& 符号用于将命令置于后台运行,使得当前终端可以继续输入其他命令,而不需要等待前台命令的完成。

综合起来,>/dev/null 2>&1 & 的作用是将某个程序在后台运行,并将其标准输出和标准错误输出都丢弃,不在终端中显示或记录。这样做常常用于运行不需要显示输出的程序或脚本,并且让它在后台运行,不占用终端的输入输出。

去除文件夹下所有文本文件的行末空格

想要达到这个目的有多种实现方式,比如:

1
find . -type f -exec egrep -l " +$" {} \; | grep -v xxx | xargs sed -i 's/[ ]*$//g'

再比如:

1
find xxx -type f -name "*.txt" -exec sed -i 's/[ \t]*$//' {} \;

主要部分的含义:

  • -type f-type f 参数用于限制 find 命令只查找普通文件(非目录、符号链接等)。

  • -name "*.txt"-name "*.txt" 参数用于匹配文件名,这里匹配以 .txt 结尾的文件。您可以根据实际需要修改为其他文件扩展名。

  • -exec-exec 参数用于对找到的每个文件执行后面的命令。

  • sed -i 's/[ \t]*$//' {}sed 命令用于进行文本替换。-i 参数表示直接在原文件上进行修改(in-place),而不是在终端输出。s/[ \t]*$// 是一个替换表达式,用于匹配行末的空格(包括空格和制表符),将其替换为空。

  • {}find 命令中的占位符,代表找到的每个文件名。

  • \;find 命令中的结束符,表示 -exec 参数的结束。

还可以利用管道来实现,使用管道 (Pipeline) 去掉一个文件夹下所有文本文件行末的空格,可以结合 find 命令和 sed 命令来完成。管道允许将一个命令的输出作为另一个命令的输入,以实现更复杂的文本处理,如下:

1
find xxx -type f -name "*.txt" -print0 | xargs -0 sed -i 's/[ \t]*$//'

各部分的含义:

  • find xxx -type f -name "*.txt" -print0find 命令查找指定目录 xxx 下的所有以 .txt 结尾的文本文件,并使用 -print0 参数将文件名以空字符作为分隔符打印出来。这是为了处理文件名中可能包含空格或特殊字符的情况。

  • |:管道符号,将 find 命令的输出传递给下一个命令。

  • xargs -0xargs 命令用于接收管道的输入,并将其作为参数传递给后面的命令。-0 参数表示使用空字符作为输入分隔符,与 find 命令的 -print0 参数相对应。

  • sed -i 's/[ \t]*$//'sed 命令用于进行文本替换,同样使用 -i 参数进行直接修改。s/[ \t]*$// 是一个替换表达式,用于去掉行末的空格。

与之前的命令相比,这个命令通过管道一次性处理了多个文件,效率可能会更高一些。

总结

  • 将某个程序在后台运行,并将其标准输出和标准错误输出都丢弃,可以在运行命令后加 >/dev/null 2>&1
  • 去除文件行末空格 find . -type f -exec egrep -l " +$" {} \; | grep -v xxx | xargs sed -i 's/[ ]*$//g'
==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

机会很重要,选择也很重要,在机会面前做出选择同样很重要,不要过分夸大未选择的那条路,很多时候即使重新选择一次,大部分人的道路不会发生改变,已经定型了…

我也不知道是熬到了司机来,还是把前边排队的人熬走了,现在还有3人排队~

2023-8-1 01:47:54

Albert Shi wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客