此标题有重复的问题并确认为一个错误。但是那是在 Ubuntu 17 中,我的是 Ubuntu 18.04 LTS。所以我猜老问题中的错误已经修复了。这个错误我仍然遇到它,所以这里是我的问题:
文件 disk.desktop >>
[Desktop Entry]
Name=Disk Manager
Comment=Open df cmd in Terminal
Icon=harddisk
Type=Application
Categories=Utility;Management;
Keywords=disk; manager; terminal;
StartupNotify=true
Exec=gnome-terminal -t "Disk Manager" --hide-menubar -e "df -h --output=source,used,size,avail,target -x devtmpfs -x tmpfs -x squashfs"
星号在最后一行:
gnome-terminal -t "Disk Manager" --hide-menubar -e "df -h --output=source,used,size,avail,target -x devtmpfs -x tmpfs -x squashfs"
我的命令是运行 gnome-terminal,它df
使用其中的一些参数执行应用程序。该.desktop
文件的行为非常奇怪。它什么都不做,甚至没有触发错误代码。
如果我删除除 之外的所有参数-h
,它有时会正常工作。如果我df
在正在运行的终端中运行应用程序,它运行得很好。所以我认为 gnome-terminal 是错的。
我决定将整个命令复制到正在运行的终端。结果是半个标题:
# Option “-e” is deprecated and might be removed in a later version of gnome-terminal.
# Use “-- ” to terminate the options and put the command line to execute after it.
由于我没有收到错误代码。我不知道下一步该怎么做。请告诉我如何修复它。谢谢。
2019 年 2 月 7 日更新 ::
根据@vidarlo的建议,我改用了选项 flag --
。结果如下:
--
无法与" "
引号内的命令配合使用。它返回执行失败错误:Fail to execute child process "df -h"
- 我找不到此选项的任何文档。 不包含在
man
不包含在内--help-all
。 在我看来,此标志尚未成为标准。
我寻找的是一个允许我传递带有几个参数的命令的选项。在 Lubuntu 中,它看起来像这样lxterminal -e "df -h -x devtmpfs -x tmpfs -x squashfs"
。
答案1
读一下错误信息:
# Option “-e” is deprecated and might be removed in a later version of gnome-terminal. # Use “-- ” to terminate the options and put the command line to execute after it.
错误消息告诉您-e
已被弃用,并且可能会在未来版本中被删除,并且替代的是-e
。
您有以下命令行:
Exec=gnome-terminal -t "Disk Manager" --hide-menubar -e "df -h -- output=source,used,size,avail,target -x devtmpfs -x tmpfs -x squashfs"
将其更改为
Exec=gnome-terminal -t "Disk Manager" --hide-menubar -- "df -h --output=source,used,size,avail,target -x devtmpfs -x tmpfs -x squashfs"
答案2
你要:
gnome-terminal -t "Disk Manager" --hide-menubar -- df -h --output=source,used,size,avail,target -x devtmpfs -x tmpfs -x squashfs
--
通常是通用的命令行语法,表示“此命令之后的任何内容都不应解释为选项”。在这种情况下,GNOME 终端只接受给定的任何参数并将其作为命令行执行,第一个参数作为程序,其余参数作为程序的参数。
-- "df..."
失败,因为它使用整个命令行作为可执行文件名称。
答案3
我可以使用--
包含参数的命令(记得删除要传递给终端的命令周围的双引号。否则它会失败)
Exec=/usr/bin/gnome-terminal -- globalprotect connect -u $USER_VPN -p $VPN_TO_CONNECT
这对我来说很好。Exec=
在保存文件之前,请在终端中执行整行(显然要避免该部分)以检查它是否按预期工作,从而节省时间。
答案4
这对我有用...启动像 vim 这样的编辑器
修复之前
exec_command = f"gnome-terminal -e 'bash -c "{editor_name} " + path_file + "; exec bash"'"
修复后
command_var = f"bash -c "{editor_name} " + path_file + "; exec bash""
exec_command = f"gnome-terminal -- {command_var}"