Załóżmy, że mam taki skrypt:
(Przykład przedstawia przypadek użycia rysnc)
#!/bin/bash
echo -n "Enter Source Directory:"
read srcdir
echo -n "Enter Destination Directory:"
read dstdir
rsync -av --delete "$srcdir" "$dstdir"
Chodzi o to, aby zachęcić użytkownika do wprowadzenia katalogów „Źródło” i „Miejsce docelowe”, aby rsync mógł z nim pracować. W tej chwili użytkownik będzie musiał wprowadzić ręcznie /path/to/directory/
za pomocą wiersza polecenia.
Zamiast tego chcę zachęcić użytkownika do wprowadzenia ścieżek przez interfejs GUI .
Coś takiego:
Jakich poleceń mogę użyć do wyświetlenia monitu w oknie wyboru GUI, które zwraca ścieżkę pliku do wiersza poleceń?
command-line
gui
prompt
Pandya
źródło
źródło
Odpowiedzi:
Możesz użyć tego do plików:
i to dla folderów:
do użytku uruchom:
Ogólnie pasuje do aktualnego motywu (w każdym razie dla menedżerów okien GTK), na mojej maszynie ze zmodyfikowaną wersją Zukitwo 3.8 wygląda to tak:
Jednym ze sposobów korzystania z tego jest:
Co spowodowałoby
you selected /path/to/file
.Możesz także użyć opcji, aby ustawić odpowiedni tytuł i katalog, w którym zaczyna się - W przypadku użycia rsync, na przykład:
W przypadku plików możesz również określić typ pliku do wyboru - np .:
UWAGA: Możesz także użyć YAD , widelca Zenity, który ma wiele innych funkcji.
Źródło
W przeważającej części możesz używać go w ten sam sposób - w przeglądarce plików:
i na stronie pomocy:
Chociaż w tym czasie (około wersji 26?), Nie został zaktualizowany, aby pasował do nowego interfejsu GTK 3.14+ (miał zenity) - ma więcej funkcji, ale sprawdź kompatybilność (na podstawie dokumentacji powinien działać na GTK +> = 2.16. 0
źródło
Dla przypomnienia możesz użyć
dialog
rozwiązania opartego na tekstowym interfejsie użytkownika (TUI).Składnia:
Przykład:
Wynik będzie mniej więcej taki:
Jak wskazał @Wilf, możesz użyć zmiennych
$LINES
i,$COLUMNS
aby wypełnić terminal:źródło
$LINES
i$COLUMNS
- więc biegniesz,$(dialog --stdout --title "Please choose a file" --fselect $HOME/ $(expr $LINES - 15) $(expr $COLUMNS - 10))
aby wypełnić okno terminala / ekranu.Wiem, że ma to 8 miesięcy, a także odpowiedź na pytanie PO. Jednak wspomniano o yadzie, ale nie podano żadnego przykładu. Oto moje rozwiązanie za pomocą yad.
Tak to działa. Umieszczamy yad w pętli for, ustawiając zmienną
$location
nasource
dla pierwszego przejścia idestination
dla drugiego. Dane wyjściowe są umieszczane w tablicy,selection[]
dla której zmiennai
jest używana jako indeks. Jest on ustawiany na 0 na początku i zwiększany z każdym przejściem. Dlatego źródło jest zapisywane jako${selection[1]}
i miejsce docelowe${selection[2]}
.DIR = „/ home” w pierwszym wierszu ustawia domyślne okno dialogowe. Opcje polecenia yad można znaleźć w terminalu, wpisując
yad --help
.źródło
Oto najkrótsze (i najlepsze) rozwiązanie odpowiedzi:
Yad
zapewnia dokładnie taką samą opcję jakzenity
:Otworzy się okno wyboru katalogu. Bez dodatkowego argumentu
--directory
będzie to okno dialogowe wyboru pliku.źródło