愚蠢的短句:Bash 的 |、>、>>、<、2>>、2> 运算符最简短的基础词汇愚蠢的短句列表

2025-06-04

愚蠢的短小:Bash 的 |、>、>>、<、2>>、2> 运算符

基本面大多偏空

词汇

愚蠢的短名单

这是一个简短的入门和参考指南,用于快速理解这些 Bash 运算符:,,,,,,,主要>通过一句话一个例子来完成。1>>>1>><2>>2>>

本指南假设...

  1. ...您正在使用 Bash 终端。(与操作系统无关)
  2. ...您熟悉 CLI 的使用和导航。
  3. ...您熟悉 Bash 程序参数/标志/选项的概念。

内容

注意:对于本博客,我们假设我们只写入和读取文件。


基本面大多偏空

诚然,直到我编程生涯的后期,我才开始费心去研究Linux 中| > >><运算符的作用。如果你曾经按照 GitHub 的说明将 SSH 密钥添加到你的帐户,那么你已经使用过所谓的重定向运算符 了!

程序基础

一个程序有三个输入和输出流及其对应的编号。它有标准输入 (STDIN)(0)、标准输出 (STDOUT)(1) 和标准错误 (STDERR)(2)。

程序 I/O 流图表

注意:我这张漂亮的图只是用来表达习惯。如果你自己写程序,可以有效地为流命名,并输出任意格式。不过你不知道这一点。如果你知道,就假装不知道,然后继续阅读。

例如:让我们以好的 ol' 为例ls。当您ls没有错误时,输入是./(Bash 假定空是当前目录),stdout 是您随后看到的目录列表,而 stderr 什么也没有(因为没有错误需要捕获)。

程序会同时流式传输 stdout 和 stderr;这是因为不是 stdout 或 stderr”,而是“stdoutstderr”。运行ls presentDir notPresentDir,您可以同时看到 stdout 和 stderr。

默认情况下,stdout、stderr 和 stdin 都在终端中。使用这些重定向操作符,我们只是将这些流重定向到其他地方


词汇

“程序”:这是终端中可执行文件的调用。每次你cd或 时ls,你都在运行一个程序。
cat:打印给定文件内容的程序。
wc -w:输出文件中单词数的程序。
pbc:我的别名xclip -selection clipboard。对于 Mac 用户来说,这与 完全相同pbcopy
pbp:我的粘贴剪贴板的别名。


愚蠢的短名单

⭐️ 重定向操作符有三个与输出相关的数字:0 = 输入,1 = 输出,2 = 错误。如果没有指定数字,则默认为 1。⭐️如果
文件不存在,这些操作符会创建该文件。

>将标准输出写入给定文件。

将标准输出发送到给定文件,而不是在终端中打印。

$ ls -1 > list.txt

$ cat list.txt
lubbock.txt
odessa.txt
baird.txt
Enter fullscreen mode Exit fullscreen mode

>>将 stdout 附加到给定文件。

将 stdout 添加到文件内容,而不是替换文件内容。

$ echo "Flamingo" >> favorite-birds.txt

$ cat favorite-birds.txt
Cardinal
Penguin
Flamingo
Enter fullscreen mode Exit fullscreen mode

<将文件重定向为标准输入

将文件内容作为标准输入传递。
例如:如果我们使用wc -w book.txt,程序将输出 book.txt 的字数和文件名(例如:2394 book.txt)。
如果我们使用 ,wc -w < book.txt则表示我们将 book.txt 的内容“传入”作为输入,因此wc -w < book.txt只会返回数字 ( 2394),就像我们将整个内容输入到终端一样。

$ wc -w book.txt
2394 book.txt

$ wc -w < book.txt
2394
Enter fullscreen mode Exit fullscreen mode

2>:将 stderr 重定向到给定的文件。

如果出现错误,则将 stderr 重定向到文件而不是在终端中打印。

$ ls cuteDogPics 2> example.txt

$ cat example.txt
ls: cuteDogPics: No such file or directory
Enter fullscreen mode Exit fullscreen mode

2>>:将 stderr 附加到给定文件。

>>完全相同>,但带有 stderr。

$ cp ~/Documents/Reports/June2019.xlsx ~/Desktop 2>> ~/error.log

$ cat ~/error.log
cp: /Users/bananabrann/Reports/January2019.xlsx: No such file or directory
cp: /Users/bananabrann/Reports/March2019.xlsx: No such file or directory
cp: /Users/bananabrann/Reports/June2019.xlsx: No such file or directory

Enter fullscreen mode Exit fullscreen mode

|:使用 stdout 作为下一个程序的 stdin。

使用左侧程序的标准输出|作为右侧程序的标准输入。

$ ls -1
buffalo-gap.txt
abilene.txt
clyde.txt
lubbock.txt

$ ls -1 | head -2
buffalo-gap.txt
abilene.txt
Enter fullscreen mode Exit fullscreen mode

可菊花链连接

使用|,我们最终可以串联任意数量的程序,以达到预期的效果。
在下图中,我们获取grep程序的标准输出,并将其作为 的标准输入head及其参数发送。然后,我们将该标准输出发送到 的标准输入tail,最后将标准输出重定向到 guestlist.txt。

图像的替代文本


希望这对某些人有所帮助,或者激发某些人的兴趣来尝试这些操作符并自行进一步研究!

编码愉快!🍻

文章来源:https://dev.to/bananabrann/stupid-short-bash-s-2-2-4n1m
PREV
介绍 React-Redux 使用 Hooks (useSelector && useDispatch)
NEXT
高阶函数与函数组合