多亏了这里和这个页面上的一些很好的问答,我现在明白了链接。我看到硬链接以不同的名称引用相同的 inode,副本是不同的“节点,具有不同的名称。加上软链接将原始文件名和路径作为它们的 inode,所以如果文件被移动,链接就会中断。
所以,我用一些文件(下面的“saluton_mondo.cpp”)测试了我学到的东西,制作了一个硬链接和一个软链接以及一个副本。
jmcf125@VMUbuntu:~$ ls -lh soft hard copy s*.cpp
-rw-rw-r-- 1 jmcf125 jmcf125 205 A?g 27 16:10 copy
-rw-rw-r-- 2 jmcf125 jmcf125 205 A?g 25 13:34 hard
-rw-rw-r-- 2 jmcf125 jmcf125 205 A?g 25 13:34 saluton_mondo.cpp
lrwxrwxrwx 1 jmcf125 jmcf125 17 A?g 27 16:09 soft -> saluton_mondo.cpp
Run Code Online (Sandbox Code Playgroud)
然而,我发现硬链接与原始链接的大小相同,并且在逻辑上与副本的大小相同,这让我感到尴尬。如果硬链接和原始共享同一个inode,即有数据,只是文件名不同,那么硬链接不应该只占用其名称的空间,而不是205个字节吗?或者是ls -lh
返回的原始文件的大小?但是我怎么知道文件名占用了多少空间呢?这里说硬链接没有大小。他们的文件名是否与原始文件名一起保存?硬链接的文件名存储在哪里?
起初我认为这是一个巧合,但现在我看到它甚至有一个标签:所有隐藏的文件名都以点开头。这是公约吗?为什么被选中?可以改变吗?或者换句话说(作为一个相关的问题@evilsoup 建议暗示对一堆其他人的答案):我可以隐藏文件而不重命名它们(.
用作其名称的第一个字符)?
我犯了一个愚蠢的错字了UTF-8
,和预期,当我固定它,在X的键盘会的工作权利。自从做出这个错误的更改后,我不再收到 Bash 登录、man
页面或locale
错误。但它没有。即使我这样做了loadkeys pt-latin9
,它也永远无法解决 X 中的问题。
localectl
给出:
[jmcf125@jmcf125-Toshiba-Arch ~]$ localectl
System Locale: LANG=pt_PT.UFT-8
VC Keymap: pt-latin9
X11 Layout: pt
Run Code Online (Sandbox Code Playgroud)
然而,真正的 X 键盘布局不是 pt
,而在 TTY 上是这样。这里有什么问题?我在哪里可以正确设置布局?
我经常一次使用多个终端(或终端模拟器);虽然在 XI 中可以复制粘贴命令,除了不太实用之外,它显然不适用于真正的 TTY。我想到的第一个想法是相似的:
command > /dev/sometty
Run Code Online (Sandbox Code Playgroud)
不幸的是,command
在运行之前,它是管道,并没有像花样echo `command`
会的工作,不管有多少个奇怪的bash字符($
,`
,"
等)的存在。所以/dev/sometty
简单地获取一些文本。
问题是,有时,我什至值得将这些命令通过管道传输到文件中,使其可执行等,或者很快:制作脚本并从适当的终端运行它。但这是很多工作。我一直在考虑制作一个脚本来制作这些文件,以获取说明:
termpipe -e "command1\ncommand2\"command 1 argument\\n(s)\"" -t /dev/sometty
Run Code Online (Sandbox Code Playgroud)
它会做类似的事情:
/tmp/termpipe-20140208-153029-1.sh
AFAIK,问题出在3.:这不能解决任何问题,因为我需要另一个termpipe
实例来在适当的终端上运行第一个实例。一个为那个。另一个是,无限期。所以这是行不通的。或者可以吗?...
解决方案可能是为每个终端使用一个命名管道,当每个终端启动时,脚本会告诉管道将它接收到的任何内容转发到终端,然后执行它(就像某种守护进程)。
我认为这可能有效,但我不知道如何设置初始脚本。我怎样才能?如何告诉 FIFO 为各个终端提供管道命令以运行?我不太了解 Bash,所以我很感激完整的解释。