Toàn bộ thiết bị đầu ra bị xóa cho dù kích thước của nó có phải là bội số của kích thước khối bạn chuyển đến dd
hay không.
Các notrunc
cờ không có tác dụng khi đầu ra là một tập tin thiết bị, vì cắt bỏ một tập tin thiết bị không có tác dụng. Nếu đầu ra là một tệp thông thường, nó sẽ có tác dụng là tệp đầu ra không bị cắt trước khi ghi, điều này trên một số hệ thống tệp có nghĩa là dữ liệu cũ bị ghi đè (trái ngược với việc ghi các khối dữ liệu mới và không để lại phần còn lại), tuy nhiên điều này sẽ không hữu ích vì thuộc tính này không được đảm bảo bởi tất cả các hệ thống tệp và hơn nữa lệnh sẽ không chỉ ghi đè lên tệp mà còn tiếp tục ghi cho đến khi nó lấp đầy đĩa đầu ra (hoặc một số lỗi khác xảy ra).
Thay vì sử dụng dd
và lo lắng về việc liệu bạn có đang sử dụng đúng cách hay không (như nó xảy ra, nó hoạt động trong trường hợp cụ thể này, nhưng nó phức tạp và đôi khi không hoạt động ), chỉ cần sử dụngcat
.
cat /dev/zero >/dev/sdX
Mặc dù có niềm tin phổ biến trên web, nhưng hoàn toàn không có phép thuật dd
nào khiến nó phù hợp hơn với việc ghi vào đĩa. Điều kỳ diệu là trong các /dev
tập tin. Bất kỳ công cụ nào có thể đối phó với dữ liệu nhị phân, như bất kỳ công cụ hiện đại cat
hoặc nào head
, đều có thể thực hiện cùng một công việc dd
trừ khi bạn chuyển các cờ như seek
hoặc skip
.
Lưu ý rằng một vấn đề được chia sẻ bởi dd
và cat
là khi hoạt động thành công, chúng sẽ xảy ra lỗi với không còn chỗ trống trên thiết bị (ENOSPC). Nếu bạn đặt tập lệnh này vào tập lệnh, bạn sẽ cần kiểm tra xem lỗi đó là ENOSPC hay sử dụng một phương pháp khác. Một phương pháp đáng tin cậy hơn là trước tiên xác định kích thước của thiết bị (ví dụ: sử dụng /proc/partitions
trong Linux), sau đó viết chính xác số byte đúng bằng một công cụ như head
.
size=$(</proc/partitions awk '$4 == "sdX" {print $3}')
head -c "${size}k" /dev/zero >/dev/sdX