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
atautempfile
(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.