Unix & Linux

Linux,FreeBSD和其他类似Un * x的操作系统用户的问答


2
要使文件成为POSIX定义的文本文件,必须满足什么条件?
POSIX将文本文件定义为: 包含以零行或更多行组织的字符的文件。这些行不包含NUL字符,并且长度都不能超过{LINE_MAX}个字节,包括<newline>字符。尽管POSIX.1-2017不能区分文本文件和二进制文件(请参阅ISO C标准),但是许多实用程序在对文本文件进行操作时只能产生可预测或有意义的输出。具有此类限制的标准实用程序始终在其STDIN或INPUT FILES部分中指定“文本文件”。 来源:http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_403 但是,有几件事我不清楚: 文本文件必须是常规文件吗?在上面的摘录中,它没有明确指出文件必须是常规文件 如果文件仅包含一个字符和一个字符(即,一个不以换行符终止的字符),可以将其视为文本文件吗?我知道这个问题听起来很挑剔,但是他们使用“字符”一词代替了“一个或多个字符”。其他人可能会不同意,但是如果他们的意思是“一个或多个字符”,我认为他们应该明确地说出来 在上面的摘录中,它引用了“线条”。我在名称中找到了四个带有行的定义:“空行”,“显示行”,“不完整行”和“行”。我是否应该推断出它们是由于省略了“空”,“显示”和“不完整”而表示“行”的?还是上述所有四个定义都包括在内? 此文本段之后出现的所有问题均取决于推断“字符”是指“一个或多个字符”: 我可以安全地推断出,如果一个文件为空,则它不是文本文件,因为它不包含一个或多个字符? 此文本段之后出现的所有问题均取决于推断,在上述摘录中,一行定义为“行”,并且应排除名称中包含“行”的其他三个定义: “零个或多个行”中的“零”是否意味着如果文件包含一个或多个未以换行符终止的字符,仍可以将其视为文本文件? “零行或更多行”是否表示一旦出现一个“行”(0个或多个字符加上一个换行符),则最后一行成为“不完整行”(一个或多个非文件末尾的换行符)? “没有[没有行]的长度不能超过{LINE_MAX}个字节,包括换行符”是否表示文本文件中任何给定“行”中允许的字符数有限制(顺便说一句,在Ubuntu 18.04和FreeBSD 11.1上的LINE_MAX是“ 2048”)吗?
22 files  posix  text 

2
如何停止使用Kazam录制
在Debian Stretch上使用Kazam 1.4.5, 如何停止使用Kazam录制? 问题是:任务栏上的图标不允许任何交互,因此我正在寻找键盘快捷键,但是找不到任何快捷键。结果是,目前为止,视频一直在录制,直到我终止该过程为止。

2
如何将嵌入的(引用的)json字符串转换为json
我熟悉用于解析json的“ jq”。 我使用一种服务来生成json响应,其中属性之一本身就是json字符串。如何将引用的值转换为有效的json字符串,以便随后可以使用jq处理它? 例如,如果我只是从“ jq”查看普通的漂亮打印的json,这是输出的简短摘录: "someJsonString": "{\"date\":\"2018-01-08\", ... 我可以使用jq来获取该属性的值,但是我需要通过“取消转义”将带引号的字符串转换为有效的json。 我想我可以将它用管道传递到sed中,删除开头和结尾的双引号,并删除所有反斜杠(“ sed -e 's/^"//' -e 's/"$//' -e 's/\\//g'”)。这似乎可行,但似乎不是最可靠的解决方案。 更新: 为了使我更清楚一点,这里有一些省略的样本显示了我的尝试: % curl -s -q -L 'http://.../1524.json' | jq '.results[0].someJsonString' | jq . "{\"date\":\"2018-01-08\",... % echo $(curl -s -q -L 'http:/.../1524.json' | jq '.results[0].someJsonString') | jq . "{\"date\":\"2018-01-08\",... 更新: 这是一个完全独立的示例: % cat …
22 json  jq 

3
运行脚本的最快方法是什么?
我想知道运行脚本的最快方法是什么,我一直在阅读,在终端上显示脚本输出,将脚本重定向到文件或两者之间,速度存在差异/dev/null。 因此,如果输出不重要,那么即使脚本很小,也可以使脚本更快地工作的最快方法是什么。 bash ./myscript.sh -or- bash ./myscript.sh > myfile.log -or- bash ./myscript.sh > /dev/null
22 linux  bash 


2
bash`suspend`内置命令的目的是什么?
我输入help suspend并得到以下简短说明: suspend: suspend [-f] Suspend shell execution. Suspend the execution of this shell until it receives a SIGCONT signal. Unless forced, login shells cannot be suspended. Options: -f force the suspend, even if the shell is a login shell Exit Status: Returns success unless job control is not enabled …

5
如何不使用Ctrl + c退出“ tail -f”模式?
当我这样做时tail -f filename,如何退出模式而不用Ctrl+c杀死进程? 我想要的是一种正常的退出方式,例如q中的top。 我只是对这个问题感到好奇,因为我觉得终止进程不是放弃某些事情的好方法。
22 tail 



4
将选择内容复制到tmux中的剪贴板
如果在macOS的iTerm2中的tmux中用鼠标选择文本,则会将所选文本复制到剪贴板中。我不必单击任何其他按钮-只需选择所需的文本即可。 我已经在macOS上的terminal.app中测试了tmux,但在那里不起作用-我必须点击y将所选内容复制到剪贴板。 我以为有一个鼠标绑定(MouseOnSelection类似MouseDown1Pane),但是我在Web和上找不到任何有用的东西man tmux。 我想知道是否有办法在Ubuntu 16.10上具有类似的行为-最好在Gnome终端中。 我的tmux dotfiles在这里可用(链接)。
22 tmux  clipboard 


2
bash脚本末尾的退出代码
我对bash脚本结尾处的退出代码的含义感到困惑:我知道退出代码0表示成功完成了退出,而且还有更多的退出代码编号(如果我没记错的话,为127)。 我的问题是关于在脚本末尾看到退出代码0时,即使脚本失败还是会强制退出代码为0还是有其他含义?

1
为什么选择冒号作为路径分隔符
为什么:选择冒号()作为路径分隔符? 请注意,我的意思是“路径分隔符”,而不是“目录分隔符”。路径分隔符是放置在PATH环境变量中的条目之间的符号。 PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:..." ^ this symbol 计算机和软件中的所有内容曾经都是某个地方的某人故意做出的决定。例如,为什么tilde表示home dir(为什么在vi中使用hjkl作为方向键)。我想知道这项决定的背景。 一些随机事实: 将冒号用作路径分隔符意味着不能将名称中带有冒号的目录添加到路径中。 从POSIX: 由于<colon>在这种情况下是分隔符,因此可能在PATH中使用的目录名称不应包含<colon>字符。 http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html 似乎不可能逃脱结肠。来自Stack Overflow的@ Random832检查了处理PATH的源代码,未发现任何转义机制。 /programming/14661373/how-to-escape-colon-in-path-on-unix
22 path  history 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.