Komut satırından nasıl boş bir dosya oluşturabilirim?
Kullan... touch
komut:
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.
Örnek:
touch newfile
> newfile
Ayrıca olacak yaratmak boş bir dosya. Dosya zaten mevcutsa, şu şekilde olacaktır: buduyordu (boşaltıyordu). Dosya içeriğini saklamak için >>
içinde olduğu gibi eklemek için:
>> file
Dosya mevcut olsa bile, içeriğe dokunulmaz.
Düzenlemek: Yazacak herhangi bir içeriğiniz yoksa, bu daha hızlıdır:
user@host$ :> newfileuser@host$ :>> new_or_existing_file
Not. :
komut burada. İstemin bir parçası değil.
cat /dev/null > file1.ext
kesin yol başka bir yol da var
echo "" > file2.ext
Fark dosya1'dir.ext sıfır bayt ve dosya2 olacaktır.ext bir bayt olurdu. Bunu şu adresten kontrol edebilirsiniz
ls -l file*.*
Kullanım vim
editör ayrıca boş bir dosya oluşturabilirsiniz.
vim filename
Sonra kaydet
:wq
Komut
echo -n > file
sürümünüz boş bir dosya oluşturuyorsa echo
-n anahtarını destekler.
Ya da kullanabilirsin. printf
printf '' > file
Genel olarak, herhangi bir düzenli oluşturma1 linux'ta dosya şunları içerir open(2)
,openat(2)
, ve creat(2)
sistem çağrıları (ve özellikle O_CREAT
bayraklar). Bu, bu sistem çağrılarını yapan herhangi bir komut satırı yardımcı programını çağırırsanız, yeni bir boş dosya oluşturabileceğiniz anlamına gelir.
Çoğu zaman yeni dosya adı böyle bir şeyle oluşturulur:
touch /tmp/new_file
: > /tmp/new_file
true > /tmp/new_file
-
> /tmp/new_file
(sadece bash kabuğu)
dokunma bağımsız bir yardımcı programdır. Asıl amacı, bir dosyanın erişim ve değiştirme süresini güncellemektir, ancak dosya mevcut değilse - oluşturulacaktır. Ayrıca bir dosya adı olduğunu unutmayın -
özel olarak ele alınır, bu nedenle tam anlamıyla adlandırılmış bir dosya oluşturmak istiyorsanız -
bunu tek veya çift tırnak içine almanız gerekecek.
Aksine, >
bir kabuk yeniden yönlendirme işleci için mi stdout akışı. Bu >
operatör özellikle openat()
sistem çağrısı ile O_WRONLY|O_CREAT|O_TRUNC
bayraklar. Bu, dosya adı yoksa - oluşturulacağı ve eğer varsa - verilerin kesileceği (ve dolayısıyla kaybolacağı) anlamına gelir >
dikkatli kullanılmalıdır). Günümüzde çoğu kabukta true
veya :
yerleşik, öyle yapıyor : > /tmp/new_file
marjinal olarak karşılaştırıldığında daha verimli olacak touch /tmp/new_file
.
Ama elbette orada bitmiyor. Belirtildiği gibi, gerçekleştirebilecek her şey open()
, openat()
ve, create()
syscalls bir dosya oluşturur. Bu nedenle, yapabiliriz:
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
veyatempfile
(yeniden başlatmalar arasında bulunması gerekmeyen geçici dosyalar oluşturmak için!)
Tabii ki, yukarıda belirtilen tüm yardımcı programlar yalnızca dosya oluşturmaz. Ancak gerekli sistem çağrısını yapıyorlar ve bu da komutları uyarlamamıza izin veriyor.
Tabii ki, programlama veya komut dosyası düzeyinde, özellikle verimlilik amacıyla da bir dosya oluşturmak isteyebiliriz (çünkü aşağıdaki gibi harici komutları çağırmak touch
bir Perl betiğinden veya Python'dan ek kaynaklar gerekir).
Python tek astar:
$ 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
Bununla daha kısa yapabiliriz.:
$ python -c 'import sys,os;f=sys.argv[1];'$'\n''with open(f,"a"): os.utime(f,None)' mysecondfile.txt
Ve Perl'de:
$ perl -e 'open(my $fh,">","/tmp/perlfile")'
1 Sabit / yumuşak bağlantılar, karakter veya blok özel aygıtlar, dizin, adlandırılmış yöneltmeler veya soketler gibi diğer dosya türleri tamamen farklı sistem çağrıları gerektirir.