Android

Bagaimana untuk memotong fail (kosong) di linux

Linux commands: Truncate a file

Linux commands: Truncate a file

Isi kandungan:

Anonim

Dalam sesetengah situasi, anda mungkin mahu memotong (kosong) fail sedia ada pada panjang sifar. Dalam kata yang mudah, pemotongan fail bermakna mengeluarkan kandungan fail tanpa memadam fail.

Memecah fail adalah lebih cepat dan lebih mudah daripada memadam fail, mencipta semula, dan menetapkan kebenaran dan pemilikan yang betul. Juga, jika fail dibuka oleh suatu proses, mengeluarkan fail itu boleh menyebabkan program yang menggunakannya untuk rosak.

Tutorial ini menerangkan cara memangkas fail ke saiz sifar dalam sistem Linux menggunakan pengalihan shell dan perintah truncate .

Pengalihan Shell

Kaedah yang paling mudah dan paling digunakan untuk memangkas fail adalah dengan menggunakan operator pengalihan > shell.

Format umum untuk memotong fail menggunakan pengalihan ialah:

: > filename

Mari kita putuskan perintah:

  • The : colon bermaksud true dan tidak menghasilkan keluaran. Operator redirection > mengarahkan output arahan sebelumnya ke fail yang diberikan. filename , fail yang anda ingin truncate.

Jika fail itu wujud, ia akan dipotong kepada sifar. Jika tidak, fail akan dibuat.

Sebaliknya : juga boleh menggunakan arahan lain yang tidak menghasilkan output.

Berikut ialah contoh menggunakan perintah cat untuk mengeluarkan kandungan peranti /dev/null , yang hanya mengembalikan watak akhir fail:

cat /dev/null > filename

Satu lagi arahan yang boleh digunakan adalah echo . Pilihan -n memberitahu echo untuk tidak menambah garis baharu:

echo -n > filename

Pada kebanyakan kerang moden seperti Bash atau Zsh anda boleh meninggalkan perintah sebelum simbol redirection dan gunakan:

> filename

Untuk dapat memotong fail, anda perlu mempunyai kebenaran menulis pada fail tersebut. Biasanya, anda akan menggunakan sudo untuk ini, tetapi keistimewaan akar yang tinggi tidak digunakan untuk pengalihan semula. Inilah contohnya:

sudo: > /var/log/syslog

bash: /var/log/syslog: Permission denied

Terdapat beberapa penyelesaian yang membenarkan mengarahkan dengan sudo . Opsyen pertama boleh menjalankan shell baru dengan sudo dan melaksanakan perintah di dalam shell tersebut menggunakan bendera -c :

sudo sh -c '> filename'

Pilihan lain adalah untuk paip output ke perintah tee , meningkatkan keistimewaan tee dengan sudo , dan tulis output kosong ke fail yang diberikan:

: | sudo tee filename

truncate Perintah

truncate adalah utiliti baris perintah yang membolehkan anda menyusut atau memanjangkan saiz fail ke saiz tertentu.

Sintaks umum untuk memotong fail ke saiz sifar dengan perintah truncate , adalah seperti berikut:

truncate -s 0 filename

Opsyen -s 0 menetapkan saiz fail kepada sifar.

Sebagai contoh, untuk mengosongkan log akses Nginx yang anda akan gunakan:

sudo truncate -s 0 /var/log/nginx/access.log

Kosongkan Semua Fail Log

Dari masa ke masa, pemacu cakera anda mungkin berantakan dengan banyak fail log besar yang mengambil jumlah ruang cakera yang besar.

Perintah berikut akan mengosongkan fail yang berakhir dengan ".log" di bawah direktori /var/log :

sudo truncate -s 0 /var/log/**/*.log

Pilihan yang lebih baik adalah memutar, memampatkan, dan mengeluarkan fail log dengan alat logrotate .

Kesimpulannya

Untuk memangkas fail di Linux gunakan operator pengalihan > diikuti dengan nama fail.

terminal truncate