但打開 Terminal 還要輸入一堆指令還是有點麻煩
不知有否類似檔案開啟方法一般能讓使用者,按滑鼠功能鍵,在功能選單執行特定程式

可以到 ${HOME}/.config/caja/scripts 將執行檔加入便可以在右鍵選單 (Context Menu) 加入自訂的功能
通過自訂右鍵選單功能可以使用這些特定變數資料
較重要為 CAJA_SCRIPT_SELECTED_FILE_PATHS 能獲取被選取的檔案的絕對路徑並以 \n 分割
可以使用以下寫法,並將 echo "${f}" 內容修改成閣下需要的內容
1 2 3 4 5 6 7 8 9 10 | #!/bin/bash ifs=$IFS # 將分割字元保存 IFS=$ '\n' # 將分割字元改為只以 \n 分割 for f in ` echo -n "${CAJA_SCRIPT_SELECTED_FILE_PATHS}" `; do echo "${f}" done IFS=$ifs |

但在右鍵選單功能執行功能不能顯示 Terminal 因此需要用另一個功能在 Terminal 執行原來的功能
製作先執 Terminal 的 script 並載入原來的 script 例如
1 | mate-terminal -x "${HOME}/.config/caja/scripts/my-script" |




其實實際操作上不一定需要顯示 Terminal 但有些操作需要較長時間運作,顯示進度可以了解狀態,必要時可以中斷程式
但同一個功能在選單中,很容易造成混亂,幸好隱藏的檔案不會在選單顯示
可以將原來的功能隱藏,將顯示 Terminal 的檔案為成原來的檔案名
留意
由於在下使用 Linux Mint Mate 桌面環境,使用 mate-terminal 為 Terminal 介面
並以 caja 作為預設檔案管理器,因此位置在 ~/.config/caja/scripts
因此 callback 時要考慮 Terminal 的介面及檔案管理器的腳本位置
例如 nautilus 位置會在 ~/.local/share/nautilus/scripts
若果效慮需要互動操作,甚至可以使用 zenity 或 yad 來進行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #!/bin/bash ifs=$IFS IFS=$ '\n' ESCAPE= "\\\\" NEWLINE= "\\n" WIDTH= '600' TITLE= 'Progress Title' COMPLETE= 'Progress Complete' FILE_COUNT=` echo -n "${CAJA_SCRIPT_SELECTED_FILE_PATHS}" | wc -l` COUNT_LENGTH= "${#FILE_COUNT}" i= '0' for f in ` echo -n "${CAJA_SCRIPT_SELECTED_FILE_PATHS}" ` '' ; do p=$((100*$i/$FILE_COUNT)) if [ "${f}" = '' ]; then echo "#${i}/${FILE_COUNT} (${p}%)${NEWLINE}${NEWLINE}${COMPLETE}" else dirname =` dirname "${f}" ` basename =` basename "${f}" ` name=` echo -n "${basename}" | awk -F '.' '{print $1}' ` extension=` echo -n "${basename}" | awk -F '.' '{print $NF}' ` if [ "${name}" = "${extension}" ]; then extension= '' fi # command start command = "echo ${ESCAPE}${NEWLINE}" command = "${command}'hello, world'" echo "${p}" echo "#${i}/${FILE_COUNT} (${p}%)${NEWLINE}${NEWLINE}${command}" command = "${command//${ESCAPE}${ESCAPE}${ESCAPE}${NEWLINE}/}" eval "${command}" # command end fi i=$(($i+1)) done | zenity --progress --width= "${WIDTH}" --title= "${TITLE}" --auto- kill 2> /dev/null IFS=$ifs |

動態圖片只是參巧效果
useful!
回覆刪除