但打開 Terminal 還要輸入一堆指令還是有點麻煩
不知有否類似檔案開啟方法一般能讓使用者,按滑鼠功能鍵,在功能選單執行特定程式
可以到 ${HOME}/.config/caja/scripts 將執行檔加入便可以在右鍵選單 (Context Menu) 加入自訂的功能
通過自訂右鍵選單功能可以使用這些特定變數資料
較重要為 CAJA_SCRIPT_SELECTED_FILE_PATHS 能獲取被選取的檔案的絕對路徑並以 \n 分割
可以使用以下寫法,並將 echo "${f}" 內容修改成閣下需要的內容
#!/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 例如
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 來進行
#!/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!
回覆刪除