GNU/Linux >> Belajar Linux >  >> Linux

Apakah Ini Uuoc (Penggunaan Cat yang Tidak Berguna) Untuk Mengarahkan Satu File Ke File Lain?

Jika saya ingin membuat isi file2 cocok dengan isi file1 , saya jelas bisa menjalankan cp file1 file2 .

Namun, jika saya ingin melestarikan semuanya tentang file2 kecuali konten—pemilik, izin, atribut yang diperluas, ACL, tautan keras, dll., dll., maka saya tidak ingin menjalankan cp .* Dalam hal ini saya hanya ingin memasukkan isi file1 ke dalam file2 .

Sepertinya yang berikut ini akan melakukannya:

< file1 > file2

Tapi itu tidak berhasil. file2 terpotong untuk apa-apa dan tidak ditulis. Namun,

cat < file1 > file2

memang bekerja.

Saya terkejut karena versi pertama tidak berfungsi.

Apakah versi kedua adalah UUOC? Apakah ada cara untuk melakukan ini tanpa menjalankan perintah, hanya dengan menggunakan pengalihan?

Catatan:Saya sadar bahwa UUOC lebih merupakan poin yang bertele-tele daripada anti-pola yang sebenarnya.

*Seperti yang ditemukan tniles09, cp akan sebenarnya bekerja dalam kasus ini.

Jawaban yang Diterima:

cat < file1 > file2 bukan UUOC. Secara klasik, < dan > lakukan pengalihan yang sesuai dengan duplikasi deskriptor file di tingkat sistem.
Duplikasi deskriptor file sendiri tidak melakukan apa-apa (well, > pengalihan terbuka dengan O_TRUNC , jadi agar akurat, pengalihan keluaran memang memotong file keluaran). Jangan biarkan < > simbol membingungkan Anda. Pengalihan tidak memindahkan data—pengalihan menetapkan deskriptor file ke deskriptor file lain.

Dalam hal ini Anda membuka file1 dan tetapkan deskriptor file itu ke deskriptor file < (<file1 ==0<file1 ) dan file2 dan tetapkan deskriptor file itu ke deskriptor file 1 (>file2 ==1>file2 ).

Sekarang setelah Anda memiliki dua deskriptor file, Anda memerlukan proses untuk menyekop data di antara keduanya—dan itulah yang cat adalah untuk.


Linux
  1. Salin N-baris Terakhir Dari Satu File Ke File Lain?

  2. Menemukan konten dari satu file di file lain

  3. Cara menambahkan konten dari banyak file ke dalam satu file

  1. Bagaimana menemukan kata-kata dari satu file di file lain?

  2. Bisakah saya menggunakan satu disk virtualbox untuk banyak mesin?

  3. Salin seluruh hierarki sistem file dari satu drive ke drive lainnya

  1. Redirect strace ke file

  2. Bagaimana cara mengarahkan domain ke domain lain secara lokal?

  3. ganti baris dalam satu file dengan baris lain dengan nomor baris