gpt4 book ai didi

command-line - UNIX tty 命令和文件命令?

转载 作者:行者123 更新时间:2023-12-01 08:18:59 24 4
gpt4 key购买 nike

我是 UNIX 的新手,当我阅读一本关于 UNIX 的书时,我遇到了以下两个我不理解的问题。我将衷心感谢您的帮助。

1)查找file命令的手册页,然后在/dev目录下的所有文件上使用它。你能把这些文件分成两类吗?

2) 运行 tty 命令,并记下您终端的设备名称。现在在命令 cp/etc/passwd/dev/pts/6 中使用此设备名称 (/dev/pst/6)。你观察什么?

最佳答案

这个问题真的很好……我们很容易把这么多事情视为理所当然。

阅读名为 file 的命令的手册页,只需输入...

man file

...它会提供很多可能会令人困惑的信息,但如果你坚持下去,你会很快习惯这些东西。至关重要的是, file是一个尝试对您要求的文件进行分类的程序。如果您键入...
file /dev/*

...这将执行问题所要求的操作,并使用/dev/子目录中的文件列表调用文件。该列表实际上是由您输入的“shell”程序准备的,该程序然后执行文件程序并将列表传递给它。 file然后输出文件的一些描述。在我的电脑上,在哪里 [SHELL-PROMPT]在您的计算机上会有所不同,我输入了文件/dev/* 并且部分输出如下所示:
[SHELL-PROMPT] file /dev/*
...lots of stuff...
/dev/cevt: character special (255/176)
/dev/console: character special (5/1)
/dev/core: symbolic link to `/proc/kcore'
/dev/cpqci: character special (10/209)
/dev/cpqhealth: directory
/dev/crom: character special (255/180)
...lots of stuff...
/dev/md8: block special (9/8)
/dev/md9: block special (9/9)
/dev/mem: character special (1/1)
/dev/mice: character special (13/63)
/dev/mouse0: character special (13/32)
/dev/mptctl: character special (10/220)
/dev/net: directory
/dev/nflog: character special (36/5)
/dev/null: character special (1/3)
/dev/parport0: character special (99/0)
...lots of stuff...

左栏中的每个目录/文件组合(称为路径)都有一个文件系统条目,文件描述了右侧的内容。这些描述可能没有多大意义,但您可以看到一些模式:有些条目是“块特殊”,有些是“字符特殊”,有些是目录,这意味着您可能会在下面找到更多文件(即 ls /dev/net/* )。 “特殊”文件后面的数字只是操作系统标识符,用于区分提到的文件。这样做的意义在于,连接到计算机的某些设备的输入和输出成为可能,就好像该设备是文件系统中的文件一样。 "file"抽象被用作输入和输出的通用模型。因此,例如/dev/tty 是 tty - 或终端 - 设备。您尝试从那里读取的任何数据实际上都将从您用来键入 shell 的键盘中获取(在简单的情况下),并且您在那里写入的任何内容都将在您键入的同一终端中可见。/dev/null 是另一个有趣的地方:您可以从中读取和写入,但它是一个虚构的东西,从不实际提供数据(仅指示文件结束条件,并丢弃写入其中的任何数据)。您可以继续从/dev/random 读取,它每次都会产生随机值......如果您需要随机数或文件内容进行加密或某种统计工作,那就太好了。

2) Run the tty command, and note the device name of your terminal. Now use this device name(/dev/pst/6) in the command cp /etc/passwd /dev/pts/6. what do you observe?



通过键入“tty”,您可以询问代表您终端的设备...
[SHELL-PROMPT] tty
/dev/pts/11

但是,我只是说/dev/tty 是同一事物的另一个名称,因此通常不需要使用“tty”程序来查找这个更具体的名称。尽管如此,如果您为主机创建了几个终端窗口,并在每个窗口中键入 tty,您将看到每个 shell 都连接到不同的伪终端设备。尽管如此,每个 shell - 以及从 shell 运行的程序 - 在默认情况下也可以将其自己的终端输入和输出设备称为/dev/tty ......这是一个方便的上下文相关名称。命令...
cp /etc/passwd /dev/pts/6

...在那里你用你的 tty 程序真正报告的任何东西替换 6(例如在我的例子中是 11),做同样的事情......
cp /etc/passwd /dev/tty

...它只是读取文件/etc/passwd 的内容并将它们写在您的屏幕上。现在,问题是/etc/password 对普通人来说看起来像是很多无法理解的垃圾 - 难怪您无法理解正在发生的事情。试试这个...
echo "i said hello" > /tmp/hello.file
cp /tmp/hello.file /dev/tty

...您将看到如何将一些特定的、可识别的内容定向到一个新文件中(在这种情况下,将其放在 tmp“临时”目录中(重新启动 PC 时该文件将消失),然后复制该文件内容回到你的屏幕。

(如果你同时登录了两个终端窗口,你甚至可以进入一个shell,将文件复制到另一个shell报告的/dev/pts/NN设备,有效地向另一个窗口发送消息。你甚至可以绕过文件和 echo 'boo' > /dev/tty/NN 。只有在两个窗口登录相同的用户 ID 时,您才有权执行此操作。)

关于command-line - UNIX tty 命令和文件命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3717179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com