打开文件(如果存在),否则,创建一个新文件并打开它

时间:2015-03-22 16:44:44

标签: bash emacs alias

我目前设置了以下别名:

alias emacs='open -a Emacs'

但显然,如果文件已经不存在,它会给我一个错误。有没有办法改变这个别名基本上说“如果文件存在在Emacs中打开它,否则,创建文件,然后在Emacs中打开它?”

谢谢!

3 个答案:

答案 0 :(得分:3)

使用函数而不是别名。函数可以完成别名可以做的所有事情。

emacs() {
    if [ ! -f "$1" ]; then
        touch "$1"
    fi
    open -a Emacs "$1"
}

这适用于一个文件。对于多个文件,您可以使用它。

emacs() {
    for file; do
        if [ ! -f "$file" ]; then
            touch "$file"
        fi
    done
    open -a Emacs "$@"
}

答案 1 :(得分:1)

您可以考虑--args open选项的别名,如下所示:

alias emacs='open -a Emacs --args= '

然后将其称为:

emacs $PWD/file.txt

根据man open

--args
     All remaining arguments are passed to the opened application in the argv parameter
     to main(). These arguments are not opened or interpreted by the open tool.

答案 2 :(得分:0)

或者创建一个名为omacs的小脚本:

#!/bin/bash
for f in $*; do if [ -f $f ]; then open -a Emacs $f; else touch $f; open -a Emacs $f; fi; done

并创建此别名

alias emacs='omacs'

适用于多个文件。