当你给文件命名中包含多个单词时,在 Unix 系统中使用下划线、驼峰式大小写或破折号来分隔单词是否更常见?
我有一个脚本,它读取文本流并生成一个 sed 命令文件,该文件稍后使用sed -f. 生成的 sed 命令如下:
s/cid:image002\.gif@01CC3D46\.926E77E0/https:\/\/mysite.com\/files\/1922/g
s/cid:image003\.gif@01CC3D46\.926E77E0/https:\/\/mysite.com\/files\/1923/g
s/cid:image004\.jpg@01CC3D46\.926E77E0/https:\/\/mysite.com\/files\/1924/g
Run Code Online (Sandbox Code Playgroud)
假设生成sed命令的脚本类似于:
while read cid fileid
do
cidpat="$(echo $cid | sed -e s/\\./\\\\./g)"
echo 's/'"$cidpat"'/https:\/\/mysite.com\/files\/'"$fileid"'/g' >> sedscr
done
Run Code Online (Sandbox Code Playgroud)
如何改进脚本以确保cid字符串中的所有正则表达式元字符都被正确转义和插入?
我在 Bash 中输入:
scp user@remote:~/dir/*.xml .
Run Code Online (Sandbox Code Playgroud)
它可以工作,获取在远程服务器上生成通配符的所有文件。但为什么这样做呢?我认为 Bash 在参数对像scp.
如果我运行一个命令
grep -rl test . | xargs vim
Run Code Online (Sandbox Code Playgroud)
我收到警告“Vim:警告:输入不是来自终端。” 但我仍然能够编辑文件。为什么会有警告?
单位分隔符 ASCII 字符(ASCII 31,八进制 37)在 Vim 中显示为^_. 但是如果我将相同的文件打印到终端,则该字符是不可见的。这会导致一行上的字段粘在一起:
# In Vim and less:
first field^_second field^_last field
# cat the same file to terminal:
cat delim.txt
first fieldsecond fieldlast field
# print 2nd field with awk
cat delim.txt | awk 'BEGIN {FS = "\037"} {print $2}'
second field
Run Code Online (Sandbox Code Playgroud)
我想我可以使用 cat -v 使单位分隔符可见:
cat -v delim.txt
first field^_second field^_last field
Run Code Online (Sandbox Code Playgroud)
但这比较麻烦。为什么在 Bash shell 中打印到标准输出时,单位分隔符没有可见的表示?我什至无法正确复制和粘贴 shell 输出;单元分离器在此过程中丢失。
假设我在终端中启动了一个进程,它在运行时将输出发送到标准错误。我想将进程移到后台并同时使其静音。
有没有办法在不停止进程并使用&and重新启动它的情况下做到这一点> /dev/null 2>&1?我想知道是否有一些命令可以执行bg 并且也可以更改目标进程的输出描述符。
我想知道ed编辑器对于交互式编辑是否不再有用。我知道该diff命令可以将补丁作为ed脚本生成,这ed是波特率超慢时的最后手段。但是还有其他学习和使用的理由ed吗?
当我使用 Tmux 并将窗口拆分为窗格时,我注意到程序在垂直拆分(两个窗格并排)时打印出文本行的速度比水平拆分(窗格堆叠)时慢得多。有谁知道为什么?