Итак, запуск gedit myfile.txt
работает хорошо. Но как насчет открытия файла внутри скрипта bash с использованием стандартного настольного приложения, связанного с типом файла?
Я попробовал ниже, что прекрасно работает при запуске вручную в терминале, но когда я помещаю его в bash file, ничего не происходит:
#!/bin/bash
xdg-open "myfile.txt"&
Что мне делать вместо этого?
Обратите внимание, что мне нужно, чтобы файл оставался открытым и после закрытия терминала.
Я думаю, что ваш сценарий должен работать. Но вы можете добавить что-то к нему, чтобы получить немного больше информации:
#!/bin/bash
T=`xdg-mime query filetype $1`
echo "opening file " $1 " of type " $T "with " `xdg-mime query default $T`
xdg-open $1
echo "finished script"
при запуске этого скрипта (с именем my_open.sh) в терминале, подобном этому:
my_open.sh path/to/somefile.txt
Я получаю следующий вывод:
opening file path/to/somefile.txt of type text/plain with gedit.desktop
finished script
, который говорит мне, что путь к файлу в порядке, mimetype распознается, и файл рабочего стола, который используется для открытия файла, также в порядке. И Gedit открывается с файлом, о котором идет речь.
Теперь при запуске в другом файле:
my_open.sh path/to/README
я получаю следующий вывод:
opening file path/to/README of type text/x-readme with
finished script
Обратите внимание на другой mimetype и отсутствующий файл рабочего стола. Тем не менее, xdg-open открывает настройки по умолчанию для всех текстовых файлов (gedit).
Итак, вы можете добавить что-то подобное в ваш скрипт и посмотреть, получите ли вы неожиданный вывод (который вы затем можете добавить к своему вопросу ...).
Сделайте сценарий удара test.sh как:
#!/bin/bash
gedit myfile.txt
Затем сделайте исполняемый файл сценария как:
chmod +x test.sh
Наконец, запустите скрипт как:
./test.sh
с помощью команды cat
вы можете открыть файл внутри терминала, если это то, что вам нужно (это указано в первой части вашего вопроса). ]
, чтобы использовать его, вы можете просто набрать cat FILENAME
.
Если вам нужно больше команд: Вот хороший список команд.
Если вы хотите открыть файл в приложении GNOME по умолчанию gedit
.
, чтобы использовать его, просто наберите gedit FILENAME
Хотя я не уверен, что на самом деле должно быть достигнуто здесь & amp; основываясь на некоторых недавних комментариях, что один скрипт должен открывать ЛЮБОЙ файл в приложении по умолчанию или в той мере, в какой приложение поддерживает это.
Если это так , то проще всего сделать это, открыв терминал & amp; идет имя сценария / путь / к / имени файла или если в пути есть пробелы, то имя сценария '/ путь / к / имени файла'
cd; mkdir -p bin && gedit ~/bin/openit1
Используйте это как сценарий, вы можете использовать любое имя, которое пожелаете для сценария Я буду использовать openit1 в качестве примера. Лучше всего использовать сценарии непосредственно из ~ / bin для добавления числа к имени, чтобы не конфликтовать с какими-либо существующими командами linux
#!/bin/bash
xdg-open "$1"
Close gedit & amp; в терминале
chmod u+x ~/bin/openit1
Перезапустите, чтобы добавить ~ / bin к вашему $ PATH
Для вызова откройте терминал и перейдите
openit1 /path/to/filename or openit1 'path/to/filename'
IF как orig заявлено & amp; используя ориг. скрипт для одного конкретного файла на скрипт & amp; ссылаясь на д. щелкнув левой кнопкой мыши по сценарию, вам нужно просто выбрать « Run » вместо «Run in Terminal»
Вы идете в правильном направлении. Если вы хотите, чтобы приложение gui оставалось открытым при закрытии окна терминала, вам просто нужно добавить nohup
в начале строки.
#!/bin/bash
nohup xdg-open "myfile.txt"&
Если приложение графического интерфейса не открывается, возможно, это связано с тем, что в оболочке, из которой вы пытаетесь его запустить, не установлена переменная среды DISPLAY
. Попробуйте сделать эхо $DISPLAY