我想创建一个 markdown 文件并同时打开它
$ touch ~/Documents/Ubuntu/drafts.md; open ~/Document/Ubuntu/drafts.md
解决方法比较麻烦,有没有捷径可以解决这样的问题?
答案1
没有这样的捷径,显然,人们可以Alt根据.塞巴斯蒂安·斯塔克的回答
touch ${filename}
xdg-open <alt>+<.>
如果你的 shell 使用libreadline
(在 Ubuntu 上则/bin/dash
不然,但bash
确实如此),那么您可以使用该快捷方式。
您还可以通过以下方式创建字符数较短的文件bash
:
: > ${filename}; xdg-open ${filename}
在这种情况下,:
命令是内置无操作命令,它只返回退出状态 0 以表示成功,但这里的技巧是shell 创建新文件或截断现有文件由${filename}
.指定xdg-open
在默认编辑器中打开所述文件名,因为它只是一个普通文件。
如果你想要更短,你可以使用bash
历史扩展功能来重复使用命令参数:
: > myfile.txt ; xdg-open !#:1
如果可移植性是一个问题,那么您应该将其用于$_
其他 shell。当然,您可以将它们转换为函数或别名,并调用别名或函数名称;将其称为类似于mko()
“make and open”的名称:
# function definition to put in ~/.bashrc
mko(){ : > "$1"; xdg-open !#:1 }
# call it as so:
mko ~/Documents/myfile.md
如果需要的话,创建函数在文件中添加模板也有好处:
mko(){
cat > "$1" <<EOF
### HEADING1
- bullet 1
- bullet 2
EOF
xdg-open "$1"
}
旁注:如果您还需要沿路径创建目录,则应使用mkdir -p
,请参阅相关问题。
旁注2:甜点的答案实际上解决了一个非常公平的问题:大多数文本编辑器确实允许将新文件的路径名指定为它们的参数之一。但是,在文件必须存在的情况下 - 否则您会得到No such file or directory
错误 - 那么您可以使用这个答案。还请考虑>
截断现有文件,因此当您想要快速清除文件并开始添加新内容时,这会很有用。
答案2
让编辑器创建文件
大多数(如果不是全部)编辑器都会在您使用不存在的文件名打开文件时自动创建文件。您可以保存touch
并直接打开新文件,例如:
nano ~/Document/Ubuntu/drafts.md
vim ~/Document/Ubuntu/drafts.md
leafpad ~/Document/Ubuntu/drafts.md
这将创建新的空文件并打开它。与您的方法一样,如果在此过程中需要创建目录,它将失败。