Unix & Linux

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

6
将标准输入的最后一行添加到整个标准输入
考虑以下脚本: tmpfile=$(mktemp) cat <<EOS > "$tmpfile" line 1 line 2 line 3 EOS cat <(tail -1 "$tmpfile") "$tmpfile" 这可以工作并输出: line 3 line 1 line 2 line 3 假设我们的输入源不是实际文件,而是stdin: cat <<EOS | # what goes here now? line 1 line 2 line 3 EOS 我们如何修改命令: cat <(tail -1 "$tmpfile") "$tmpfile" 这样在不同的上下文中它仍会产生相同的输出? …
9 bash 

2
典型的系统调用接口是否允许减小文件的大小(而不用其他inode替换它)?
有没有一种方法可以open()使文件缩小?当然,可以以追加模式打开它们,也可以寻找结尾并进行书写以使它们增长。但是,据我所知,没有方法可以通过典型的unix风格的系统调用接口来缩小文件。 据我所知,这样做的唯一方法是通过创建一个新的较短文件rename()代替旧文件来伪造它。 我只想确认,因为我看到一个答案,它暗示可以使直接在文件上工作的文件编辑器成为可能,而不需要经过制作新文件并将其重命名的过程。 我一直认为libc和unix风格的系统调用接口中的文件api不允许文件缩小以简化文件系统的实现,并且可能避免使用可能导致碎片化的使用模式。

1
为什么与以破折号开头的CLI参数一起使用时,代字号(〜)不会展开?
我花了几个小时试图运行VNC服务器(x0vncserver),并且客户端拒绝连接并发出奇怪的消息, No password configured for VNC Auth 服务器还会打印此错误 SVncAuth: opening password file '~/.vnc/passwd' failed 好的,我浪费了很多时间,直到意识到波浪号既没有被shell扩展,也没有被x0vncserver扩展。然后我进行了这些测试 $ echo --PasswordFile=~/.vnc/passwd --PasswordFile=~/.vnc/passwd 但 $ echo PasswordFile=~/.vnc/passwd PasswordFile=/home/tichomir/.vnc/passwd 这是为什么?如果参数以短划线开头,为什么shell拒绝扩展代字号?我认为只要不加引号,波浪号就会一直扩展,但是显然还有另外一条规则在起作用吗?
9 bash  shell  tilde 

3
如何防止不支持的“购物”选项引起我的.bashrc错误?
我在相对异构的环境中工作,其中我可能在不同的HPC节点,VM或我的个人工作站上运行不同版本的Bash。因为我将登录脚本放在了Git仓库中,所以我想全面使用相同.bashrc的命令,而不会出现很多“如果是此主机,则...”类型的混乱情况。 我喜欢 Bash≤4.1的默认行为,该行为会在按下键时扩展cd $SOMEPATH为。在bash 4.2及以上,则需要重新启用此行为,而这并没有变得可用,直到4.2.29。不过,这只是一个例子。另一个可能相关的选项(尽管我不确切知道它的作用)也可能更改了v4.2的默认行为。cd /the/actual/pathTabshopt -s direxpandshoptcomplete_fullquote 但是,direxpand早期版本的Bash无法识别该错误,如果我尝试在shopt -s direxpand中运行.bashrc,则每次我使用较旧的Bash登录到节点时,都会在控制台上显示一条错误消息: -bash: shopt: direxpand: invalid shell option name 我想做的是环绕一个条件,shop -s direxpand以一种健壮的方式在Bash> 4.1上启用该选项,而不会破坏Bash的旧版本(即,不仅仅将错误输出重定向到/dev/null)。

1
差异仅显示行内的差异
我想比较两个文件中的行,但为了最大程度地减少输出中的噪音,我只希望打印行中的实际差异。 例如,给定以下两个文件: a.txt a b c d e f g h i j k l m n o p q r s t u v w x y z b.txt a B c d e f g h i j k l m n o p q r s t …

1
哪个类似Unix的系统真正提供/ dev / tcp特殊文件?
我知道这/dev/tcp/<host>/<port>是重定向中某些shell专门处理的魔术路径。但是根据man bash: 如果运行bash的操作系统提供了这些特殊文件,则bash将使用它们;否则,bash将使用它们。否则它将在内部模拟它们[...] 在我现在使用的Linux机器上,/dev/tcp特殊文件不存在,因此Bash会模拟它。但是,实际上是否存在一个类似Unix的系统,该系统确实提供了/dev/tcp与Bash支持的语义相同的特殊文件?

1
从两个程序中重定向标准输出
我正在C ++代码(prog2)上运行内存检查工具(prog1),这两者都给了我巨大而详细的输出。为了消除一些错误,我需要将此输出保存到文件中。 我尝试将标准输出重定向到文件: prog1 prog2 > outfile.txt 但这给了我一个文件,其中包含prog2的输出,而prog1的输出仍将到达终端。 有人知道一种方法来指定我希望两个输出都转到一个文件吗?喜欢(prog1 prog2) > outfile.txt吗?

3
“使”符号“可变”(后台处理)
我想知道是否有办法将&符放入变量中,并仍然使用它来将进程发送到后台。 这有效: BCKGRND=yes if [ "$BCKGRND" = "yes" ]; then sleep 5 & else sleep 5 fi 但是,仅用一条完成这五条线不是很酷吗?像这样: BCKGRND='&' sleep 5 ${BCKGRND} 但这是行不通的。如果未设置BCKGRND,则它可以工作-但是,如果设置了BCKGRND,则将其解释为文字'&'并输出错误。


2
bash:echo:写错误:系统调用中断
我想生成一个包含所有8位数字的排序列表-从00000000到99999999。我在shell中键入: f() { while IFS="" read -r line; do for i in {0..9}; do echo "$line$i"; done; done } echo | f | f | f | f | f | f | f | f | tee result.txt | wc -l 回应是 bash: echo: write error: Interrupted system call …
9 bash 

3
如何在bash中打印由TAB分隔的字符串?
我正在尝试打印两个由TAB分隔的字符串。我努力了: echo -e 'foo\tbar' printf '%s\t%s\n' foo bar 他们两个都打印: foo bar 两者之间的空白实际上是5个空格(根据在Putty中用鼠标选择输出)。 我也尝试使用CTRL + V并在键入命令时按TAB键,结果相同。 强制将标签打印为标签的正确方法是什么,以便我可以选择输出并将其复制到带有标签的其他位置? 第二个问题是:bash为什么将制表符扩展为空格? 更新:显然,这是腻子的问题:https : //superuser.com/questions/656838/how-to-make-putty-display-tabs-within-a-file-instead-of-changing-them-to -空间


2
Troff Turing完成了吗?
Troff支持使用.de和分支使用宏定义.if(请参见Troff用户手册的第5和6页)。在这两个方面,它非常类似于TeX。但是,我不了解用Troff编写的高度复杂的程序(与TikZ for TeX不同)。Troff Turing完成了吗?
9 roff 

3
如何按文件类型查找文件?
我知道我可以用查找文件find:find . -type f -name 'sunrise'。结果示例: ./sunrise ./events/sunrise ./astronomy/sunrise ./schedule/sunrise 我也知道我可以确定文件的文件类型:file sunrise。结果示例: sunrise: PEM RSA private key 但是如何按文件类型查找文件? 例如my-find . -type f -name 'sunrise' -filetype=bash-script: ./astronomy/sunrise ./schedule/sunrise

1
未压缩的文件估计错误吗?
我有一个大(〜60G)压缩文件(tar.gz)。 我曾经split将其分为四个部分,然后cat将它们重新组合在一起。 但是,现在,当我试图估计未压缩文件的大小时,结果发现它比原始文件小吗?这怎么可能? $ gzip -l myfile.tar.gz compressed uncompressed ratio uncompressed_name 60680003101 3985780736 -1422.4% myfile.tar

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.