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-trash
và restore-trash
các lệnh mà bạn có thể sử dụng như hiện trạng không hoặc làm rm
bí danh của trash
(xem dưới đây).
Ngữ nghĩa của trash
lệnh khác một chút so với tiêu chuẩn rm
- nó không yêu cầu -r
cờ để 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ừ trash
thà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ì rm
lệ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ư rm
liê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 rm
sẽ hoạt động theo cách nó, ví dụ. Tôi cập nhật câu trả lời.