从命令行打开文件

从命令行打开文件

kubuntu 18.04 附带的默认 kile 版本 (Kile 2.9.91) 行为不符合预期。在旧版本中,

$ kile myfile.tex

会打开myfile.tex进行编辑。然而,在当前版本中,它尝试打开但失败了http://myfile.tex。我收到的错误消息是“http://myfile.tex找不到主机”,这并不太令人惊讶。我尝试将文件名括在引号中,使用kile ./myfile.texkile file://myfile.tex。第一个没有改变任何东西,第二个和第三个导致了段错误。

在 Kile 2.9.91 中使用命令行打开文件的正确方法是什么?

什么有效,什么无效?

$ kile myfile.tex                         -> Error: http://myfile.tex
$ kile "myfile.tex"                       -> Error: http://myfile.tex
$ kile myfile.txt                         -> Error: http://myfile.txt
$ kile myfile                             -> Error: http://myfile
$ kile Documents/myfile.tex               -> Error: http://documents/myfile.tex

$ kile ~/Documents/myfile.tex             -> Works!
$ kile /home/user/Documents/myfile.tex    -> Works!
$ kile $(realpath myfile.tex)             -> Works!

$ kile ./myfile.tex                       -> segfault
$ kile file://myfile.tex                  -> segfault

答案1

肮脏的解决方法时间:将一个函数写入您的.bashrc/ .zshrc(其他人可能会工作,这两个是我测试过的唯一两个)调用realpath以获取输入文件的绝对路径:

function kile-open {
    kile $(realpath $1)
}

要重新获得预期的行为(一次针对一个文件,不使用任何其他参数,只需掌握一些 bash 知识即可轻松改进)。这绝不是一个解决方案,只是暂时模仿预期行为的一种方式。

答案2

受到@m00am 解决方案的启发,bash您可以将以下内容添加到.bashrc

kile() { command kile $(realpath "$@") }

然后命令kile myfile.tex就可以工作了。我个人甚至将输出重定向到/dev/null并发布命令:

kile() { command kile $(realpath "$@") > /dev/null 2>&1 & }

相关内容