มีประโยชน์ในการสร้างไฟล์ด้วยการสัมผัสก่อนที่จะแก้ไข .. เช่น:
touch foo
vi foo
เมื่อเทียบกับการได้รับมันเพื่อแก้ไขทันที? ชอบ:
vi foo
ฉันเห็นบทเรียนบางอย่างที่ใช้ในอดีต ( touch
แล้วvi
)
มีประโยชน์ในการสร้างไฟล์ด้วยการสัมผัสก่อนที่จะแก้ไข .. เช่น:
touch foo
vi foo
เมื่อเทียบกับการได้รับมันเพื่อแก้ไขทันที? ชอบ:
vi foo
ฉันเห็นบทเรียนบางอย่างที่ใช้ในอดีต ( touch
แล้วvi
)
คำตอบ:
touch
ก่อนอื่นยืนยันว่าคุณมีความสามารถในการสร้างไฟล์แทนที่จะเสียเวลาในการแก้ไขเท่านั้นเพื่อค้นหาว่าระบบไฟล์นั้นเป็นแบบอ่านอย่างเดียวหรือมีปัญหาอื่น ๆ
:w
สิ่งแรกหลังจากเริ่มvi
คิด (และ:chmod +x %
ถ้าคุณต้องการทำให้มันใช้งานได้)
touch
อาจล้มเหลวที่vi
's :w!
จะได้ประสบความสำเร็จแม้ว่า (เช่นถ้าfile
มีอยู่ แต่คุณไม่ได้เป็นเจ้าของและไม่ได้มีการเขียนการเข้าถึงมันในขณะที่คุณมีสิทธิ์ในการเขียนไปยังไดเรกทอรีปัจจุบัน) ตรงกันข้ามtouch
อาจจะประสบความสำเร็จ แต่vi
's :w
หรือ:w!
อาจล้มเหลวหากคุณเป็นเจ้าของไฟล์ แต่ไม่ได้มีการเขียนการเข้าถึงก็มิได้ไปยังไดเรกทอรีปัจจุบัน (คุณจะสามารถหลีกเลี่ยงมันด้วย:!chmod +w %
(บางคนvi
การใช้งานเช่นvim
สามารถทำ โดยอัตโนมัติเมื่อ:w!
))
"foo" [readonly]
ระบุอย่างชัดเจนถ้าคุณเปิดแฟ้มที่คุณไม่ได้รับอนุญาตให้เขียนไปยัง: และอีกครั้งเมื่อเข้าสู่โหมดแทรก:Warning: Changing a readonly file.
นอกเหนือจากคำตอบที่ได้รับข้อดีอย่างหนึ่งของการสัมผัสก็คือผู้ใช้อื่น / การแก้ไขไฟล์เดียวกันในขณะที่คุณแตะมันจะได้รับคำเตือนเมื่อพวกเขาพยายามบันทึกการเปลี่ยนแปลงใด ๆ
WARNING: The file has been changed since reading it!!!
Do you really want to write to it (y/n)?
สิ่งนี้จะเตือนพวกเขาแม้ว่าคุณจะไม่ได้ทำการเปลี่ยนแปลงใด ๆ ต่อ se และเพียงแค่สัมผัสไฟล์
นอกเหนือจากคำตอบที่ยอมรับ:
เป็นที่น่าสังเกตว่าtouch
ใช้เพื่ออัปเดตการประทับเวลาของไฟล์ หากคุณใช้touch
กับไฟล์ที่มีอยู่มันจะอัปเดตการประทับเวลาไฟล์เป็นวันที่และเวลาปัจจุบัน หากไฟล์ไม่มีอยู่มันจะสร้างไฟล์เปล่าที่มีวันที่และเวลาปัจจุบันเป็นเวลาประทับ
vi
ในทางกลับกันไม่ได้สร้างไฟล์ใหม่ยกเว้นว่าคุณเขียนลงไป
ตัวอย่างเช่นถ้าฉันพิมพ์vi test.txt
ให้พิมพ์บันทึกบางส่วนแล้วพิมพ์:q!
; test.txt
จะไม่อยู่
หากไม่มีtouch
ไฟล์ใหม่จะไม่มีอยู่จนกว่าคุณvi
จะบอกให้เขียน
พิจารณาระบบที่มีผู้ใช้หลายคน (บางทีคุณอาจอยู่ในระบบไฟล์ที่ติดตั้งบนเครือข่ายที่ใช้ร่วมกันโดยระบบหลายระบบในแต่ละระบบที่มีผู้ใช้จำนวนมาก) การรันtouch
จะทำให้แน่ใจว่าคุณมีไฟล์ (และคุณสามารถเขียนมัน) และแม้แต่อัปเดตการประทับเวลา ผู้ใช้อื่นที่ต้องการสร้างไฟล์ดังกล่าวจะเห็นว่าคุณเป็นเจ้าของ หากมีอยู่แล้วและผู้ใช้รายอื่นต้องการลบหรือแทนที่พวกเขาจะเห็นว่ามีการแก้ไขเมื่อเร็ว ๆ นี้และอาจคิดว่าสองครั้ง
ไม่มีประโยชน์ที่จะรับtouch
ก่อน; vi
จะสร้างไฟล์หากไม่มีอยู่
คำตอบที่ยอมรับบอกว่ามันตรวจสอบว่าคุณสามารถเขียนที่นั่นก่อนที่จะเสียเวลาในการแก้ไข จริง แต่ตอนนี้คุณจะเสียเวลาพิมพ์touch
ทุกครั้ง การไม่สามารถเขียนที่ไหนสักแห่งนั้นค่อนข้างพิเศษเมื่อเทียบกับความถี่ที่มันใช้งานได้ (ตราบใดที่คุณจำsudo
ไฟล์ที่อยู่นอกโฮมไดเร็กตอรี่ของคุณหรือ/tmp
หรือเข้าสู่ระบบในฐานะรูท)
เพียงเปิดตัวแก้ไขและทำสิ่งที่คุณต้องการจากนั้นลองบันทึกไฟล์ หากยังใช้งานไม่ได้:w!
ให้บันทึกไว้ที่อื่น ( :w ~/asdf
) และแก้ไขปัญหา cat ~/asdf > /mnt/example.txt && rm ~/asdf
เมื่อมีการแก้ไขคุณสามารถคัดลอกเนื้อหาไฟล์จากแฟ้มชั่วคราวไปที่เดิม: เหตุผลที่เราใช้cat
แทนmv
หรือcp
เพื่อใช้การอนุญาตของปลายทางและคุณสมบัติอื่น ๆ
นอกจากนี้สำหรับการใช้งานบรรทัดคำสั่งขั้นสูงบางอย่างที่คุณอาจพื้นหลังvi
ด้วยCtrl+ Zในขณะที่คุณแก้ไขปัญหา (หรือใช้:suspend
หรือ:sus
) และสุดท้ายfg
อีกครั้งเพื่อเรียกใช้คำสั่งในการเขียน
แก้ไข: โพสต์ได้รับการปรับปรุงเพื่อตอบสนองต่อความคิดเห็นของ/ u / G-Man ขอบคุณ!
/mnt/example.txt
ไม่ควรอ่านได้ทั่วโลก แต่ umask ของคุณถูกกำหนดเป็นบางอย่างที่อนุญาตเช่น 22 แล้ว/tmp/asdf
จะสามารถอ่านได้ทั่วโลก หากมีคนอื่นในระบบพวกเขาอาจจะสามารถอ่านสำเนาชั่วคราวของไฟล์ (2) ไฟล์/mnt/example.txt
นี้อาจไม่สามารถเขียนได้ทั่วโลก แต่ถ้ามีคนที่เป็นอันตรายในระบบพวกเขาอาจจะสามารถอ่านสำเนาชั่วคราวของไฟล์และแทนที่ด้วยเวอร์ชันที่แก้ไขก่อนที่คุณจะย้าย / คัดลอก มันกลับไปยังตำแหน่งที่ถูกต้อง … (ต่อ)
/tmp
อาจป้องกันนี้.) (3) คำสั่งmv /tmp/asdf /mnt/example.txt
ทั้งหมดจะทำลายปัจจุบันและแทนที่ด้วย/mnt/example.txt
/tmp/asdf
คุณต้องการที่จะเปลี่ยนเนื้อหาของ/mnt/example.txt
กับเนื้อหา/tmp/asdf
ของ โดยการใช้mv
งานคุณได้ตั้งค่า/mnt/example.txt
ให้มีคุณสมบัติเหมือนกับ/tmp/asdf
- อาจเป็นของคุณและเป็นที่อ่านได้ทั่วโลก มันอาจจะดีกว่าcp /tmp/asdf /mnt/example.txt
หรือcat /tmp/asdf > /mnt/example.txt
มากกว่า … PS (4) คุณสามารถระงับได้vi
โดยพิมพ์:suspend
(หรือ:sus
สั้น ๆ )
/tmp
แต่ก็ไม่มีข้อแก้ตัวใด ๆ ที่จะไม่เขียน~/
แทน ฉันยังไม่ได้คิดว่ามันจะเข้ามาแทนที่คุณลักษณะ ฉันจะแก้ไขโพสต์ของฉันขอบคุณ :)
ไม่มีประโยชน์อะไรเลย vi
จะสร้างไฟล์หากไม่มีอยู่
vi
เป็นโปรแกรมแก้ไขข้อความที่มองเห็น (vi = visual) เป็นภาพที่เปรียบเทียบกับ "ed" ต่อไปซึ่งจะช่วยให้คุณเห็นและเปลี่ยนข้อความทีละบรรทัด
touch
คำสั่งปรับปรุงการประทับเวลาในแฟ้มที่มีอยู่หรือสร้างไฟล์ใหม่ถ้าไฟล์ไม่ได้อยู่แล้ว มันดีสำหรับการทดสอบสิ่งต่าง ๆ ที่ขึ้นอยู่กับการประทับเวลาสูง
ตอนนี้หากไฟล์ของคุณเป็นไฟล์ข้อความหรือยังไม่มีอยู่ให้เปิดด้วย vi แล้วออกคำสั่ง:wq
ไปที่ vi จะมีผลเหมือนกับการแตะไฟล์นั้น นั่นเป็นวิธีเดียวที่คำสั่งทั้งสองจะคล้ายกันเลย
เฉพาะสำหรับใช้กับvi
,มีความจำเป็นในการสร้างไฟล์ก่อนที่คุณแก้ไขมันvi
สามารถใช้ในการสร้างและบันทึกไฟล์ใหม่ อย่างไรก็ตามมีการเรียกบริบทที่ไฟล์จำเป็นต้องมีอยู่ ตัวอย่างเช่นในระบบของฉัน (OS X) ฉันสามารถเปิดตัวแก้ไข GUI ที่เหมาะสม (พิจารณาจากประเภทไฟล์) ดังนี้:
open foo.txt
สิ่งนี้จะเปิดfoo.txt
ใน TextEdit หรือใน emacs หรืออะไรก็ตามที่ฉันระบุว่าเป็นตัวเลือกแก้ไขสำหรับไฟล์ข้อความและแยกกระบวนการเพื่อให้ฉันได้รับพรอมต์ทันที ( open bar.py
อาจเปิดใน IDLE ตัวแก้ไข python ฯลฯ ) หรือฉันสามารถขอ emacs อย่างชัดเจน:
open -a emacs foo.txt
แต่open
ต้องการไฟล์ที่มีอยู่แล้วมิฉะนั้นจะเกิดข้อผิดพลาด ดังนั้นฉันต้องนิยามemacs
ว่าเป็นฟังก์ชั่นเชลล์ต่อไปนี้ซึ่งทำให้ฉันสามารถเขียนemacs foo
เพื่อเปิดใช้งานemacs
GUI ได้แม้ว่าfoo
จะไม่มีอยู่จริง
function emacs ()
{
if [ -n "$1" -a ! -e "$1" ]; then
/usr/bin/touch "$1";
fi;
open -a emacs "$@"
}
vi ใช้เพื่อแก้ไขไฟล์ในฐานะผู้ใช้ในขณะที่ touch สามารถตั้งค่าการประทับเวลาในไฟล์และส่วนใหญ่จะใช้ในสคริปต์และเช่น
อีกวิธีในการสร้างไฟล์คือ:
>newfile.txt
zsh
มันเหมือนกันcat >newfile.txt
และต้องการให้คุณกด Ctrl + D
งานหลักของเขาคือการเปลี่ยนการประทับเวลาของไฟล์
Ofc ยังสร้างไฟล์ด้วย timestamp ปัจจุบันแล้วคุณสามารถแก้ไขไฟล์ได้
VI เป็นตัวแก้ไขข้อความที่ทำในสิ่งที่มันบอกว่าแก้ไขข้อความที่เปิด, บันทึก, แก้ไขไฟล์ ฯลฯ
ทั้งหมดคือรสชาติของผู้ใช้และ habbit: สัมผัสแล้ว vi หรือ vi file.txt สิ่งเดียวกันสีที่แตกต่างกัน
touch
คำสั่งเปลี่ยนวันที่และเวลาของไฟล์ที่มีการประทับเวลาปัจจุบัน
หากไฟล์ไม่มีอยู่ไฟล์จะสร้างไฟล์ใหม่พร้อมวันที่และเวลา
vi
editorใช้เพื่อแก้ไขไฟล์หากไม่มีไฟล์มันจะสร้างไฟล์ใหม่เว้นแต่ว่าเราจะไม่บันทึกไฟล์
touch
ให้คุณทำchmod +x
หลังจากนั้นก่อนทำการแก้ไขซึ่งจะสมเหตุสมผลถ้าคุณเขียน#!/bin/bash
เชลล์สคริปต์