我认为这些术语在松散使用时几乎指的是同一件事:
这些术语中的每一个究竟指的是什么?
如果我使用:
strace echo 'a
b
c' > file
Run Code Online (Sandbox Code Playgroud)
底线是:
write(1, "a\nb\nc\nd\n", 8) = 8
Run Code Online (Sandbox Code Playgroud)
但在
strace echo 'a
b
c
d' > /dev/pts/0
Run Code Online (Sandbox Code Playgroud)
这些线路是:
write(1, "a\n", 2) = 2
write(1, "b\n", 2) = 2
write(1, "c\n", 2) = 2
write(1, "d\n", 2) = 2
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,为什么它是逐行写的,而在第一种情况下它是一起写的。可能是因为终端是字符设备,但我得到了字符设备的定义:
字符 (char) 设备是一种可以作为字节流(如文件)访问的设备。 char 设备和常规文件之间唯一相关的区别是您始终可以在常规文件中来回移动,而大多数字符设备只是数据通道,只能按顺序访问。
编辑:Shell 是 bash。