คำสั่งเพื่อเพิ่มบรรทัดลงในไฟล์ข้อความโดยไม่ต้องเปิดเอดิเตอร์


147

สมมติว่าฉันมีบรรทัดที่ฉันต้องการเพิ่มลงในไฟล์โดยไม่ต้องเปิดโปรแกรมแก้ไข

ฉันจะต่อท้ายบรรทัดนี้ได้อย่างไร

alias list='ls -cl --group-directories-first'

ไฟล์นี้

config.fish

คำตอบ:


237

คุณสามารถผนวกบรรทัดของข้อความไปยังแฟ้มโดยใช้>>ผู้ประกอบการ:

echo "hello world" >> my_file.txt

หรือในกรณีของคุณ

echo "alias list='ls -cl --group-directories-first'" >> config.fish

โปรดรับทราบของชนิดที่แตกต่างของคำพูด


25
ฉันใช้ echo ด้วยตัวเอง แต่ระวังถ้าคุณระบุเพียงอันเดียว>ไฟล์จะถูกตัดทอน สำหรับคำสั่งที่ปลอดภัยยิ่งขึ้นคุณสามารถใช้ sed:sed -i '$a hello world' filename
กลับภายใน

12
คำอธิบาย: -iจะอัปเดตไฟล์ (มิฉะนั้นจะพิมพ์ผลลัพธ์เป็น stdout) $คือ regex ที่จะตรงกับจุดสิ้นสุดของไฟล์และต่อaท้ายข้อความต่อไปนี้เป็นชื่อไฟล์
กลับใน

echo "hello world" >> my_file.txtไม่ได้สร้างบรรทัดสุดท้ายใหม่ด้วยHWแต่เพิ่มลงในสตริงของบรรทัดสุดท้าย
Timo

HW@timo คืออะไร
7wp

อาจจะเป็น "Hello World" @ 7wp :) มันคือการechoเพิ่มตัวแบ่งบรรทัด (ทำให้เป็นเส้นตรงข้ามกับตัวละครเพียงไม่กี่ตัว) -nคุณสามารถปิดแบ่งบรรทัดในตอนท้ายด้วย
Stefano Palazzo

3

มีวิธีการเพิ่มเติมในการต่อท้ายไฟล์โดยไม่ต้องเปิดโปรแกรมแก้ไขข้อความ

  • tee -a config.fish <<< "alias list='ls -cl --group-directories-first'"
  • awk 'BEGIN{ printf "alias list=\x27ls -cl --group-directories-first\x27\n" >> "config.fish" }'
  • sed -i '$a alias list='"'"'ls -cl --group-directories-first'"'" config.fish

1

เมื่อเพิ่มคำตอบของ Stefanoคุณยังสามารถใช้cat:

  • ใช้ heredoc:

    $ cat >> config.fish <<'EOF'
    > alias list='ls -cl --group-directories-first'
    > EOF

    <<'EOF'หมายถึง "ทำสิ่งต่อไปนี้เป็นอินพุตจนกว่าคุณจะถึงบรรทัดที่เป็นเพียงแค่EOF" คำพูดหมายถึงการป้อนข้อมูลอย่างแท้จริง

  • หรือการป้อนบรรทัดบน stdin:

    $ cat >> config.fish

    จากนั้นวางหรือพิมพ์ในบรรทัดกดEnterเพื่อไปที่บรรทัดใหม่จากนั้นกด Ctrl + D เพื่อทำเครื่องหมายสิ้นสุด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.