ฉันจะส่งผ่านอาร์กิวเมนต์บรรทัดคำสั่งไปยังสคริปต์ผ่าน Dash ได้อย่างไร (14.04)


8

ฉันเพิ่งถามคำถามนี้เกี่ยวกับการเพิ่มเชลล์สคริปต์ใน Dash:

ใน 14.04 ฉันจะรันสคริปต์ทุบตีที่ฉันเขียนโดยไม่ต้องเปิด terminal ได้อย่างไร

มันทำงานได้อย่างสมบูรณ์

คำถามติดตามผล: ฉันจะส่งผ่านอาร์กิวเมนต์บรรทัดคำสั่งผ่าน Dash ได้อย่างไร ตัวอย่าง: ในกรณีนี้คำสั่ง dash ของฉันชื่อ "Panel" สคริปต์ติดตั้งหน้าจอของฉันด้วยเทอร์มินัล 8 เครื่อง นี่คือตัวอย่างของการใช้งาน:

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

และอื่น ๆ ฉันจะส่งผ่านข้อโต้แย้งเช่น--leftหรือ--rightผ่าน Dash ได้อย่างไร เป็นการดีที่ฉันต้องการมีเวิร์กโฟลว์นี้:

  • กดปุ่ม SUPER
  • ประเภทpanel --left(ตัวอย่าง)
  • เส้นประหายไปและแผงด้านข้างซ้าย

ตอนนี้มันจะทำงานสคริปต์ที่ถูกต้อง --leftแต่ละเว้น

เคล็ดลับ?



1
@ RaduRădeanu: ขอบคุณ แต่นี่ไม่ใช่ของที่ซ้ำกันอย่างแน่นอน ที่บอกวิธีติดถาวรตัวเลือกไปยังโปรแกรมตัวเรียกใช้งาน ฉันต้องการที่จะใช้ตัวเลือกที่แตกต่างกันเมื่อใดก็ตามที่ฉันต้องการ (ไม่มีตัวเรียกใช้งานหลายรุ่น)
Sir Robert

5
ทำไมไม่ใช้แค่ Alt + F2 นั่นอาจจะง่ายกว่านี้ .. อีกตัวเลือกหนึ่งก็คือการสร้างไฟล์ .desktop แยกต่างหาก ..
เซท

1
... หรือไฟล์. desktop หนึ่งไฟล์ที่มีรายการด่วนจากตัวเรียกใช้
Jacob Vlijm

คำตอบ:


16

ปัญหาคือว่าคุณจะไม่สามารถ "รัน" ซึ่งเป็น.desktopไฟล์จาก Dash มีข้อโต้แย้งเพื่อให้การติดตั้งตรงเหมือนที่คุณมีในใจเป็นไปไม่ได้ฉันกลัว แต่สมมติว่าสคริปต์ของคุณจะมีปากเสียงใช้มีเพียงไม่กี่ตัวเลือกทางเลือกที่สง่างามอาจจะยังดีกว่า:


  1. บันทึกสคริปต์ของคุณใน ~/bin

    • ลบส่วนขยาย
    • ทำให้ปฏิบัติการได้
    • เรียกใช้โดยกดAltF2พิมพ์คำสั่ง

      <scriptname> <argument> 

  1. สร้างรายการด่วนในตัวเรียกใช้งาน Unity:

    (สมมติว่าคุณบันทึกสคริปต์ไว้~/binทำให้สามารถเรียกใช้งานได้และลบส่วนขยายดังเช่นใน 1)

    ป้อนคำอธิบายรูปภาพที่นี่

    [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;
    

    บันทึกpanel.desktopใน~/.local/share/applicationsและลากไปยังตัวเรียกใช้


  1. สร้างแป้นพิมพ์ลัดที่แตกต่างกันสามแบบเช่นAlt+ <, Alt+ ^, Alt+ >เพื่อเรียกใช้สคริปต์ + อาร์กิวเมนต์ของคุณ:

    "การตั้งค่าระบบ"> "แป้นพิมพ์"> "ทางลัด"> "ทางลัดที่กำหนดเอง"

    คลิก "+" เพื่อเพิ่มคำสั่งของคุณ: <scriptname> <argument>


  1. ไม่ใช่สิ่งที่ชัดเจนที่สุด แต่ควรสำรวจตัวเลือก: คุณสามารถเรียกรายการตัวเลือก (zenity) จาก Dash:

    ป้อนคำอธิบายรูปภาพที่นี่

    พิมพ์ตัวอักษรตัวแรกของตัวเลือกของคุณกด Return และสคริปต์ของคุณจะทำงานด้วยอาร์กิวเมนต์ที่เลือก

    ป้อนคำอธิบายรูปภาพที่นี่

    สมมติว่าคุณบันทึกสคริปต์ใน ~ / bin อีกครั้งทำให้สามารถเรียกใช้งานได้และลบส่วนขยายภาษาดังเช่นใน 1:

    • คัดลอกสคริปต์ด้านล่างลงในไฟล์ว่างเปล่าบันทึกเป็นpanel_options.shทำให้ใช้งานได้

      #!/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
      
    • สร้างไฟล์ .desktop จากรหัสด้านล่าง ในIcon=บรรทัดตั้งค่าพา ธ ไปที่ไอคอนของคุณในExec=บรรทัดพา ธ ไปยังpane_options.shบันทึกไว้เช่นเดียวกับpanel.desktopใน~/.local/share/applicatios

      [Desktop Entry]
      Name=Panel
      Exec=/path/to/panel_options.sh
      Icon=/path/to/some/icon
      Type=Application
      StartupWMClass=Zenity
      

คำตอบอย่างละเอียดมาก +1
Glutanimate

ถี่ถ้วนมาก; คำตอบที่ยอดเยี่ยม คุ้มค่าเงิน! ขอบคุณ!
เซอร์โรเบิร์ต

0

จากคำถามเดิมของคุณดูเหมือนว่าสิ่งที่ถูกต้องที่ควรทำคือย้ายสคริปต์ไป~/bin/ที่ซึ่งควรเป็น$PATHค่าเริ่มต้นของคุณ
หากคุณทำเช่นนี้คุณจะสามารถเรียกใช้สคริปต์ของคุณAltF2อีกครั้ง คุณจะสามารถส่งผ่านข้อโต้แย้งเช่นเดียวกับที่คุณทำในเปลือก

นอกจากนี้คุณยังสามารถเพิ่มโฟลเดอร์อื่น ๆ $PATHที่คุณเก็บสคริปต์ของคุณไป หากต้องการทำสิ่งนี้ให้เปิด~/.profileในเครื่องมือแก้ไขข้อความที่คุณเลือก:

# 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

ในตอนท้ายเพิ่มบรรทัด (แทนที่<folder>ด้วยโฟลเดอร์ของคุณ) และบันทึกไฟล์:

PATH="<folder>:$PATH"

ตัวอย่างเช่นฉันเพิ่ม$HOME/.binของฉัน$PATHเพื่อให้ไบนารีของฉันไม่เกะกะโฟลเดอร์บ้านของฉัน แต่คุณสามารถเพิ่มไดเรกทอรีใด ๆ ลงในพา ธ ของคุณได้เพียงแค่แน่ใจว่าจะไม่เพิ่มอันตรายใด ๆ (เช่นเขียนได้ทั่วโลก)
การเปลี่ยนแปลงจะมีผลในการเข้าสู่ระบบครั้งต่อไป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.