GNU/Linux >> Belajar Linux >  >> Linux

Alternatif Untuk 'dd' Yang Tidak Memotong File?

Adakah yang tahu alternatif untuk 'dd', yang tidak akan memotong file, tanpa menggunakan:conv=notrunc . Menambahkan conv=notrunc tidak didukung melalui busybox/toybox karena ruang terbatas.

Misalnya, saya ingin yang setara dengan

dd bs=4 count=3 skip=2 seek=3 if=file.in of=file.out conv=notrunc

Tapi itu akan berhasil di mana dd tidak mendukung conv=notrunc .

Jawaban yang Diterima:

Gunakan <> standar sh operator pengalihan yang membuka file dalam mode baca+tulis tanpa pemotongan .

cat < file.in 1<> file.out

Untuk menyalin konten file.in di awal file.out .

Jika Anda perlu mencari di file input atau output, dan dengan asumsi dd . Anda masih mendukung arahan ini:

dd bs=4 count=3 skip=2 seek=3 < file.in 1<> file.out

Jika Anda tidak memiliki dd sama sekali, Anda dapat mencoba head -c , dengan asumsi versi Anda menangani meninggalkan pointer di file di tempat yang tepat saat keluar (yang tidak dilakukan oleh busybox versi IIRC yang lebih lama).

Misalnya, padanan di atas adalah:

{
  head -c 8 > /dev/null        # seek input fd to offset 8
  head -c 12 <&1 > /dev/null   # seek output fd to offset 12
  head -c 12                   # copy 12 bytes
} < file.in 1<> file.out

Linux
  1. Bagaimana cara menghapus garis yang muncul pada file B dari file A lainnya?

  2. Utas mana yang menangani sinyal?

  3. Bagaimana cara menghapus konten file dari baris perintah?

  1. Apa perintah unix untuk mengetahui file yang dapat dieksekusi yang sesuai dengan perintah yang diberikan?

  2. Bagaimana cara memotong file per baris?

  3. Dalam symlink yang menunjuk ke '127.0.1.1:+xxxxx', untuk apa karakter plus?

  1. Mengapa Skrip Bash Tidak Mengenal Alias?

  2. Basa'?

  3. Simpan riwayat semua modifikasi pada file teks