ผมชอบwatch
คำสั่ง แต่ก็มีข้อ จำกัด ของมัน
ฉันอยากรู้ว่าฉันสามารถเลียนแบบการทำงานของwatch
ด้วยless
หรือไม่ ฉันกำลังมองหาความสามารถในการเลื่อนดูไดเรกทอรีของฉันเป็นหลักเนื่องจากจะได้รับการแก้ไขแบบไดนามิกผ่านสคริปต์ที่ทำงานอยู่
ผมชอบwatch
คำสั่ง แต่ก็มีข้อ จำกัด ของมัน
ฉันอยากรู้ว่าฉันสามารถเลียนแบบการทำงานของwatch
ด้วยless
หรือไม่ ฉันกำลังมองหาความสามารถในการเลื่อนดูไดเรกทอรีของฉันเป็นหลักเนื่องจากจะได้รับการแก้ไขแบบไดนามิกผ่านสคริปต์ที่ทำงานอยู่
คำตอบ:
ในless
คุณสามารถพิมพ์F
เพื่ออ่านต่อท้ายไฟล์ (เช่นtail -f
); คุณสามารถพิมพ์:e
และชื่อไฟล์เพื่อดูไฟล์อื่นได้ แต่น่าเสียดายถ้าคุณป้อนชื่อไฟล์ปัจจุบันless
อย่าโหลดไฟล์ซ้ำ อย่างไรก็ตามมีเคล็ดลับเพื่อให้อ่านไฟล์ปัจจุบันอีกครั้งแนะนำโดยsabgenton : พิมพ์:e
และป้อนชื่อของไฟล์ที่ไม่มีอยู่ ; ที่ทำให้แสดงข้อความแสดงข้อผิดพลาดน้อยกว่าจากนั้นโหลดไฟล์ปัจจุบันอีกครั้ง
หากคุณกำลังมองหาทางเลือกให้กับwatch ls
ที่นี่มีไม่กี่:
auto-revert-mode
จะรีโหลดไฟล์หรือไดเรกทอรีทุก 5 วินาที (ความล่าช้าสามารถกำหนดค่าได้)R
เพื่อโหลด URL (ท้องถิ่น) อีกครั้งless +F
เพียงดูเนื้อหาต่อท้าย ใช้:e nonexistentfile
เพื่ออ่านอินพุตที่เปลี่ยนแปลงอย่างสมบูรณ์อีกครั้ง
R
ไม่ไม่สามารถรีเฟรชไฟล์ได้อย่างน่าเชื่อถือ มันรีเฟรชหน้าจอและเช็ดบัฟเฟอร์อินพุตบางส่วน แต่จริงๆแล้วมันไม่ได้โหลดข้อมูลจากไฟล์ในทุกสถานการณ์ (เฉพาะในกรณีที่ไฟล์มีขนาดใหญ่ฉันไม่ได้เจาะลึกเข้าไปในโค้ด)
Shift+Fจะทำให้คล้ายกับless
tailf
กล่าวคือจะได้รับการรีเฟรชหากมีข้อมูลเพิ่มเติมต่อท้ายไฟล์
less
จะไม่แสดงการเปลี่ยนแปลงเหล่านั้น
$COMMAND | less
ประสบการณ์ของฉันอยู่ที่นี้ฆ่าคำสั่งท่อข้อมูลหากคุณกำลังใช้ ฉันสงสัยว่ามีวิธีที่ดีรอบนี้? คุณสามารถทำสิ่งต่าง ๆ เช่น$COMMAND > /tmp/file & less /tmp/file
แต่ไม่ดีมาก
เพียงพิมพ์:
less +F filename
นี่เป็นการเลียนแบบการกด "F" ภายในเครื่องมือแก้ไข
alias check="less +F"
.bashrc
man
หน้าสามารถให้ข้อมูลได้มาก อย่ากลัวพวกเขา ในบรรดาทุกอย่างอื่นman less
บอกว่าคุณสามารถใช้R
คำสั่งต่อไปนี้:
R Repaint the screen, discarding any buffered input. Useful if the file is changing while it is being viewed.
(ฉันรู้ว่าคำถามนี้มีอายุมากกว่า 6 ปี แต่เกิดขึ้นจากการค้นหาของ Google ดังนั้นฉันจึงไม่ใช่คนเดียวที่คลิกลิงก์เพื่อมาที่นี่)
less
ไม่ได้เปิดไฟล์อีกครั้งโดยใช้ชื่อไฟล์ - เช่นเมื่อไอโหนดเปลี่ยนไฟล์ (เช่นในการเขียนทับไฟล์โดยใช้mv
) จากนั้นเนื้อหาไฟล์เก่ายังคงอยู่ (อาจเป็นไอโหนดเก่า - 2. บรรทัดแรกที่แสดงอาจเริ่มที่ออฟเซ็ตไบต์เดียวกันในเนื้อหาไฟล์ต้นฉบับ ดังนั้นเมื่อความยาวของบรรทัดเปลี่ยนไปบรรทัดแรกที่แสดงอาจไม่สมบูรณ์และบรรทัดที่แสดงอาจเลื่อนขึ้น / ลง
R
ไม่ได้ผลเสมอไป ดูunix.stackexchange.com/questions/4351/…
ปุ่ม "F" เมื่อทำงานless
จะทำ "ติดตาม" คล้ายกับtail -f
แต่ฉันไม่แน่ใจว่าจะบรรลุสิ่งที่คุณกำลังมองหาที่นี่หรือไม่
ปกติแล้วฉันแค่พิมพ์Gเพื่อปรับเอาท์พุทแบบครั้งเดียว ฉันพบว่ามีประโยชน์มากกว่าระบบไฟล์เครือข่ายเช่น CIFS
man less
: 'G หรือ> หรือ ESC-> ไปที่บรรทัด N ในไฟล์โดยตั้งค่าเริ่มต้นที่ส่วนท้ายของไฟล์' ฉันลบความคิดเห็นที่ผิดเก่าของฉันที่นี่ขอโทษสำหรับพวกเขา
less
Mark Nudelman ตอบกลับข้อความต่อไปนี้: "คำสั่ง G โดยปกติจะไม่บังคับให้อ่านไฟล์ซ้ำเหมือนคำสั่ง R อาจดูเหมือนว่าถ้าปลายไฟล์ยังไม่ถูกอ่านเมื่อ G ถูกเรียกใช้ดังนั้นการกระโดดไปที่จุดสิ้นสุดของไฟล์จะต้องอ่านข้อมูลที่นั่นเป็นครั้งแรกตัวอย่างเช่นหากคุณข้ามไปยังจุดสิ้นสุดด้วย G จากนั้นข้ามกลับไปที่จุดเริ่มต้นด้วย 1G จากนั้นโปรแกรมอื่นจะแก้ไขข้อมูลที่ จุดสิ้นสุดของไฟล์ (โดยไม่เปลี่ยนความยาว), "(ต่อ)
คุณสามารถใช้เสียงเรียกเข้าเพื่ออ่านไฟล์จากนั้นเพิ่มการแมปต่อไปนี้ลงใน.vimrc
ไฟล์ของคุณและคุณสามารถโหลดไฟล์ได้อย่างง่ายดายด้วย,r:
let mapleader = ","
nnoremap <leader>r :edit <CR>
หมายเหตุหากคุณแก้ไขไฟล์แล้วเสียงเรียกเข้าจะบ่น เพียงแค่เปลี่ยนเป็น
let mapleader = ","
nnoremap <leader>r :edit! <CR>
เพื่อเพิกเฉยต่อการเปลี่ยนแปลง
vim
จากมือที่เย็นและตายของคุณ บริบทของคำถามนั้นเกี่ยวกับless
แต่ในฐานะที่เป็นคนที่มีแนวโน้มเดียวกับตัวเองฉันก็เห็นอกเห็นใจ!
R
สำหรับการทาสีใหม่จะไม่โหลดไฟล์ซ้ำ [1]
วิธีหลีกเลี่ยงปัญหาที่จะโหลดไฟล์hq
ซ้ำอีกครั้งคือกดซึ่งจะเปิดหน้าวิธีใช้จากนั้นออกจาก มันมีผลข้างเคียงของการบังคับให้โหลดไฟล์ซ้ำ
[1] ต่อไปนี้เป็นตัวอย่างบางส่วนของสถานการณ์ที่R
ต้องทำและไม่โหลดซ้ำ:
>
และ>>
การเปลี่ยนแปลง: รับการโหลดซ้ำsed -i
, gEdit, TextEdit: อย่าโหลดซ้ำvi
การเปลี่ยนแปลง: โหลดใหม่vi
การเปลี่ยนแปลง: อย่าโหลดซ้ำฉันเชื่อว่าความแตกต่างนั้นเกิดขึ้นกับการเปลี่ยนแปลง inode (คุณสามารถตรวจสอบได้ls -i foo.txt
) หากไอโหนดเปลี่ยนไปR
จะไม่ทำงาน
คุณสามารถไปป์มันtail -f
แทนมันจะส่งผลให้คุณตามเอาท์พุท คุณจะสูญเสียความสามารถในการย้าย (เลื่อน) ผ่านเอาต์พุตของคุณ
หากคุณไม่รังเกียจที่จะใช้เบราว์เซอร์คุณสามารถเปิดเว็บเซิร์ฟเวอร์Algernonด้วยคำสั่งนี้:
algernon -a -t /directory/name
รายการของไฟล์จะถูกแสดงและรีเฟรชอัตโนมัติที่http: // localhost: 3000 /
less
ฉันเพิ่งพบกระทู้นี้เหมือนคนอื่น ฉันต้องการเพิ่มวิธีแก้ปัญหาเมื่อคุณอยู่ท้ายไฟล์แล้วการใช้ 'g' ตามด้วย 'G' จะบังคับให้รีเฟรชไฟล์
ฉันลงเอยด้วยการสร้างปุ่มมาโครสำหรับสิ่งนี้ในโปรแกรมเทอร์มินัลของฉัน (SecureCRT) มาโครคือ 'gG'
tail -f foo.log | grep bar
และสามารถเปลี่ยนคำสั่ง grep แบบไดนามิกได้ด้วยการรีสตาร์ทท่อท้าย / grep