如何删除VI中的一行?
这是我现在正在做的事情:
vi a.txt我运行以下脚本:
VAR="Test"
sh -c 'echo "Hello $VAR"'
Run Code Online (Sandbox Code Playgroud)
但我得到:
# ./test.sh
Hello
Run Code Online (Sandbox Code Playgroud)
如何将VAR我的脚本变量发送到使用sh -c '...'.
是否可以配置 bash vi 模式,使其最初处于命令模式而不是插入模式?我发现我必须按Esc太多。似乎可以在 zsh 中指定这一点,但我还没有找到在 bash/readline 中执行此操作的方法。
在 viminsert模式下,如果我按 CTRL+V,我会被扔进所谓的状态x mode (^[,^D...),当我按下一个键(例如转义键)时,我会^[以^. 它在我的编辑器中也变成绿色。
这是什么,它有什么用途?
注意:多年来,
nextfile是一个常见的扩展。2012 年 9 月,它被接受纳入 POSIX 标准。请参阅奥斯汀集团网站。
同样,mawk 手册说:
Nextfile 是一个 gawk 扩展(也由 BWK awk 实现),还不是 POSIX 标准的一部分(截至 2012 年 10 月),尽管它已被标准的下一个修订版接受。
是什么让我困惑的是,有没有提到nextfile在最新的POSIX规范,从2018。
通过指向 Austin Group 的链接,您会发现该问题已在 2012 年解决(甚至还有最终接受的文本),但仅在 2020 年(!)中应用。
总而言之,这是否意味着nextfile是 POSIX 指定的 awk 功能?或者只会在未来的 POSIX 版本中如此?
(出于实际目的,nextfile也可以在BSD awk 中找到。)
还有两个语句与nextfile: fflushand delete( 的情况相同delete,但已指定,但要扩展以便能够删除整个数组)。
$ echo > 1 2 3; ls -latr 1; cat 1
-rw-rw-r-- 1 kahn kahn 4 Jun 23 14:05 1
2 3
Run Code Online (Sandbox Code Playgroud)
这与>重定向的评估有关吗?这样:
echo > 1 2 3
Run Code Online (Sandbox Code Playgroud)
也可以重写为 并且在技术上是:
echo 2 3 > 1
Run Code Online (Sandbox Code Playgroud)
?
是否有任何资源可以更好地理解 IO 重定向的操作顺序及其评估方式?我承认这个例子可能没什么用,甚至不会经常出现,但我想更好地了解这里到底发生了什么。
我有一个目录~/Documents/machine_learning_coursera/。
命令
find . -type d -name '^machine'
Run Code Online (Sandbox Code Playgroud)
没有找到任何东西
我也试过
find . -type d -regextype posix-extended -regex '^machine'
Run Code Online (Sandbox Code Playgroud)
以便匹配字符串的开头而没有。
我也试过-name:
find . -type d -regextype posix-extended -regex -name '^machine'
Run Code Online (Sandbox Code Playgroud)
并得到错误:
find: paths must precede expression: `^machine'
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?
我需要找到满足相对复杂条件的文件。例如,我想找到满足以下所有条件的所有文件:
这些词可能以任何顺序出现,也可能出现在不同的行中。
我有一个解决方案,它结合了find和egrep,但不是很清晰。
find . \( -type f -and -exec egrep -q 'BBB|CCCCC' {} \; \
-and -exec egrep -q AAAA {} \; \
-and -not -exec egrep -q DDD {} \; \) -print
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来解决这个问题?
让我们创建两个文件:
$ echo -n 'test' > test.txt
$ wc test.txt
0 1 4 test.txt
Run Code Online (Sandbox Code Playgroud)
该文件test.txt不包含尾随换行符。
$ echo 'test' > test_n.txt
$ wc test_n.txt
1 1 5 test_n.txt
Run Code Online (Sandbox Code Playgroud)
该文件test_n.txt包含尾随换行符。
以上两个文件明显不同,但vim在插入模式下预览两个文件没有任何区别:
$ vim test.txt
Run Code Online (Sandbox Code Playgroud)
$ vim test_n.txt
Run Code Online (Sandbox Code Playgroud)
为什么没有区别(换行或某些特殊区别)?
我该怎么做才能vim在插入模式下添加或删除这样的附加字符?
在我的大学,有一门课程叫做“Programming with Motif”。
这是一个相当古老的框架,我想知道今天用 Motif 制作的 Motif / 程序在哪里使用。