ฉันจะแก้ไขไฟล์ได้อย่างไรหากไม่มี vi, vim, joe, etc?


35

มีวิธีแก้ไขไฟล์หรือไม่หากไม่มี vi, vim, joe, mcedit? กล่าวอีกนัยหนึ่งมีวิธีแก้ไขไฟล์โดยใช้แค่คำสั่ง shell หรือไม่?


1
ฉันไม่มีนาโนด้วย!
Eduard Florinescu

1
เราเตอร์ของมัน แต่ยังผมเคยเห็นยังเป็นประตูที่กำหนดเองในสถานการณ์เช่นนี้ :)
เอดูอาร์ Florinescu

3
ทำสำเนาไฟล์ที่คุณต้องการแก้ไข แล้วทำcat fileตามด้วยcat >fileและจัดเรียงชิ้นส่วนที่มีการตัด + วางและ / ctrl-dหรือการพิมพ์เสร็จด้วย
ott--

7
เรื่องนี้เกิดขึ้นกับฉันในนักเทียบท่า .. มันเรียบง่ายมาก ตอนนี้ฉันจะทำยังไงกับฉัน VM เป็นชั่วคราวฉันไม่สามารถ ssh หรือ ftp ได้ฉันต้องใช้การเปลี่ยนเส้นทางและแฮ็กอย่าง sed เพื่อเปลี่ยนไฟล์บางไฟล์ มันเป็นความท้าทายที่ยิ่งใหญ่ มาดูกันว่าเราพึ่งบรรณาธิการได้อย่างไร: P
code ninja

3
หากเป็นภาชนะบรรจุหรือเข้าถึงได้ผ่านทางบางโฮสต์อื่น ๆ echo <<EOF > new.file [paste here] EOFที่คุณสามารถใช้ แก้ไขเนื้อหาของไฟล์บนพีซีโฮสต์
pztrick

คำตอบ:


18

ในอินสแตนซ์นั้นฉันจะลองถ่ายโอนไฟล์ออกและแก้ไขไฟล์ในคอมพิวเตอร์เครื่องอื่นแล้วโอนกลับ หากคุณมี ssh คุณควรมี scp (ฉันหวังว่า) ดังนั้นคุณควรจะสามารถดันไฟล์เข้าและออกได้ หากไม่มีคุณสามารถค้นหา ftp เพื่อถ่ายโอนไฟล์เข้าและออก

ถ้าไม่เช่นนั้นฉันคิดว่าตัวเลือกที่ดีที่สุดของคุณคือการลองและใช้ประโยชน์จากการเปลี่ยนเส้นทาง cat, grep, sed, echo และ I / O (โดยเฉพาะต่อท้ายด้วย>>) และไฟล์ชั่วคราวจำนวนมาก

แม้ว่าคุณจะสามารถเข้าถึง Perl (หรือสิ่งที่คล้ายกัน) คุณสามารถเรียกใช้โดยไม่มีข้อโต้แย้งและมันจะช่วยให้คุณป้อนแหล่งสคริปต์จากอินพุตมาตรฐาน เมื่อคุณกด ctrl + d ก็จะสามารถเรียกใช้สคริปต์ คุณสามารถใช้วิธีการนั้นเพื่อสร้างไฟล์ มันจะมีประสิทธิภาพมากกว่าแฮ็คบางอย่างในบรรทัดคำสั่งตามที่ฉันพูดถึงก่อนหน้านี้


ไม่ sshd แต่ฉันมี telnetd
Eduard Florinescu

จากนั้นคุณสามารถ ftp ได้ไหม
Ben Richards

1
ฉันสามารถใช้การเปลี่ยนเส้นทาง cat, grep, echo และ I / O (โดยเฉพาะผนวกกับ >>) แต่ไม่มีความ
ยุ่งยาก

2
Ftp ใช้งานได้แล้ว :) ตอนนี้ฉันต้องดูว่าเราเตอร์นี้มีอะไรที่เขียนได้บ้าง
Eduard Florinescu

3
หากคุณเชื่อมต่อกับอุปกรณ์ของคุณผ่าน telnet ฉันคิดอย่างจริงจังเกี่ยวกับการจัดเรียงไฟล์ไปยังเทอร์มินัล (ด้วยบัฟเฟอร์ backscroll ที่มีขนาดใหญ่พอ) คัดลอก / วางสิ่งทั้งหมดลงในโปรแกรมแก้ไขในท้องถิ่นทำการเปลี่ยนแปลงของคุณ สิ่งที่จะทำให้มันกลายเป็นชุดของคำสั่ง echo ที่จะเขียนไฟล์ทดแทน
afrazier

4

ผมคิดว่าคุณสามารถทำในสิ่งที่คุณต้องการด้วยgrepและperl- มองหาเส้นที่คุณต้องการด้วยการgrepแก้ไขที่สอดคล้องกับperl( perlสามารถทำหน้าที่เหมือนการเปลี่ยนที่ยิ่งใหญ่สำหรับsed) diff filename filename.newแล้วยืนยันว่าคุณไม่ได้ทำการเปลี่ยนแปลงมากกว่าที่คุณตั้งใจด้วยการทำ ถ้าเป็นเช่นนั้นทำการเปลี่ยนแปลงอย่างถาวร -mv filename.new filename


3

สมมติว่าคุณเป็น SSH เข้าสู่เราเตอร์ของคุณคุณยังสามารถใช้ยูทิลิตี้ต่าง ๆ เพื่อถ่ายโอนไฟล์กลับไปที่สี่ไปยังคอมพิวเตอร์ / เราเตอร์ของคุณ คุณสามารถดาวน์โหลดสำเนาบนพีซีของคุณปรับเปลี่ยนแล้ว SSH กลับไปที่เราเตอร์ผ่าน SFTP (ดูPuttyหรือWinSCPหากคุณเป็นผู้ใช้ Windows)

หากคุณใช้เฟิร์มแวร์ที่กำหนดเองบนเราเตอร์ / เกตเวย์อย่างไรก็ตามคุณอาจโชคดี มีแพ็คเกจ Optware ต่างๆที่มีตัวแก้ไขข้อความแบบง่าย (และเล็ก) ทั้งนี้ขึ้นอยู่กับความต้องการของคุณคุณจะได้รับnanoแพคเกจหรือเพียงแค่ไปซึ่งประกอบด้วยbusyboxvi


2

วิธีหนึ่งในการส่งออกผลลัพธ์ของเสียงสะท้อน

echo "foo" > bar.txt

สิ่งนี้จะทำให้ไฟล์ชื่อ bar.yxy ที่มีข้อความ "foo"


3
นั่นไม่ใช่การแก้ไขจริงๆ
DavidPostill

2
ทำงานให้เสร็จสมบูรณ์จนกว่าคุณจะสามารถแก้ไขได้
แลนดอน

1

คุณล้าง / bin หรืออะไรบางอย่าง? มิฉะนั้นคุณอาจแฮ็คบางอย่างพร้อมกับยูทิลิตี้ข้อความในGNU Coreutilsที่ควรเป็นมาตรฐานในระบบลินุกซ์

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