#!/bin/bash
if [ $# -ne 1 ]
then
echo "USAGE:vitest filename"
else
FILENAME=$1
exec vi $FILENAME <<EOF
i
Line 1.
Line 2.
^[
ZZ
EOF
fi
exit 0
我尝试使用此处的doc和命令向Exec vi输入第1行和第2行。
运行脚本时,它给出了以下内容:
Vim(?):Warning: Input is not from a terminal
Vim: Error reading input, exiting...
Press ENTER or type command to continueVim: Finished.
Vim: Error reading input, exiting...
Vim: Finished.
答案 0 :(得分:3)
您希望在vi
模式下启动ex
,并对脚本进行一些细微更改。
vi -e "$FILENAME" <<EOF
i
Line 1.
Line 2.
.
wq
EOF
exec
几乎肯定是不必要的,特别是因为exit
之后有一个vi
命令。 exec
用于使用给定命令替换当前脚本;不需要简单地执行命令。
UNIX文本编辑器的简史:
ed
是原始编辑器,旨在与电传打字机而不是视频终端配合使用。ex
是ed
的扩展版本,旨在利用视频终端。vi
是一个为ex
提供全屏视觉模式的编辑器,与ed
和ex
使用的面向行的界面形成鲜明对比。答案 1 :(得分:1)
根据建议,ed
ed file << END
1i
line1
line2
.
wq
END
“点”行表示“输入结束”。
它可以写成不太清晰的单行
printf "%s\n" 1i "line1" "line2" . wq | ed file
答案 2 :(得分:0)
如果我理解正确,您想在文件的开头添加两行。在这种情况下,根据Cyrus&#39;建议,运行:
#!/bin/bash
if [ $# -ne 1 ]
then
echo "USAGE:vitest filename"
exit 1
fi
sed -i.bak '1 s/^/line1\nline2\n/' "$1"
注意:
使用shell变量时,除非要执行单词拆分和路径名扩展,否则它应该是双引号。这对于文件名很重要,例如,因为它们现在通常包含空格。
最佳做法是为shell变量使用较低或混合大小写的名称。系统为其变量使用大写名称,并且您不想意外覆盖其中一个。
在检查参数时,if
语句应包含exit
,以防止在未提供参数的情况下运行脚本的其余部分。在上文中,我们添加了exit 1
,将退出代码设置为1以表示错误。
vi
让我们从这个测试文件开始:
$ cat File
some line
现在,让我们运行vi
,然后查看文件中的内容:
$ vi -s <(echo $'iline1\nline2\n\eZZ') File
$ cat File
line1
line2
some line
上述内容需要bash或类似内容。
答案 3 :(得分:0)
使用virtualenv --python=python3.5 myvenv
Running virtualenv with interpreter /usr/bin/python3.5
Using base prefix '/usr'
New python executable in /home/username/myvenv/bin/python3.5
Also creating executable in /home/username/myvenv/bin/python
Traceback (most recent call last):
File "/usr/local/bin/virtualenv", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 669, in main
Traceback (most recent call last):
raise SystemExit(popen.wait())
File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 2327, in <module>
File "/usr/lib/python2.7/subprocess.py", line 1376, in wait
pid, sts = _eintr_retry_call(os.waitpid, self.pid, 0)
File "/usr/lib/python2.7/subprocess.py", line 476, in _eintr_retry_call
return func(*args)
KeyboardInterrupt
main()
File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 711, in main
symlink=options.symlink)
File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 944, in create_environment
download=download,
File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 900, in install_wheel
call_subprocess(cmd, show_stdout=False, extra_env=env, stdin=SCRIPT)
File "/usr/local/lib/python2.7/dist-packages/virtualenv.py", line 767, in call_subprocess
line = stdout.readline()
KeyboardInterrupt
。
cat