วิธีสร้างไฟล์ว่างจากบรรทัดคำสั่ง


คำตอบ:


237

ใช้touchคำสั่ง:

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

ตัวอย่าง:

touch newfile

14
คุณสามารถใช้touch newfile.txtหรือนามสกุลอื่น ๆ ได้เช่นกัน (หากคุณต้องการระบุนามสกุล)
gotqn

@gotqn สำหรับ python แตะ newfile.py และสำหรับ ruby ​​newfile.rb หรือไม่
kouty

3
แต่ถ้าnewfileมีอยู่แล้วและไม่ว่างเปล่าไฟล์นั้นtouch newfileจะทำให้คุณไม่มีไฟล์ อาจไม่ใช่สิ่งที่คุณต้องการ
Camille Goudeseune

@CamilleGoudeseune ฉันคิดว่าถ้าnewfileมีอยู่แล้วtouchคำสั่งจะอัปเดตการประทับเวลาของไฟล์ (ซึ่งเป็นคำสั่งที่แน่นอน) โดยไม่ต้องแก้ไขเนื้อหาของไฟล์
C0deDaedalus

คุณไม่ต้องคิดอย่างนั้น มันเป็นความจริง! แต่ไม่ใช่คำถามที่ถาม
Camille Goudeseune

81
> newfile

จะสร้างไฟล์ว่าง หากไฟล์มีอยู่แล้วไฟล์นั้นจะถูกตัดทอน (อบ) เพื่อเก็บเนื้อหาของไฟล์ใช้>>สำหรับการต่อท้ายใน:

>> file

แม้ว่าไฟล์จะมีอยู่เนื้อหาจะไม่ถูกแตะต้อง

แก้ไข : หากคุณไม่มีเนื้อหาที่จะพิมพ์เนื้อหานี้จะเร็วกว่า:

user@host$ :> newfile
user@host$ :>> new_or_existing_file

บันทึก. :เป็นคำสั่งที่นี่ มันไม่ได้เป็นส่วนหนึ่งของพรอมต์


ตอนนี้เป็นเรื่องใหม่ มันเฉพาะทุบตี?
tshepang

ฉันไม่คิดอย่างนั้น เชลล์ใด ๆ ที่อนุญาตให้เปลี่ยนทิศทางของเอาต์พุตสตรีมไปยังไฟล์ควรสนับสนุนสิ่งนี้ การทำเช่นนี้จะตัดทอนไฟล์หากมีอยู่แล้ว การสัมผัสมีความปลอดภัยที่จะใช้ถ้าคุณไม่ต้องการที่จะล้างมัน
balki

ว้าวตอนนี้ฉันคิดว่านี่เรียกว่าการโกงระบบ
banarun

12
cat /dev/null > file1.ext 

วิธีที่แน่นอนยังมีอีกวิธีหนึ่ง

echo "" > file2.ext 

ความแตกต่างคือ file1.ext จะเป็นศูนย์ไบต์และ file2.ext จะเป็นหนึ่งไบต์ คุณสามารถตรวจสอบได้โดย

ls -l file*.*

10
ไม่ 'echo "">' ไม่ได้สร้างไฟล์เปล่า แต่จะสร้างไฟล์ที่มีบรรทัดใหม่ หากคุณต้องการใช้ echo เพื่อสร้างไฟล์เปล่าคุณจะต้องใช้ 'echo -n "">' หรือเพียงแค่ 'echo -n>'
andol

7

การใช้vimโปรแกรมแก้ไขคุณสามารถสร้างไฟล์เปล่าได้

vim filename

จากนั้นบันทึก

:wq

ดีในกรณีนี้ไม่แก้ไขข้อความใด ๆ vimแต่
Nephente

2

คำสั่ง

echo -n > file

สร้างไฟล์เปล่าหากเวอร์ชันของคุณechoรองรับสวิตช์ -n

หรือคุณสามารถใช้ printf

printf '' > file

0

Python หนึ่งซับ:

$ 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

touchโดยทั่วไปหลามการดำเนินงานของ

เราสามารถทำให้มันสั้นลงด้วยสิ่งนี้:

$ python -c 'import sys,os;f=sys.argv[1];'$'\n''with open(f,"a"): os.utime(f,None)' mysecondfile.txt 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.