ico*_*ast 5 cron visual-studio-code
如果我尝试使用 Visual Studio Code(在 macOS 10.15 上)来编辑我的 crontab,它会打开一个没有我的 crontab 内容的空文件。
$ VISUAL='code' crontab -e
crontab: no changes made to crontab
Run Code Online (Sandbox Code Playgroud)
我实际上并不期望这会起作用(没有-w),但为了完整性而将其包含在内。但是当我添加-w它时它仍然失败。
$ VISUAL="code -w" crontab -e
crontab: code -w: No such file or directory
crontab: "code -w" exited with status 1
Run Code Online (Sandbox Code Playgroud)
我突然想到引用可能有些奇怪,但单引号和以下内容都没有解决任何问题:
$ function codew() {
function> code -w "$1"
function> }
$ export VISUAL='codew'
$ crontab -e
Run Code Online (Sandbox Code Playgroud)
问题似乎是 crontab 的临时文件实际上并不存在。但是我该如何解决这个问题?如何使用 VS Code 编辑 crontabs?
touch ~/code-wait.sh:#!/bin/bash
OPTS=""
if [[ "$1" == /tmp/* ]]; then
OPTS="-w"
fi
/usr/local/bin/code ${OPTS:-} -a "$@"
Run Code Online (Sandbox Code Playgroud)
chmod 755 ~/code-wait.sh
Run Code Online (Sandbox Code Playgroud)
.bashrc或.bash_profile或.zshrc:export VISUAL=~/code-wait.sh
export EDITOR=~/code-wait.sh
Run Code Online (Sandbox Code Playgroud)
EDITOR='code' crontab -e
Run Code Online (Sandbox Code Playgroud)
这是一个相当复杂的问题,因为无法检测哪个工具调用首选编辑器。TTY 是相同的,没有环境变量可以提供帮助。
尽管如此,我仍然能够想出一个解决方案,为临时文件启用前台模式(等待)。恕我直言,大多数(如果不是全部)使用外部编辑器并等待它们保存文件的工具确实使用临时文件。
完整脚本位于https://github.com/ssbarnea/harem/blob/master/bin/edit但我将在此处包含主要片段:
#!/bin/bash
OPTS=""
if [[ "$1" == /tmp/* ]]; then
OPTS="-w"
fi
/usr/local/bin/code ${OPTS:-} -a "$@"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1360 次 |
| 最近记录: |