vishex ()
{
echo '#!/bin/bash' > $1;
chmod +x $1;
vi $1
}
上述函数的目标是拥有一个别名,以便快速、舒适地创建 bash 脚本。我希望在打开文件时光标不会站在 Shebang 行中,而是位于下面的一行上。我尝试过类似的事情echo 'blabla\n', echo "blala\n", printf "blala\n"
但没有任何结果。
答案1
用这个:
vishex ()
{
[ -e "$1" ] || echo -e '#!/bin/bash\n\n' > "$1";
chmod +x "$1";
vi "+normal G" +startinsert "$1"
}
[ -e "$1" ]
检查脚本是否已经存在。如果是,echo
则不会覆盖它。-e
in echo 可以解释反斜杠转义,例如\n
换行符。然后它在 shebang 行后面插入 2 个换行符。+normal G
运行 ex 命令G
,该命令跳转到文件中的最后一行。+startinsert
直接切换到插入模式(您也可以保留它,因为它不在提到的问题中)。
因此,执行时vishex script
如下所示:
#!/bin/bash
<- cursor is here
~
[...]
~
-- INSERT -- 3,1 All
答案2
假设你的六实际上是维姆,来自联机帮助页:
+[num] For the first file the cursor will be positioned on line "num".
If "num" is missing, the cursor will be positioned on the last line.
因此,使用:
vi + "$1"