Cara membuat file kosong dari baris perintah

Bagaimana Saya bisa membuat file kosong dari baris perintah?

Gunakan touch perintah:

The touch utility sets the modification and access times of files to thecurrent time of day. If the file doesn't exist, it is created withdefault permissions.

Contoh:

touch newfile
> newfile

Juga akan membuat berkas kosong. Jika file tersebut sudah ada, maka akan terpotong (dikosongkan). Untuk menyimpan isi file, gunakan >> untuk menambahkan seperti pada:

>> file

Bahkan jika file itu ada, isinya tidak akan tersentuh.

Edit: Jika Anda tidak memiliki konten untuk mengetik, yang satu ini lebih cepat:

user@host$ :> newfileuser@host$ :>> new_or_existing_file

Catatan. : adalah perintah di sini. Ini bukan bagian dari prompt.

cat /dev/null > file1.ext 

cara yang tepat ada juga cara lain

echo "" > file2.ext 

Perbedaannya adalah file1.ext akan menjadi nol byte dan file2.ext akan menjadi satu byte. Anda dapat memeriksa ini dengan

ls -l file*.*

Menggunakan vim editor Anda juga dapat membuat file kosong.

vim filename

Kemudian simpan

:wq

Perintah

echo -n > file

membuat file kosong, jika versi Anda echo mendukung sakelar-N.

Atau Anda bisa menggunakan printf

printf '' > file

Secara umum, menciptakan setiap biasa1 file di Linux melibatkan open(2) ,openat(2), dan creat(2) panggilan sistem (dan khususnya dengan O_CREAT bendera). Itu berarti Jika Anda memanggil utilitas baris perintah apa pun yang melakukan panggilan sistem ini, Anda dapat membuat file kosong baru.

Paling umum nama file baru dibuat dengan sesuatu seperti ini:

  • touch /tmp/new_file
  • : > /tmp/new_file
  • true > /tmp/new_file
  • > /tmp/new_file (bash shell saja )

sentuh adalah utilitas mandiri. Tujuan awalnya adalah untuk memperbarui akses dan Modifikasi waktu file, namun jika file tidak ada - itu akan dibuat. Perhatikan juga bahwa nama file - diperlakukan khusus, jadi jika Anda ingin membuat file yang bernama harfiah -, Anda harus melampirkannya ke dalam tanda kutip tunggal atau ganda.

Sebaliknya, > adalah operator pengalihan shell untuk stdout stream. The > operator secara khusus memanggil openat() system call dengan O_WRONLY|O_CREAT|O_TRUNC bendera. Itu berarti, Jika nama file tidak ada - itu akan dibuat, dan jika itu terjadi-data akan terpotong (dan karena itu hilang, jadi > harus digunakan dengan hati-hati). Di sebagian besar kerang saat ini true atau : adalah built - in, sehingga melakukan : > /tmp/new_file akan menjadi lebih efisien, meskipun sedikit dibandingkan dengan touch /tmp/new_file.

Tapi tentu saja itu tidak berhenti di situ. Seperti disebutkan, apa pun yang dapat melakukan open(), openat() dan, create() syscalls akan membuat file. Oleh karena itu, kita dapat melakukan:

  • true|dd of=/tmp/newfile
  • truncate --size 0 /tmp/new_filename.txt
  • cp /dev/null /tmp/null_file
  • true|tee /tmp/some_other_file
  • mktemp atau tempfile (untuk membuat file sementara yang tidak perlu ada di antara reboot !)

Tentu saja, semua utilitas yang disebutkan di atas tidak secara eksklusif membuat file. Tetapi mereka melakukan syscall yang diperlukan dan itu memungkinkan kita untuk menyesuaikan perintah.


Tentu saja, pada tingkat pemrograman atau scripting kita mungkin ingin membuat file juga, terutama untuk tujuan efisiensi (karena memanggil perintah eksternal seperti touch dari script Perl atau Python akan membutuhkan sumber daya tambahan).

Python satu-liner:

$ python -c 'import sys,os;f=sys.argv[1];os.utime(f,None) if os.path.exists(f) else open(f,"a").close' myfile.txt

Kita bisa membuatnya lebih pendek dengan ini:

$ python -c 'import sys,os;f=sys.argv[1];'$'\n''with open(f,"a"): os.utime(f,None)' mysecondfile.txt 

Dan di Perl:

$ perl -e 'open(my $fh,">","/tmp/perlfile")'

1 Jenis file lain seperti tautan keras/lunak,karakter atau blok perangkat khusus, direktori,pipa bernama, atau soket memerlukan syscalls yang sama sekali berbeda.