Bagaimana saya bisa meneruskan argumen baris perintah ke skrip melalui Dash? (14,04)

8

Baru-baru ini saya menanyakan pertanyaan ini tentang menambahkan skrip shell ke Dash:

Di 14.04 bagaimana saya menjalankan skrip bash yang saya tulis tanpa membuka terminal?

Itu bekerja dengan sempurna.

Pertanyaan tindak lanjut: Bagaimana saya bisa melewati argumen baris perintah melalui Dash? Contoh: Dalam hal ini, perintah dasbor saya bernama "Panel". Script panel layar saya dengan 8 terminal. Berikut ini contoh penggunaannya:

panel             # Tile the screen with 8 terminal windows.
panel --left      # Tile the left side with 4 terminals
panel --right     # Tile the right side with 4 terminals

Dan seterusnya. Bagaimana saya bisa menyampaikan argumen suka --leftatau --rightmelalui Dash? Idealnya saya ingin memiliki alur kerja ini:

  • Tekan tombol SUPER
  • Ketik panel --left(misalnya)
  • Dash hilang dan sisi kiri berpanel.

Saat ini menjalankan skrip yang tepat, tetapi mengabaikan --left.

Kiat?

Pak Robert
sumber
kemungkinan duplikat dari Tentukan parameter untuk program peluncur
Radu Rădeanu
1
@ RaduRădeanu: Terima kasih, tapi ini jelas bukan duplikat dari itu. Itu memberi tahu cara menempelkan opsi secara permanen ke program peluncur. Saya ingin dapat menggunakan opsi yang berbeda kapan pun saya mau (tanpa memiliki beberapa versi peluncur).
Sir Robert
5
Mengapa tidak menggunakan Alt + F2? Itu mungkin akan lebih mudah .. Pilihan lain adalah membuat file .desktop terpisah ..
Seth
1
... atau satu file .desktop dengan daftar cepat dari peluncur.
Jacob Vlijm

Jawaban:

16

Masalahnya adalah Anda tidak dapat "menjalankan" .desktopfile dari Dash dengan argumen, jadi pengaturan persis seperti yang Anda pikirkan tidak mungkin saya khawatir. Namun, dengan asumsi skrip Anda mengambil argumen, ada beberapa opsi alternatif yang elegan, bahkan mungkin lebih baik:


  1. Simpan skrip Anda di ~/bin

    • hapus ekstensi
    • membuatnya bisa dieksekusi
    • jalankan dengan menekan AltF2, ketikkan perintah

      <scriptname> <argument> 

  1. Buat daftar cepat di peluncur Persatuan:

    (dengan asumsi Anda menyimpan skrip ~/bin, membuatnya dapat dieksekusi dan menghapus ekstensi seperti pada 1.)

    masukkan deskripsi gambar di sini

    [Desktop Entry]
    Name=name_of_your_script_like_you_see_it_in_Dash
    Exec=<scriptname> <default_argument>
    Icon=/path/to/some/icon
    Type=Application
    
    Actions=Panel;Panel -left;Panel -right;
    
    [Desktop Action Panel]
    Name=Panel
    Exec=<scriptname> <default_argument>
    OnlyShowIn=Unity;
    
    [Desktop Action Panel -left]
    Name=Panel -left
    Exec=<scriptname> <argument_1>
    OnlyShowIn=Unity;
    
    [Desktop Action Panel -left]
    Name=Panel -right
    Exec=<scriptname> <argument_2>
    OnlyShowIn=Unity;

    Simpan sebagai panel.desktopdi ~/.local/share/applicationsdan drag ke peluncur.


  1. Buat tiga pintasan keyboard yang berbeda, misalnya Alt+ <, Alt+ ^, Alt+ >untuk menjalankan argumen skrip + Anda:

    "Pengaturan Sistem"> "Keyboard"> "Pintasan"> "Pintasan Khusus"

    Klik "+" untuk menambahkan perintah Anda: <scriptname> <argument>


  1. Bukan yang paling jelas, tetapi menjelajahi opsi, itu harus disebutkan: Anda dapat memanggil daftar opsi (zenity) dari Dash:

    masukkan deskripsi gambar di sini

    Ketik karakter pertama dari opsi Anda, tekan kembali dan skrip Anda akan berjalan dengan argumen yang dipilih.

    masukkan deskripsi gambar di sini

    Sekali lagi dengan asumsi bahwa Anda menyimpan skrip di ~ / bin, membuatnya dapat dieksekusi dan menghapus ekstensi bahasa seperti pada 1 .:

    • Salin skrip di bawah ini ke file kosong, simpan sebagai panel_options.sh, buat menjadi dapat dieksekusi.

      #!/bin/bash
      
      test=$(zenity --list "1. Panel" "2. Panel -left" "3. Panel -right" --column="Panel options" --title="Panel")
      
      if [[ "$test" = "1. Panel"* ]]; then
          <scriptname> <default_argument>
      elif [[ "$test" = "2. Panel -left"* ]]; then
          <scriptname> <argument_1>
      elif [[ "$test" = "3. Panel -right"* ]]; then
          <scriptname> <argument_2>
      fi
    • Buat file .desktop dari kode di bawah ini. Dalam Icon=line, set path ke ikon Anda, di Exec=jalur jalan menuju pane_options.sh, simpan sebagai panel.desktopdi~/.local/share/applicatios

      [Desktop Entry]
      Name=Panel
      Exec=/path/to/panel_options.sh
      Icon=/path/to/some/icon
      Type=Application
      StartupWMClass=Zenity
Yakub Vlijm
sumber
Jawaban yang sangat teliti. +1
Glutanimate
Sangat teliti; jawaban yang bagus Bernilai karunia! Terima kasih!
Sir Robert
0

Dari pertanyaan awal Anda, sepertinya hal yang benar untuk dilakukan adalah memindahkan skrip ~/bin/, yang seharusnya ada di Anda $PATHsecara default.
Jika Anda melakukan ini, Anda akan dapat menjalankan skrip Anda menggunakan AltF2lagi. Anda juga bisa memberikan argumen seperti yang Anda lakukan di shell.

Anda juga dapat menambahkan folder lain tempat Anda menyimpan skrip ke $PATH. Untuk melakukan ini, buka ~/.profiledi editor teks pilihan Anda:

# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Pada akhirnya, tambahkan baris (ganti <folder>dengan folder Anda) dan simpan file:

PATH="<folder>:$PATH"

Sebagai contoh, saya menambahkan $HOME/.binke saya $PATHsehingga binari saya tidak mengacaukan folder rumah saya, tetapi Anda dapat menambahkan direktori apa pun ke jalur Anda, pastikan untuk tidak menambahkan sesuatu yang berbahaya (misalnya yang dapat ditulis dunia).
Perubahan akan berlaku pada login berikutnya.

Donarsson
sumber