ฉันจะสร้างไฟล์เปล่าใหม่ในสคริปต์ทุบตีได้อย่างไร


19

ฉันกำลังเรียกใช้สคริปต์ Perl ของบุคคลที่สามซึ่งเขียนว่ามันต้องการไฟล์เอาต์พุตสำหรับแฟล็กเอาท์พุท, -o.

น่าเสียดายที่สคริปต์ดูเหมือนต้องการไฟล์จริงนั่นคือผู้ใช้ต้องสร้างไฟล์ว่างfilename.txtด้วย 0 ไบต์จากนั้นป้อนไฟล์เปล่านี้ในบรรทัดคำสั่งสคริปต์

perl script1.pl -o filename.txt

คำถาม: ฉันจะสร้างไฟล์ว่างในสคริปต์ทุบตีได้อย่างไร หากพยายามเพียงครั้งperl script1.pl -o filename.txtเดียวสคริปต์จะแจ้งข้อผิดพลาดว่าไม่มีไฟล์อยู่


1
touch filename.txt
hschou


คำตอบ:


29

ใช้touchคำสั่ง touch filename.txt.


8
echo -n >file
Hannu

8
ระวัง - นี่จะไม่ทำให้ไฟล์ของคุณว่างหากมีอยู่แล้ว
johanvdw

6

ใช้คำสั่ง null ( :) redirect ( > filename) trick ( :>) เช่นนี้จะตัดทอนให้เป็นศูนย์หรือสร้างไฟล์ที่มีชื่อ

$ echo foo > filea
$ :> filea
$ wc -c filea
       0 filea
$ rm filea
$ :> filea
$ wc -c filea
       0 filea

(สิ่งนี้จะล้มเหลวหากเชลล์ตั้งค่าตัวเลือก NOCLOBBER)


1
หากมีการตั้งค่า noclobber ให้ใช้การเปลี่ยนเส้นทาง>|ไปที่ clobber ดังนั้น:>| filea- บันทึกไว้ในคู่มือ
glenn jackman

1
เพียงแค่จะทำจำเป็นที่จะต้องไม่มี> filename.txt :หรือ>> filename.txtถ้าเราไม่ต้องการทิ้งมันถ้ามันเกิดขึ้น
ilkkachu

2
@ilkkachu แม้ว่าคำถามจะระบุ Bash การใช้:จะทำให้สคริปต์มีแนวโน้มที่จะทำงานให้สำเร็จด้วยเชลล์อื่น ๆ เช่น Zsh
can-ned_food

3

คุณสามารถใช้ Perl ได้เช่นกัน

$ stat filename.txt
stat: cannot stat 'filename.txt': No such file or directory
$ perl -e 'open($fh,">","filename.txt") or die $!;close($fh)'                                         
$ stat filename.txt                                                                                   
  File: 'filename.txt'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 801h/2049d  Inode: 280728      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/ xieerqi)   Gid: ( 1000/ xieerqi)
Access: 2017-02-08 13:51:01.479121995 -0700
Modify: 2017-02-08 13:51:01.479121995 -0700
Change: 2017-02-08 13:51:01.479121995 -0700
 Birth: -
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.