Nếu mục tiêu của bạn là thực thi lệnh một dòng:
- Loại bỏ và tạo lại thư mục
~/Desktop/foo
nếu nó đã tồn tại.
- Chỉ cần tạo thư mục
~/Desktop/foo
nếu nó chưa tồn tại.
Sau đó, bạn có thể sử dụng:
rm -r ~/Desktop/foo; mkdir ~/Desktop/foo
;
tương đương với một dòng mới, nhưng nó cho phép bạn thực thi nhiều lệnh trên một dòng (nghĩa là "một lệnh").
- Nếu thư mục bạn đang xóa có thể chứa các tệp chỉ đọc, bạn sẽ cần
-f
cờ để xóa chúng mà không cần nhắc người dùng tương tác. Điều này không sao, nhưng tôi khuyên bạn nên đặc biệt cẩn thận rm -rf ...
. Xem man rm
để biết chi tiết.
- Bạn cần
rm
lệnh để kết thúc trước khi mkdir
lệnh thực thi; đây là lý do để sử dụng ;
thay vì &
. (Một lệnh trước &
chạy không đồng bộ trong nền.)
- Bạn cần
mkdir
lệnh để chạy khi rm
lệnh thành công; đây là lý do để sử dụng ;
thay vì ||
.
- Bạn cần
mkdir
lệnh để chạy khi rm
lệnh thất bại (thông thường thất bại sẽ có nghĩa là thư mục đã không tồn tại); đây là lý do để sử dụng ;
thay vì &&
.
- Các
rm
lệnh có thể thất bại ngay cả khi thư mục đã tồn tại, trong trường hợp đó mkdir
lệnh sẽ thất bại cũng có, nhưng các thông báo lỗi sẽ có ý nghĩa và có lẽ không cần phải thêm một kiểm tra bước trung cho foo
's tồn tại trước khi cố gắng để tạo ra nó.
Xem 3.2.3 Danh sách các lệnh trong tay Bash Reference để biết thêm thông tin và giải thích về ;
, &
, ||
, và &&
các nhà khai thác.
Như muru đã đề xuất (và Rinzwind xây dựng ), tôi khuyên bạn nên xem xétrsync
xem nó có đáp ứng nhu cầu sao lưu của bạn không. Có một số hướng dẫn hữu ích bổ sung trên trang tài liệu rsync , cũng như hướng dẫn rsync Ubuntu này .
Tại sao mkdir không có tùy chọn này?
mkdir
tạo thư mục ("mk" là viết tắt của "make" ). Đối với nó cũng để xóa đệ quy các thư mục và tất cả các tệp trong đó sẽ là xấu, bởi vì nó sẽ vi phạm nguyên tắc ít gây ngạc nhiên theo cách có thể dẫn đến mất dữ liệu.
rmdir
thậm chí không xóa các thư mục có bất kỳ tệp (không phải thư mục) nào trong đó. rm
có một -r
tùy chọn, điều này hợp lý vì rm
dự kiến sẽ loại bỏ các tệp (đó là mục đích của nó, do đó, mối nguy hiểm vốn có là trực quan và người dùng thường biết cẩn thận khi chạy rm
lệnh).
foo
như trong xóa tất cả nội dung của nó?mkdir
có một-p
tùy chọn bỏ qua nếu thư mục tồn tại.