从命令行打开文件

m00*_*0am 8 kile

kubuntu 18.04 附带的默认 kile 版本 (Kile 2.9.91) 未按预期运行。在旧版本中,这

$ kile myfile.tex
Run Code Online (Sandbox Code Playgroud)

将打开myfile.tex进行编辑。但是,在当前版本中,这会尝试打开http://myfile.tex. 我得到的错误信息是“ http://myfile.tex Host not found”,这并不奇怪。我试图将文件名用引号括起来,使用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
Run Code Online (Sandbox Code Playgroud)

m00*_*0am 2

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

function kile-open {
    kile $(realpath $1)
}
Run Code Online (Sandbox Code Playgroud)

重新获得预期的行为(一次针对一个文件,不使用任何其他参数,可以通过一些 bash 知识轻松改进)。这绝不是一个解决方案,只是目前模仿预期行为的一种方法。


xia*_*awi 1

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

kile() { command kile $(realpath "$@") }
Run Code Online (Sandbox Code Playgroud)

kile myfile.tex然后该命令将起作用。就我个人而言,我什至将输出重定向到/dev/null并释放命令:

kile() { command kile $(realpath "$@") > /dev/null 2>&1 & }
Run Code Online (Sandbox Code Playgroud)