Misalkan saya memiliki skrip seperti ini:
(Contoh ini menggambarkan case penggunaan rysnc)
#!/bin/bash
echo -n "Enter Source Directory:"
read srcdir
echo -n "Enter Destination Directory:"
read dstdir
rsync -av --delete "$srcdir" "$dstdir"
Idenya di sini adalah untuk meminta pengguna untuk memasukkan direktori "Sumber" dan "Tujuan" agar rsync dapat digunakan. Seperti, pengguna harus masuk secara manual /path/to/directory/
melalui command-line.
Sebagai gantinya , saya ingin meminta pengguna untuk memasukkan jalur melalui antarmuka GUI .
Sesuatu seperti ini:
Perintah apa yang dapat saya gunakan untuk meminta pengguna dengan jendela pilihan GUI yang mengembalikan jalur file ke baris perintah?
command-line
gui
prompt
Pandya
sumber
sumber
Jawaban:
Anda dapat menggunakan ini untuk file:
dan ini untuk folder:
untuk penggunaan, jalankan:
Secara umum ini cocok dengan tema saat ini (untuk pengelola jendela GTK), di komputer saya dengan versi modded Zukitwo 3.8 tampilannya seperti ini:
Salah satu cara menggunakannya adalah seperti ini:
Yang akan menghasilkan
you selected /path/to/file
.Anda juga dapat menggunakan opsi untuk mengatur judul yang sesuai, dan direktori tempat dimulainya - Dengan case penggunaan rsync Anda, misalnya:
Untuk file, Anda juga dapat menentukan tipe file yang akan dipilih - misalnya:
CATATAN: Anda juga dapat menggunakan YAD , garpu Zenity yang memiliki lebih banyak fitur.
Sumber
Sebagian besar Anda dapat menggunakannya dengan cara yang sama - untuk browser file:
dan untuk halaman bantuan:
Meskipun pada saat itu (sekitar versi 26?), Itu belum diperbarui untuk mencocokkan antarmuka GTK 3.14+ baru (zenity miliki) - ia memiliki lebih banyak fitur, tetapi memeriksa kompatibilitas (berdasarkan dokumentasi itu harus bekerja pada GTK +> = 2.16. 0
sumber
Sekadar catatan, Anda dapat menggunakan
dialog
untuk solusi Antarmuka Pengguna Berbasis Teks (TUI).Sintaksis:
Contoh:
Outputnya akan seperti ini:
Seperti yang ditunjukkan oleh @Wilf, Anda dapat menggunakan
$LINES
dan$COLUMNS
variabel untuk membuatnya memenuhi terminal:sumber
$LINES
dan$COLUMNS
- jadi Anda menjalankannya$(dialog --stdout --title "Please choose a file" --fselect $HOME/ $(expr $LINES - 15) $(expr $COLUMNS - 10))
agar memenuhi terminal / jendela layar.Saya tahu ini berumur 8 bulan dan juga pertanyaan OP telah dijawab. Namun, yad telah disebutkan tetapi tidak ada contoh yang ditawarkan. Inilah solusi saya menggunakan yad.
Cara kerjanya seperti ini. Kami menempatkan yad di dalam for loop, mengatur variabel
$location
menjadisource
untuk pass pertama dandestination
untuk yang kedua. Output ditempatkan dalam arrayselection[]
yang variabeli
digunakan sebagai indeks. Ini diatur ke 0 di awal dan bertambah dengan setiap pass. Karenanya sumber disimpan sebagai${selection[1]}
dan tujuan${selection[2]}
.DIR = "/ home" pada baris pertama menetapkan default dialog. Opsi perintah yad dapat ditemukan dari terminal dengan mengetik
yad --help
.sumber
Berikut adalah solusi terpendek (dan terbaik) untuk jawabannya: berikan
Yad
opsi yang tepat sepertizenity
halnya:Ini membuka dialog pemilihan direktori. Tanpa argumen tambahan
--directory
itu akan menjadi dialog pemilihan file.sumber