Câu trả lời:
Giả sử bạn muốn cài đặt tập lệnh sau mà bạn đã tìm thấy trong khi duyệt Hỏi Ubuntu:
#!/bin/bash
## Sample Script 0.1
## Dependencies: notify-osd
notify-send "Sample nautilus script" "You Selected $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
Phụ thuộc
Điều đầu tiên bạn sẽ nhận thấy là nhiều kịch bản sẽ không chạy ra khỏi hộp. Đôi khi, chúng phụ thuộc vào các gói khác mà bạn có thể hoặc có thể chưa cài đặt. Trong trường hợp này, tập lệnh của chúng tôi phụ thuộc vào notify-osd
, đi kèm với Ubuntu theo mặc định.
Trên các bản phát hành khác, đây có thể không phải là trường hợp và bạn sẽ phải cài đặt các phụ thuộc trước khi sử dụng tập lệnh. Nếu phần phụ thuộc là một phần của kho chính thức, bạn có thể dễ dàng cài đặt nó apt-get
, vd:
sudo apt-get install notify-osd
Thiết lập kịch bản
Bây giờ chúng tôi đã thỏa mãn tất cả các phụ thuộc, chúng tôi có thể chuyển sang và sao chép tập lệnh vào hệ thống của chúng tôi. Để làm như vậy trước tiên chúng ta tạo ra một tài liệu mới trong thư mục script của chúng tôi, đó là ~/.gnome2/nautilus-scripts
hoặc ~/.local/share/nautilus/scripts/
trên Ubuntu 13.04 trở lên. Đây là một thư mục ẩn. Để truy cập vào nó, bạn sẽ phải mở trình quản lý tệp của mình, nhấn CTRL+ Lvà dán đường dẫn thư mục vào thanh Vị trí.
Tiếp theo, chúng tôi sẽ tạo một tài liệu trống mới bằng cách nhấp chuột phải và chọn Tạo tài liệu mới → Tài liệu trống . Đặt tên cho nó bất cứ điều gì bạn muốn, nhưng hãy cẩn thận: Tiêu đề bạn chọn là cách mục nhập tập lệnh sau này sẽ xuất hiện trong menu ngữ cảnh nautilus. Vì vậy, tốt hơn nên chọn một tên mô tả cho tài liệu:
Mở tài liệu mới lên trong trình soạn thảo văn bản bạn chọn và tiến hành sao chép và dán nội dung của hộp mã ở trên vào đó. Lưu nó và thoát khỏi trình soạn thảo văn bản.
Làm cho nó thực thi
Tại thời điểm này, tập lệnh của bạn được thiết lập chính xác nhưng vẫn không hoạt động vì hệ thống chưa nhận ra tập tin đó là tập tin thực thi. Để làm cho nó có thể thực thi được, nhấp chuột phải vào tệp của bạn và đi đến Thuộc tính → Quyền . Đặt dấu kiểm tại Cho phép thực thi dưới dạng chương trình và đóng hộp thoại:
Sử dụng
Bây giờ bạn có thể truy cập tập lệnh từ menu ngữ cảnh nautilus của bạn. Chỉ cần nhấp chuột phải vào tệp bạn chọn và đi tới Tập lệnh -> Tên tập lệnh (ở đây: Tập lệnh mẫu ). Nhấp vào mục để thực thi tập lệnh trên các tệp bạn đã chọn:
Gán một phím tắt cho tập lệnh
Có thể chỉ định các phím tắt cho tập lệnh Nautilus bằng cách chỉnh sửa tệp tăng tốc bàn phím của Nautilus. Trên Ubuntu 12.04 trở xuống, tập tin này có thể được tìm thấy bên dưới ~/.gnome2/accels/nautilus
. Trên các bản phát hành mới hơn, tập tin này đã được chuyển đến ~/.config/nautilus/accels
. Xin lưu ý rằng tập lệnh của bạn sẽ chỉ xuất hiện trong tệp tăng tốc sau khi khởi động lại Nautilus (thực thi nautilus -q
, sau đó khởi chạy lại Nautilus bằng cách nhấp vào trình khởi chạy của nó).
Cú pháp của tệp tăng tốc lúc đầu có thể trông hơi áp đảo nhưng thực sự khá dễ. Hãy xem đoạn trích này, ví dụ:
; (gtk_accel_path "<Actions>/ShellActions/ZoomInAccel2" "<Primary>KP_Add")
; (gtk_accel_path "<Actions>/ShellActions/TabsNext" "<Primary>Page_Down")
; (gtk_accel_path "<Actions>/ScriptsGroup/script_file:\\s\\s\\shome\\sglutanimate\\s.gnome2\\snautilus-scripts\\sSample%20script" "")
; (gtk_accel_path "<Actions>/ShellActions/Search" "<Primary>f")
; (gtk_accel_path "<Actions>/ShellActions/Forward" "<Alt>Right")
Mỗi dòng đại diện cho một nhiệm vụ chính duy nhất. Đoạn trích dẫn đầu tiên chỉ định hành động, đoạn thứ hai là tổ hợp phím được gán. Các dòng bắt đầu bằng dấu chấm phẩy được nhận xét và hiện không hoạt động.
Để gán một lối tắt cho tập lệnh của bạn, bạn sẽ phải tìm kiếm tệp này để tìm tên của tập lệnh và bỏ dòng tương ứng bằng cách xóa dấu chấm phẩy. Sau đó tiến hành gõ phím tắt bạn muốn gán.
Đây là những sửa đổi có sẵn và mã khóa tương ứng của chúng:
<Primary>
<Alt>
<Shift>
Bạn có thể tìm mã khóa hợp lệ cho tất cả các khóa khác bằng cách sử dụng xev .
Đây là cách bạn sẽ phải sửa đổi phần trên để gán tập lệnh mẫu của bạn cho ALT+ SHIFT + S:
; (gtk_accel_path "<Actions>/ShellActions/ZoomInAccel2" "<Primary>KP_Add")
; (gtk_accel_path "<Actions>/ShellActions/TabsNext" "<Primary>Page_Down")
(gtk_accel_path "<Actions>/ScriptsGroup/script_file:\\s\\s\\shome\\sglutanimate\\s.gnome2\\snautilus-scripts\\sSample%20script" "<Alt><Shift>s")
; (gtk_accel_path "<Actions>/ShellActions/Search" "<Primary>f")
; (gtk_accel_path "<Actions>/ShellActions/Forward" "<Alt>Right")
Trên Ubuntu 12.04 (và có lẽ sau này cũng phát hành) Nautilus đôi khi sẽ ghi đè lên tệp tăng tốc trước khi bạn có thể thực hiện bất kỳ thay đổi nào. Vì vậy, có thể là một ý tưởng tốt để thực hiện tất cả các thay đổi bạn thực hiện trong khi Nautilus không chạy ( nautilus -q
). Dù bằng cách nào, bạn sẽ phải khởi động lại Nautilus để xem các thay đổi.
Tự động cài đặt
Tập lệnh Nautilus này sẽ tự động cài đặt tập lệnh Nautilus cho bạn. Xin hãy xem các bình luận để xem những gì đang diễn ra đằng sau hậu trường:
#!/bin/bash
# AUTHOR: Glutanimate (/ubuntu//users/81372/)
# LICENSE: GNU GPLv3 (http://www.gnu.de/documents/gpl-3.0.en.html)
# NAME: Nautilus Scripts Installer
#
# DESCRIPTION: This script will install Nautilus scripts on Ubuntu 12.04 and above.
# Note: scripts of the same name in the destination folder will be
# overwritten without warning
# general purpose notification function
gui_notify(){
notify-send -i gnome-app-install "Nautilus Scripts Installer" "$1"
}
# check if any files selected
if [[ -z "$@" ]]
then
gui_notify "Error: No files selected."
exit 1
fi
RELEASE="$(lsb_release -r | cut -f2)" # detect Ubuntu release
if [[ "$RELEASE" = "12.04" ]] # set script folder accordingly
then
ScriptFolder="$HOME/.gnome2/nautilus-scripts"
else
ScriptFolder="$HOME/.local/share/nautilus/scripts/"
fi
for Script in "$@"; do
ScriptFilename="${Script##*/}" # get filename via bash string manipulation
cp "$Script" "$ScriptFolder/" # Move script to destination
chmod u+x "$ScriptFolder/$ScriptFilename" # Make it executable for the user
done
gui_notify "The following scripts have been installed: $@"
Như một bên: Đây là kịch bản nautilus tôi đã sử dụng để ghi lại các screencasts của câu trả lời này.