คำถามติดแท็ก echo

คำถามเกี่ยวกับเชลล์บิวด์อินหรือ `/ bin / echo` ไม่ควรใช้แท็กนี้หากคำถามของคุณเกี่ยวกับการพิมพ์ไปยังเครื่องเทอร์มินัลให้ใช้เฉพาะเมื่อคำถามของคุณเฉพาะกับคำสั่ง `echo`

4
ทำไม printf ถึงดีกว่า echo
ผมเคยได้ยินว่าจะดีกว่าprintf echoฉันสามารถจำได้เพียงครั้งเดียวจากประสบการณ์ที่ฉันต้องใช้printfเพราะechoไม่ได้ทำงานเพื่อป้อนข้อความบางส่วนในโปรแกรมบางโปรแกรมใน RHEL 5.8 แต่printfทำ แต่เห็นได้ชัดว่ามีความแตกต่างอื่น ๆ และฉันต้องการสอบถามว่าพวกเขาเป็นอย่างไรและมีกรณีที่เฉพาะเจาะจงเมื่อใดที่จะใช้แบบหนึ่งกับอีกแบบหนึ่ง

4
ฉันจะตั้งค่าตัวแปรสภาพแวดล้อมในบรรทัดคำสั่งและให้มันปรากฏในคำสั่งได้อย่างไร
ถ้าฉันวิ่ง export TEST=foo echo $TEST มันส่งผลฟู ถ้าฉันวิ่ง TEST=foo echo $TEST มันไม่ใช่. ฉันจะรับฟังก์ชั่นนี้โดยไม่ใช้การส่งออกหรือสคริปต์ได้อย่างไร

3
ทำไม“ echo” เร็วกว่า“ touch” มาก?
ฉันพยายามอัปเดตการประทับเวลาเป็นเวลาปัจจุบันของไฟล์ xml ทั้งหมดในไดเรกทอรีของฉัน (เรียกซ้ำ) ฉันใช้ Mac OSX 10.8.5 ในไฟล์ประมาณ 300,000 echoคำสั่งต่อไปนี้ใช้เวลา10 วินาที : for file in `find . -name "*.xml"`; do echo >> $file; done อย่างไรก็ตามtouchคำสั่งต่อไปนี้ใช้เวลา10 นาที ! : for file in `find . -name "*.xml"`; do touch $file; done ทำไมเสียงก้องเร็วกว่าการสัมผัสที่นี่มาก?
116 shell  command  echo 

8
วิธีการลบเส้นด้วยเสียงสะท้อน?
ฉันรู้ว่าฉันสามารถลบสามตัวอักษรสุดท้ายด้วย: echo -ne '\b\b\b' แต่ฉันจะลบบรรทัดทั้งหมดได้อย่างไร ฉันหมายความว่าฉันไม่ต้องการใช้: echo -ne '\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b' ... ฯลฯ ... เพื่อลบเส้นยาว

6
วิธีที่จะสะท้อนปัง!
ฉันพยายามสร้างสคริปต์โดยecho'ing เนื้อหาลงในไฟล์แทนที่จะเปิดมันด้วยเครื่องมือแก้ไข echo -e "#!/bin/bash \n /usr/bin/command args" > .scripts/command เอาท์พุท : bash:! / bin / bash: ไม่พบเหตุการณ์ ฉันได้แยกพฤติกรรมแปลกนี้ไปปัง $ echo ! ! $ echo "!" bash: !: event not found $ echo \#! #! $ echo \#!/bin/bash bash: !/bin/bash: event not found ทำไมปังทำให้สิ่งนี้ "กิจกรรม" ที่ทุบตีหมายถึงอะไร ฉันจะแก้ไขปัญหานี้แล้วพิมพ์ "#! / bin …

3
กำหนดขนาดสูงสุดสำหรับอาร์กิวเมนต์คำสั่งเดียวคืออะไร
ARG_MAXฉันถูกภายใต้การแสดงผลที่ความยาวสูงสุดของอาร์กิวเมนต์เดียวไม่ได้เป็นปัญหาที่นี่ให้มากที่สุดเท่าขนาดรวมของอาร์กิวเมนต์อาร์เรย์โดยรวมขนาดบวกของสภาพแวดล้อมซึ่งจะถูก จำกัด ดังนั้นฉันคิดว่าบางสิ่งเช่นนี้จะประสบความสำเร็จ: env_size=$(cat /proc/$$/environ | wc -c) (( arg_size = $(getconf ARG_MAX) - $env_size - 100 )) /bin/echo $(tr -dc [:alnum:] </dev/urandom | head -c $arg_size) >/dev/null ด้วยความ- 100ที่เกินพอที่จะอธิบายความแตกต่างระหว่างขนาดของสภาพแวดล้อมในเชลล์และechoกระบวนการ แต่ฉันได้รับข้อผิดพลาด: bash: /bin/echo: Argument list too long หลังจากเล่นไปซักพักผมก็พบว่าค่าสูงสุดนั้นเป็นลำดับเลขฐานสิบหกที่เล็กกว่า: /bin/echo \ $(tr -dc [:alnum:] </dev/urandom | head -c $(($(getconf ARG_MAX)/16-1))) \ …
47 kernel  echo  arguments 

4
echo bytes เป็นไฟล์
ฉันกำลังพยายามเชื่อมต่อ rasberry Pi ของฉันกับจอแสดงผลบางตัวโดยใช้บัส i2c ในการเริ่มต้นฉันต้องการเขียนเนื้อหาด้วยตนเองโดยเฉพาะอย่างยิ่งไบต์กับไฟล์ คุณเขียนไบต์ที่ต้องการลงไฟล์ได้อย่างไร? ฉันได้อ่านแล้วและฉันคิดว่าปัญหาของฉันควรได้รับการแก้ไขโดยสิ่งนี้ echo -n -e \x66\x6f\x6f > byteFileForNow อย่างไรก็ตามเมื่อฉันเปิดไฟล์ด้วยนาโนแทนที่จะเป็นฟูฉันเห็น: x66x6fx6f ดังนั้นแบ็กสแลชจึงหนีไปได้ แต่ไม่ใช่ไบท์เอง ฉันก็ลองแบบเดียวกันโดยไม่ใช้-eคราวนี้ฉันเลยจะได้เห็นภาพ\ x66 \ x6f \ x6fแต่กลับเหมือนเดิม ดังนั้นเสียงก้องคือการหลีกเลี่ยงแบ็กสแลช, แบ็กสแลชคนเดียวและแบ็กสแลชโดยไม่คำนึงว่าควรจะเป็นอะไร ความคิดวิธีการแก้ไขปัญหานี้? ตามหน้าคนที่ควรจะทำสิ่งที่ฉันกำลังมองหา


5
การเปลี่ยนเส้นทางเนื้อหาของไฟล์ไปยังคำสั่ง“ echo”
ฉันมีไฟล์ชื่อที่มีเนื้อหาเป็นเพียงสตริงmy_file.txt Helloฉันจะเปลี่ยนเส้นทางเนื้อหาไปยังคำสั่งได้echoอย่างไร ฉันรู้ว่าฉันมีคำสั่งless, cat, more... echoแต่ฉันต้องทำมันด้วย ฉันลองสิ่งนี้: $ cat my_file.txt | echo และสิ่งนี้: $ echo < my_file.txt แต่ในทั้งสองกรณีจะปรากฏเพียงช่องว่างใน stdout ไม่ใช่เนื้อหาของ my_file.txt ฉันจะทำสิ่งนั้นได้อย่างไร

6
'cat' เป็นเชลล์ในตัวหรือเป็นโปรแกรมภายนอกหรือไม่
เมื่อฉันใช้typeคำสั่งเพื่อตรวจสอบว่าcatเป็นเชลล์ในตัวหรือโปรแกรมภายนอกฉันได้รับผลลัพธ์ด้านล่าง: -$ type cat cat is hashed (/bin/cat) -$ นี่หมายความว่าcatเป็นโปรแกรมภายนอก/bin/catหรือไม่ ฉันสับสนเพราะเมื่อฉันตรวจสอบผลลัพธ์ด้านล่างechoเพื่อดูว่ามันเป็นbuilt-inโปรแกรม/bin/echo -$ type echo echo is a shell builtin -$ which echo /bin/echo -$ ดังนั้นฉันไม่สามารถใช้ตรรกะที่/bin/catจำเป็นต้องหมายถึงโปรแกรมภายนอกเพราะเสียงก้องเป็น/bin/echoแต่ยังคงเป็นในตัว แล้วฉันจะรู้ได้อย่างไรว่าcatมันคืออะไร? ในตัวหรือภายนอก?
33 bash  cat  echo  shell-builtin 

5
วิธีการใส่อักขระพิเศษบรรทัดใหม่ลงในไฟล์โดยใช้คำสั่ง echo และโอเปอเรเตอร์การเปลี่ยนเส้นทาง
ฉันต้องการสร้างไฟล์โดยใช้คำสั่ง echo และโอเปอเรเตอร์การเปลี่ยนเส้นทางไฟล์ควรสร้างขึ้นมาไม่กี่บรรทัด ฉันพยายามใส่ newline ด้วย "\ n" ในสตริง: echo "first line\nsecond line\nthirdline\n" > foo แต่ด้วยวิธีนี้จะไม่มีการสร้างไฟล์ที่มีสามบรรทัด แต่เป็นไฟล์ที่มีเพียงหนึ่งบรรทัดและเนื้อหาคำต่อคำของสตริง ฉันจะสร้างโดยใช้คำสั่งนี้เฉพาะไฟล์ที่มีหลายบรรทัดได้อย่างไร?

1
ต่อท้ายข้อความเดียวกันกับไฟล์จำนวนมากโดยใช้ cat หรือ echo?
ฉันจะเขียนเนื้อหาเดียวกันไปยังไฟล์ข้อความจำนวนมากโดยใช้catหรือechoในคำสั่งเดียวได้อย่างไร ตัวอย่างเช่นฉันต้องการเขียน "hello" ไปที่ file1 และ file2 ฉันเหนื่อย: echo "hello" >> file1 file2 แต่มันไม่ทำงาน ฉันจะทำมันได้อย่างไร

1
เหตุใดไฟล์ echo> ใช้เวลาจริงมากกว่า echo | sed> file?
ตัวอย่างด้านล่างทำให้ฉันประหลาดใจ ดูเหมือนว่าจะตอบโต้ได้ง่าย ... นอกเหนือจากความจริงที่ว่ามีเวลาผู้ใช้มากขึ้นสำหรับecho | sedคอมโบ เหตุใดจึงechoใช้เวลามากเมื่อทำงานเพียงอย่างเดียวหรือคำถามควรsedเปลี่ยนสถานะการเล่นอย่างไร ดูเหมือนว่าechoจะต้องทำเสียงสะท้อนที่เหมือนกันในทั้งสองกรณี ... time echo -n a\ {1..1000000}\ c$'\n' >file # real 0m9.481s # user 0m5.304s # sys 0m4.172s time echo -n a\ {1..1000000}\ c$'\n' |sed s/^\ // >file # real 0m5.955s # user 0m5.488s # sys 0m1.580s
28 bash  shell  pipe  time  echo 

4
การพิมพ์ข้อความสีโดยใช้เสียงสะท้อน
ฉันรู้ว่าสำหรับการพิมพ์ข้อความสีโดยใช้ echo เช่นสีแดงรหัสคือ: echo -e "\e[1;31m This is red text \e[0m" และฉันรู้ว่าในตัวอย่างนี้ 31 คือรหัสของสีแดงและจำนวนสีอื่น ๆ คือ: Black 0;30 Dark Gray 1;30 Blue 0;34 Light Blue 1;34 Green 0;32 Light Green 1;32 Cyan 0;36 Light Cyan 1;36 Red 0;31 Light Red 1;31 Purple 0;35 Light Purple 1;35 Brown 0;33 Yellow 1;33 …

5
เหตุใด echo จึงเพิกเฉยอักขระคำพูดของฉัน
คำถามนี้ถูกโยกย้ายจาก Server Fault เนื่องจากสามารถตอบได้ใน Unix & Linux Stack Exchange อพยพ 8 ปีที่แล้ว echoคำสั่งไม่ได้รวมถึงข้อความที่สมบูรณ์แบบที่ฉันให้มัน ตัวอย่างเช่นถ้าฉัน: $ echo ' echo PARAM=` grep $ARG /var/tmp/setfile | awk '{print $2}' ` ' มันเอาท์พุท: echo PARAM=` grep $ARG /var/tmp/setfile | awk {print } ` เครื่องหมายคำพูดเดี่ยว ( ') ที่ฉันมีในคำสั่ง echo ไม่รวมอยู่ด้วย หากฉันเปลี่ยนเป็นเครื่องหมายคำพูดคู่: $ echo " echo …
24 shell  quoting  echo 

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