Как открыть файл из скрипта bash?

Итак, запуск gedit myfile.txt работает хорошо. Но как насчет открытия файла внутри скрипта bash с использованием стандартного настольного приложения, связанного с типом файла?

Я попробовал ниже, что прекрасно работает при запуске вручную в терминале, но когда я помещаю его в bash file, ничего не происходит:

#!/bin/bash
xdg-open "myfile.txt"&

Что мне делать вместо этого?

Обратите внимание, что мне нужно, чтобы файл оставался открытым и после закрытия терминала.

22
задан 19 June 2013 в 07:30

6 ответов

Я думаю, что ваш сценарий должен работать. Но вы можете добавить что-то к нему, чтобы получить немного больше информации:

#!/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).

Итак, вы можете добавить что-то подобное в ваш скрипт и посмотреть, получите ли вы неожиданный вывод (который вы затем можете добавить к своему вопросу ...).

0
ответ дан 19 June 2013 в 07:30

Сделайте сценарий удара test.sh как:

#!/bin/bash
gedit myfile.txt

Затем сделайте исполняемый файл сценария как:

chmod +x test.sh

Наконец, запустите скрипт как:

./test.sh
5
ответ дан 19 June 2013 в 07:30

В первой части вашего вопроса

с помощью команды cat вы можете открыть файл внутри терминала, если это то, что вам нужно (это указано в первой части вашего вопроса). ]

, чтобы использовать его, вы можете просто набрать cat FILENAME.

Другая информация

Если вам нужно больше команд: Вот хороший список команд.

GNOME редактор по умолчанию

Если вы хотите открыть файл в приложении GNOME по умолчанию gedit.

, чтобы использовать его, просто наберите gedit FILENAME

0
ответ дан 19 June 2013 в 07:30

Может открыть гном вместо xdg-open

0
ответ дан 19 June 2013 в 07:30

Хотя я не уверен, что на самом деле должно быть достигнуто здесь & 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»

0
ответ дан 19 June 2013 в 07:30

Вы идете в правильном направлении. Если вы хотите, чтобы приложение gui оставалось открытым при закрытии окна терминала, вам просто нужно добавить nohup в начале строки.

#!/bin/bash
nohup xdg-open "myfile.txt"&

Если приложение графического интерфейса не открывается, возможно, это связано с тем, что в оболочке, из которой вы пытаетесь его запустить, не установлена ​​переменная среды DISPLAY. Попробуйте сделать эхо $DISPLAY

0
ответ дан 19 June 2013 в 07:30

Другие вопросы по тегам:

Похожие вопросы: