我script在启动终端后立即使用该命令,它开始记录我当前的会话,但是当我之后使用ps命令时,它只显示两个进程,bash一个用于ps自己,一个用于自己,但它没有显示脚本命令的任何进程在后台运行,为什么会这样?以更一般的方式说,实际上我从未ps在我的终端上看到显示超过 2 个进程的命令,我的 shell 或终端设置有问题吗?我目前正在使用 Ubuntu。
我使用script命令记录了我当前的会话,所有信息都保存在一个typescript文件中,但是当我使用Vim打开它时,^M由于回车而出现很多s。
我尝试使用该dos2unix命令将此文件转换为 Unix 格式,但我无法这样做。它给出了这个错误:
dos2unix: Binary symbol 0x1B found at line 2,dos2unix: Skipping binary file typescript.
Run Code Online (Sandbox Code Playgroud)
我只是好奇为什么会这样。为什么script以CR/LF形式而不是简单的LF形式产生输出?
如果我用 C 写一行非常简单的代码:
printf("Ascii char for %d is %c\n",65,65);
Run Code Online (Sandbox Code Playgroud)
它只是打印A,因为 ascii 值 65 对应于字符A。但是如果我在shell中使用相同的代码并编写命令
printf "Ascii char for %d is %c\n" 65 65
Run Code Online (Sandbox Code Playgroud)
它将输出显示为Ascii char for 65 is 6. 我期待与 C 语言相同的输出,并且在逻辑上它也应该打印与给定的 ascii 代码对应的字符。
为什么在这些情况下它表现出不同的行为?
我有一个常规文件,我将其权限更改为444. 我知道由于文件受写保护,我们无法修改或删除文件的内容,但是当我尝试使用 删除此文件时rm,它会生成一个警告,说明我是否要删除写保护的文件。我的疑问是这不是取决于文件是否可以删除的目录权限?为什么rm即使目录具有写入和执行权限也会生成警告。是否可以删除文件还取决于文件权限吗?还是完全依赖于目录权限?
我知道 total 告诉1K我正在处理的目录中的文件使用的块数。对于某些目的,我输入的命令ls -lh来看到这个人类可读的形式,我看到了目录,但让我吃惊的所有文件的块大小时,我添加了所有在目录中的文件的块大小不相等,以什么样total的讲述第一行输出。所以我的疑问是,这两种尺寸之间存在差异的原因是什么?
我使用\0n转义序列与echo -e和printf其中n是要被打印的ASCII字符的八进制值。当我使用该语句时echo -e "\0101",shell 正在打印字符,A但是当我使用printf "\0101"shell 时,正在打印1这是我提供的八进制数的最低有效位,但是如果我0在开头删除并使用命令,因为printf "\101"它A按预期正确打印。所以我的疑问是为什么这个特定的转义序列会有如此大的差异,我尝试了许多其他转义序列,但它们使用 echo 和 printf 都给出了相同的结果。我正在使用Ubuntu并且目前正在研究bash.
我使用命令创建了一个存档tar -cvf filename.tar files,在这个选项中,详细选项只是向我显示了我已存档的所有文件的列表。当我使用时tar -tf filename.tar,它再次简单地向我显示了已存档的所有文件的列表。我预计详细选项会显示有关存档中文件的一些额外详细信息,但没有显示。然后我终于使用了该命令tar -tvf filename.tar,但这里的文件列表得到了很好的解释,其中包含一些与该ls -l命令类似的额外功能和细节。所以我很困惑该-v选项的实际目的是什么,因为它在不同的上下文中给出不同的结果以及它与该-t选项有何不同。
ubuntu ×5
ascii ×2
directory ×2
files ×2
printf ×2
archive ×1
c ×1
chmod ×1
compression ×1
conversion ×1
echo ×1
ls ×1
permissions ×1
printing ×1
process ×1
ps ×1
rm ×1
scripting ×1
session ×1
shell-script ×1
size ×1
tar ×1
typescript ×1
vim ×1
write ×1