Этот заголовок имеет дублированный вопрос и подтвердил как ошибка. Но это было в 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"
Моя команда выполняется терминал гнома, которые выполняются df
приложение с несколькими аргументами его. .desktop
файл имеет очень странное поведение. Это просто ничего не делает, даже не запуская код ошибки.
Если я удаляю все его аргументы кроме -h
, это работает несколько раз. Если я работаю df
приложение в рабочем терминале, это работает очень хорошо. Так мои деньги на отказе терминала гнома.
Я решил, копируют мою целую команду в рабочий терминал. И результатом является шмуцтитул:
# 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.
Так как я не получил кода ошибки. Я понятия не имею, что сделать затем. Скажите мне, как зафиксировать его.Спасибо.
Следуйте @vidarlo советуют, я изменился на флаг опции --
. Вот результат:
--
не работает с командой в " "
кавычка. Это возвращает ошибку выполнения сбоя: Fail to execute child process "df -h"
man
не в --help-all
. Мне кажется, что этот флаг еще не является стандартным.То, что я ищу, является опцией, позволяют мне передавать команду с несколькими аргументами. В Lubuntu это похоже на это lxterminal -e "df -h -x devtmpfs -x tmpfs -x squashfs"
.
Вы хотите:
gnome-terminal -t "Disk Manager" --hide-menubar -- df -h --output=source,used,size,avail,target -x devtmpfs -x tmpfs -x squashfs
--
обычно универсальный синтаксис командной строки для "ничего после того, как это должно будет быть интерпретировано как опция". В этом случае Терминал GNOME просто берет любые аргументы, он дан и выполняет их как командную строку с первым аргументом как программа как остальные как аргументы программы.
-- "df..."
отказавший, потому что это использовало всю командную строку в качестве исполняемого имени.
Прочитайте сообщение об ошибке:
# 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"
Я мог бы использовать -
с командой, которая содержит параметры ( не забудьте удалить двойные кавычки, окружающие команду, которая должна быть передана на терминал. В противном случае она не удастся )
Exec=/usr/bin/gnome-terminal -- globalprotect connect -u $USER_VPN -p $VPN_TO_CONNECT
У меня это сработало. Выполните всю строку в своем терминале (очевидно, избегайте части Exec =
) перед сохранением файла, чтобы проверить, работает ли он так, как вы ожидали, и тем самым сэкономить время.