Có cách nào để chặn các cuộc gọi đến rm, và thay vì xóa vĩnh viễn các tập tin, thay vào đó hãy chuyển chúng vào thùng rác?
Có cách nào để chặn các cuộc gọi đến rm, và thay vì xóa vĩnh viễn các tập tin, thay vào đó hãy chuyển chúng vào thùng rác?
Câu trả lời:
Có một công thức trên webupd8.org cho việc này. Để ngăn ngừa thối liên kết, đây là thông tin quan trọng (có thêm một vài bổ sung).
sudo apt-get install trash-cli
Điều này sẽ cài đặt trash, empty-trash, list-trashvà restore-trashcác lệnh mà bạn có thể sử dụng như hiện trạng không hoặc làm rmbí danh của trash(xem dưới đây).
Ngữ nghĩa của trashlệnh khác một chút so với tiêu chuẩn rm- nó không yêu cầu -rcờ để có thể xóa các thư mục. Nếu điều này làm phiền bạn, webupd8.org đề xuất tập lệnh sau, bạn có thể đặt PATH của mình và gọi nó trash-rm:
#!/bin/bash
# command name: trash-rm
shopt -s extglob
recursive=1
declare -a cmd
((i = 0))
for f in "$@"; do
case "$f" in
(-*([fiIv])r*([fiIv])|-*([fiIv])R*([fiIv]))
tmp="${f//[rR]/}"
if [ -n "$tmp" ]; then
#echo "\$tmp == $tmp"
cmd[$i]="$tmp"
((i++))
fi
recursive=0
;;
(--recursive) recursive=0
;;
(*)
if [ $recursive != 0 -a -d "$f" ]; then
echo "skipping directory: $f"
continue
else
cmd[$i]="$f"
((i++))
fi
;;
esac
done
trash "${cmd[@]}"
Trong Ubuntu 12.04 trở lên, lệnh cuối cùng trong tập lệnh nên được trash-put "${cmd[@]}"thay thế trash "${cmd[@]}"(vì lệnh đã thay đổi từ trashthành trash-put).
Sau đó làm cho tập lệnh thực thi:
chmod +x trash-rm
Khi bạn đã có nó trong một số thư mục trong thư mục của mình PATH, hãy thêm bí danh vào ~ / .bashrc, điều này sẽ tạo bash để gọi tập lệnh của bạn thay vì rmlệnh thực tế :
alias rm="trash-rm"
Như djeikyb chỉ ra một cách chính xác, thủ thuật bí danh .bashrc sẽ chỉ hoạt động đối với người dùng có .bashrc được sửa đổi và chỉ trong phiên bash terminal.
Và đó nên là nó.
alias="trash"). Bạn có biết lợi thế của việc có kịch bản là gì không?
trashđể hành xử giống như rmliên quan đến việc xóa các thư mục. Điều này có thể quan trọng đối với một số tập lệnh dự kiến rmsẽ hoạt động theo cách nó, ví dụ. Tôi cập nhật câu trả lời.