วิธีการหลีกเลี่ยงการขึ้นบรรทัดใหม่ใน commandline?


2

ฉันต้องทำสิ่งนี้:

$ echo '
File
Contents
' > my-file

ปัญหาคือไฟล์ที่เป็นผลลัพธ์มีการขึ้นบรรทัดใหม่ที่จุดเริ่มต้นและตอนท้าย

ฉันลองสิ่งนี้ แต่ไม่ได้ผล:

$ echo '\
File
Contents\
' > my-file

ฉันจะทำอย่างไร

คำตอบ:


3

บางทีคุณสามารถใช้เอกสาร HERE ได้หรือไม่

cat << '==end' > my-file
File
Contents
==end

ใช่มันดูดี แต่จะส่งผลลัพธ์ไปยังไฟล์ได้อย่างไร ตอนนี้มันเป็นเพียงการพิมพ์บนหน้าจอ
ChocoDeveloper

@ChocoDeveloper: ใช้การเปลี่ยนเส้นทาง อัปเดตคำตอบแล้ว
choroba

2

อีกคำตอบง่ายๆที่ไม่ได้กล่าวถึงคือ:

echo -e "Line 1\nLine 2"

-eตัวเลือกที่ทำให้เกิดechoการตีความลำดับทับขวาหลบหนี


1
printf "%s\n%s\n%s\n" "Line 1", "Line 2", "Line 3"

ฉันต้องสามารถวางเนื้อหาไฟล์โดยไม่มีการเปลี่ยนแปลงใด ๆ ฉันไม่สามารถแยกมันออกเป็นบรรทัดได้ และฉันต้องสามารถเรียกใช้งานสิ่งนี้เป็นคำสั่งได้ฉันไม่ต้องการเปิดเป็นกลุ่มและวางด้วยตนเอง
ChocoDeveloper

ฉันคิดว่าฉันไม่เข้าใจสิ่งที่คุณต้องการจะทำ คุณต้องการคัดลอกไฟล์ไปยังไฟล์อื่นหรือไม่?
ปีเตอร์

ฉันต้องการคัดลอก / วางเนื้อหาไฟล์ (เช่น: สิ่งที่ฉันไม่ต้องการเขียนด้วยมือทุกครั้งเช่นไฟล์กำหนดค่า) ลงในคำสั่งเพื่อสร้างไฟล์เพื่อทำการติดตั้งโดยอัตโนมัติ
ChocoDeveloper

ตัวอย่างที่ดีคือใช้ grep ตัวอย่างเช่นคุณค้นหาบรรทัดที่คุณต้องการแล้วนับจำนวนบรรทัดที่คุณต้องการคัดลอก: grep myline -A6จะคัดลอกจาก "myline" และ 6 บรรทัดถัดไป
ปีเตอร์

1

ฉันจะใช้catแทน:

cat > file

วางสิ่งที่คุณต้องการเข้าไปfileและจบด้วยCtrl+dบรรทัดว่าง


แต่ฉันต้องการทำทุกอย่างด้วยคำสั่งเดียว หากฉันสามารถวางไฟล์ฉันก็สามารถวางลงในไฟล์ที่ฉันต้องการ
ChocoDeveloper

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