คำสั่ง linux cat สามารถใช้สำหรับเขียนข้อความเป็นไฟล์ได้หรือไม่?


144

เป็นเช่นนี้

cat "Some text here." > myfile.txt

ไปได้หรือไม่ เช่นนี้เนื้อหาของmyfile.txtตอนนี้จะถูกเขียนทับเพื่อ:

Some text here.

สิ่งนี้ไม่ได้ผลสำหรับฉัน แต่ยังไม่ทิ้งข้อผิดพลาดใด ๆ

มีความสนใจเป็นพิเศษในcatโซลูชันที่ใช้ (ไม่ใช่ vim / vi / emacs เป็นต้น) ตัวอย่างทั้งหมดแสดงออนไลน์ที่catใช้ร่วมกับอินพุตไฟล์ไม่ใช่ข้อความดิบ ...

คำตอบ:


184

นั่นคือสิ่งที่echoทำ:

echo "Some text here." > myfile.txt

13
โบนัส: echo "Some text here." >> myfile.txtเพื่อผนวกท้ายไฟล์
Jim Aho

6
หากคุณต้องการใช้เครื่องหมายคำพูดคู่ในข้อความของคุณให้ครอบคลุมทุกสิ่งด้วยเครื่องหมายคำพูดเดี่ยว สิ่งนี้มีประโยชน์สำหรับ. json และecho '{"info1": "123456"}' > info.json
ไลค์

165

ดูเหมือนว่าคุณกำลังมองหาเอกสารที่นี่

cat > outfile.txt <<EOF
>some text
>to save
>EOF

บน linux Kernel 2.6.32 centos 6 ฉันต้องตัด>ตัวอักษรเพื่อให้ได้ผลลัพธ์ที่คาดหวัง
ecoe

4
>ตัวอักษรแทนค่าเริ่มต้นของ$PS2; มันจะปรากฏขึ้นโดยอัตโนมัติและไม่ได้ตั้งใจจะพิมพ์ หากคุณมีค่าต่างกันสำหรับ$PS2สิ่งนั้นจะปรากฏขึ้นแทน
gbrener


10

ฉันใช้รหัสต่อไปนี้เพื่อเขียนข้อความดิบไปยังไฟล์เพื่ออัปเดตการตั้งค่า CPU ของฉัน หวังว่านี่จะช่วยได้! สคริปต์:

#!/bin/sh

cat > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor <<EOF
performance
EOF

cat > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor <<EOF
performance
EOF

สิ่งนี้จะเขียนข้อความ "ประสิทธิภาพ" ไปยังไฟล์ทั้งสองที่กล่าวถึงในสคริปต์ข้างต้น ตัวอย่างนี้เขียนทับข้อมูลเก่าในไฟล์

รหัสนี้ถูกบันทึกเป็นไฟล์ (cpu_update.sh) และเพื่อให้มันรันได้:

chmod +x cpu_update.sh

หลังจากนั้นคุณสามารถเรียกใช้สคริปต์ด้วย:

./cpu_update.sh

หากคุณไม่ต้องการเขียนทับข้อมูลเก่าในไฟล์ให้สลับออก

cat > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor <<EOF

กับ

cat >> /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor <<EOF

การดำเนินการนี้จะเพิ่มข้อความของคุณต่อท้ายไฟล์โดยไม่ลบข้อมูลอื่นที่มีอยู่ในไฟล์


8
cat > filename.txt

ป้อนข้อความจนกว่า EOF เพื่อบันทึกการใช้ข้อความ: ctrl + d

หากคุณต้องการอ่านไฟล์. txt นั้นให้ใช้

cat filename.txt

และสิ่งหนึ่ง. txt ไม่จำเป็นสำหรับการอ้างอิงของคุณ



5

คุณสามารถทำสิ่งนี้ได้เช่นกัน:

user@host: $ cat<<EOF > file.txt
$ > 1 line
$ > other line
$ > n line
$ > EOF
user@host: $ _

ฉันเชื่อว่ามีวิธีการใช้งานมากมาย


4

เขียนข้อความหลายบรรทัดพร้อมตัวแปรสภาพแวดล้อมโดยใช้echo:

echo -e "
Home Directory: $HOME \n
hello world 1 \n
hello world 2 \n
line n... \n
" > file.txt 


3

อีกวิธีในการเขียนข้อความลงไฟล์โดยใช้ cat น่าจะเป็นแบบนี้

cat >file.txt <<< Write something here

คำสั่งนี้มีประโยชน์จริง ๆ เมื่อคุณพยายามเขียนเอาต์พุตของคำสั่งลงในไฟล์ ตัวอย่างเช่นcat > docker-inspect.txt <<< นักเทียบท่าจะตรวจสอบภาพ ``
Prasanth Ganesan

2

catยังสามารถใช้ต่อไปนี้|เพื่อเขียนไปยังไฟล์เช่นไปป์ฟีดแมวกระแสข้อมูล


1

ทางออกสำหรับปัญหาของคุณคือ:

echo "ข้อความบางส่วนไปที่นี่"> filename.txt

แต่คุณสามารถใช้คำสั่ง cat หากคุณต้องการเปลี่ยนเส้นทางเอาต์พุตของไฟล์ไปยังไฟล์อื่นหรือถ้าคุณต้องการผนวกเอาต์พุตของไฟล์ไปยังไฟล์อื่น:

cat filename> newfile - เพื่อเปลี่ยนเส้นทางของชื่อไฟล์ไปยัง newfile

cat filename >> newfile - เพื่อผนวกเอาท์พุทชื่อไฟล์ไปยัง newfile

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