การเปลี่ยนเส้นทางและช่องว่างเอาท์พุท


9

ฉันหวาดระแวงเกี่ยวกับเรื่องนี้ แต่หวังว่ามันจะเป็นคำถามง่าย ๆ :

มีความแตกต่างระหว่าง

cat file1 | egrep -oP "[Mm]y string" > /home/user/file.txt

และ

cat file1|egrep -oP "[Mm]y string">/home/user/file.txt

เช่นจะเป็นสิ่งสำคัญหรือไม่หากฉันมีช่องว่างที่เติมช่องว่าง (|) และเปลี่ยนเส้นทาง (>) ฉันหวาดระแวงจริงๆที่มีช่องว่างที่นั่นช่องว่างนั้นจะจบลงในไฟล์เอาต์พุตเมื่อฉันไม่ต้องการมัน ทุกคนสามารถอธิบายได้หรือไม่ (การใช้ Ubuntu 12 / bash หากมีความสำคัญ)


ข้อแตกต่างเพียงอย่างเดียวคือ a) cosmetic และ b) ความสะดวกสบายเมื่อแก้ไขบรรทัดคำสั่งใน bash - เช่น "word" คั่นด้วยช่องว่างดังนั้นหากไม่มีช่องว่างรอบ ๆ|หรือ>พิมพ์Ctrl-Wเพื่อลบคำว่า "word" ก่อนหน้านี้จะลบมากกว่าที่คุณต้องการ เหมือนกันสำหรับเคอร์เซอร์เคลื่อนไหวการกดแป้นพิมพ์เหมือนEsc-fและEsc-bฯลฯ
CAS

คำตอบ:


8

ในบรรทัดคำสั่งเปลือกunquotedพื้นที่ให้บริการเฉพาะกับคำคั่นระหว่างการแยกวิเคราะห์คำสั่ง พวกเขาจะไม่ส่งผ่านทั้งในข้อโต้แย้งที่คำสั่งไม่เห็นหรือในกระแสอินพุตมาตรฐาน


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