Ok, więc bieganie gedit myfile.txt
działa dobrze. Ale co z otwieraniem pliku z poziomu skryptu bash przy użyciu domyślnej aplikacji komputerowej powiązanej z typem pliku?
Próbowałem poniżej, który działa świetnie, gdy uruchamiany ręcznie w terminalu, ale kiedy umieszczam go w pliku bash, nic się nie dzieje:
#!/bin/bash
xdg-open "myfile.txt"&
Co powinienem zamiast tego zrobić?
Pamiętaj, że plik musi pozostać otwarty także po zamknięciu terminala.
gedit
z wymienionym plikiem (lub otwiera nową kartę w istniejącej sesji). Jednak natychmiast wraca, zamiast blokować, aż program zakończy działanie.xtg-open
na*.txt
,*.html
i więcej - po prostu przyzwyczajenie praca.Odpowiedzi:
Myślę, że twój skrypt powinien działać. Ale możesz coś dodać, aby uzyskać trochę więcej informacji:
podczas uruchamiania tego skryptu (o nazwie my_open.sh) w terminalu takim jak ten:
Otrzymuję następujące dane wyjściowe:
co mówi mi, że ścieżka do pliku jest w porządku, typ mimetyczny jest rozpoznawany, a plik pulpitu używany do otwierania pliku jest również w porządku. I gedit otwiera się z danym plikiem.
Teraz po uruchomieniu na innym pliku:
Otrzymuję następujące dane wyjściowe:
Zwróć uwagę na inny typ mimetatu i brakujący plik na pulpicie. Niemniej jednak xdg-open otwiera domyślną wartość dla wszystkich plików tekstowych (gedit).
Możesz więc dodać coś takiego do skryptu i sprawdzić, czy otrzymasz nieoczekiwany wynik (który możesz następnie dodać do pytania ...).
źródło
finished script
końca. Polecam [ catb.org/~esr/writings/taoup/html/](The art of Unix Programming), zasadę ciszy. Btw .: Backticks są przestarzałe - zamiast tego preferuj $ (...), który można zagnieżdżać.nohup
lub&
, ale toxdg-open
zwraca i pozwala kontynuować.xdg-open
już, więc i tak nie jest to skrypt jakości produkcyjnej ...Wykonaj skrypt bash test.sh jako:
Następnie ustaw skrypt jako wykonywalny jako:
Na koniec uruchom skrypt jako:
źródło
Może gnome-open zamiast xdg-open
źródło
Idziesz w dobrym kierunku. Jeśli chcesz, aby aplikacja GUI pozostawała otwarta po zamknięciu okna terminala, musisz po prostu dodać znak
nohup
na początku linii.Jeśli aplikacja GUI nie otwiera się, prawdopodobnie dlatego, że nie masz
DISPLAY
ustawionej zmiennej środowiskowej w powłoce, z której próbujesz ją uruchomić. Spróbuj wykonać echo$DISPLAY
źródło
nohup
ani&
Pierwsza część twojego pytania
za pomocą polecenia
cat
możesz otworzyć plik w terminalu, jeśli tego właśnie chcesz (jest to określone w pierwszej części pytania).aby z niego skorzystać, wystarczy wpisać
cat FILENAME
.Inne informacje
Jeśli potrzebujesz więcej poleceń: Oto dobra lista poleceń.
Domyślny edytor GNOME
Jeśli chcesz otworzyć plik w domyślnej aplikacji GNOME
gedit
.aby z niego skorzystać, po prostu wpisz
gedit FILENAME
źródło
gedit file.filetype
, otworzysz plik tak, jak chcesz!Chociaż nie jestem pewien, co naprawdę należy tutaj osiągnąć i na podstawie niektórych ostatnich komentarzy, że pojedynczy skrypt powinien otwierać DOWOLNY plik w domyślnej aplikacji lub w jakim zakresie aplikacja to obsługuje.
Jeśli tak, to najłatwiejszym sposobem na to jest otwarcie terminalu i przejście do nazwy skryptu / ścieżka / do / nazwa pliku lub jeśli w ścieżce znajdują się spacje, wówczas nazwa skryptu „/ ścieżka / do / nazwa pliku”
Użyj tego jako skryptu, możesz użyć dowolnej nazwy skryptu, użyję openit1 jako przykładu. Najlepiej jest używać skryptów bezpośrednio z ~ / bin, aby dodać liczbę do nazwy, aby nie było konfliktu z żadnymi istniejącymi poleceniami Linuksa
Zamknij gedit i w terminalu
Uruchom ponownie, aby dodać ~ / bin do $ PATH
Aby wywołać, otwórz terminal i idź
JEŻELI jak podano w oryginale i używając orig. skrypt dla jednego konkretnego pliku na skrypt i wywoływanie przez d. klikając lewym przyciskiem na skrypt wystarczy wybrać „ Uruchom ” zamiast „Uruchom w terminalu”
źródło
Restart to add ~/bin to your $PATH
- uhm, stare nawyki Windows? ;)