ฉันกำลังมองหาคำสั่ง 'หาง' ที่เทียบเท่ากับ Unix ที่จะให้ฉันดูเอาต์พุตของไฟล์บันทึกในขณะที่กำลังเขียน
ฉันกำลังมองหาคำสั่ง 'หาง' ที่เทียบเท่ากับ Unix ที่จะให้ฉันดูเอาต์พุตของไฟล์บันทึกในขณะที่กำลังเขียน
คำตอบ:
ผมขอแนะนำให้ติดตั้งบางอย่างเช่นGNU สาธารณูปโภคสำหรับ Win32 มันมีรายการโปรดมากที่สุดรวมถึงหาง
tail
กับไฟล์ 2GB และมันสำลัก more
ทำงานได้ดี (อย่างน้อยก็ดูจุดเริ่มต้นของไฟล์)
head
แต่ไม่tail
... ความคิด?
tail
:)
หากคุณใช้ PowerShell นี่จะใช้งานได้:
Get-Content filenamehere -Wait -Tail 30
การโพสต์ความคิดเห็นของ Stefan จากด้านล่างดังนั้นผู้คนจึงไม่ควรพลาด
PowerShell 3 แนะนำพารามิเตอร์ -Tail เพื่อรวมเฉพาะบรรทัด x สุดท้าย
tail
มีประโยชน์) (2) มันไม่เป็นไดนามิกตามที่ฉันต้องการ (อาจเป็นเพราะระบบปฏิบัติการ / ระบบไฟล์เปลี่ยนแปลงระหว่างการตั้งค่าและโปสเตอร์อื่น ๆ ?) นั่นคือฉันพบว่าGet-Content
บางครั้งเชลล์ที่ทำไม่ได้อัปเดตจนกว่าฉันจะทำงานdir
ในเชลล์อื่น
Get-Content -Tail 100 -Wait .\logfile.log
?
ฉันใช้Baretailสำหรับการปรับใน Windows เสมอ ฟรีและสวยดี
แก้ไข: สำหรับคำอธิบายที่ดีขึ้นของ Baretail ดูคำถามนี้
คุณสามารถรับส่วนท้ายของCygwinได้
ทุกคนที่สนใจหางDOS CMD โดยใช้ชุดคำสั่ง (ดูด้านล่าง)
มันไม่ใช่นายอำเภอและบางครั้งก็ทำซ้ำบรรทัด
การใช้งาน: tail.bat -d tail.bat -f -f
@echo off
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
rem tail.bat -d <lines> <file>
rem tail.bat -f <file>
rem ****** MAIN ******
IF "%1"=="-d" GOTO displayfile
IF "%1"=="-f" GOTO followfile
GOTO end
rem ************
rem Show Last n lines of file
rem ************
:displayfile
SET skiplines=%2
SET sourcefile=%3
rem *** Get the current line count of file ***
FOR /F "usebackq tokens=3,3 delims= " %%l IN (`find /c /v "" %sourcefile%`) DO (call SET find_lc=%%l)
rem *** Calculate the lines to skip
SET /A skiplines=%find_lc%-!skiplines!
rem *** Display to screen line needed
more +%skiplines% %sourcefile%
GOTO end
rem ************
rem Show Last n lines of file & follow output
rem ************
:followfile
SET skiplines=0
SET findend_lc=0
SET sourcefile=%2
:followloop
rem *** Get the current line count of file ***
FOR /F "usebackq tokens=3,3 delims= " %%l IN (`find /c /v "" %sourcefile%`) DO (call SET find_lc=%%l)
FOR /F "usebackq tokens=3,3 delims= " %%l IN (`find /c /v "" %sourcefile%`) DO (call SET findend_lc=%%l)
rem *** Calculate the lines to skip
SET /A skiplines=%findend_lc%-%find_lc%
SET /A skiplines=%find_lc%-%skiplines%
rem *** Display to screen line when file updated
more +%skiplines% %sourcefile%
goto followloop
:end
ping 127.0.0.1 -n 2 > nul
goto followloop
มันส่งสองปิงและรอ 1 ในวินาทีระหว่าง ดังนั้นมันจะปล่อยให้ซีพียูมีชีวิตอยู่!: D
timeout /t 2
?
มีตัวเลือกค่อนข้างมาก แต่ทั้งหมดมีข้อบกพร่องที่มีคุณสมบัติขั้นสูง
GnuWin32 หางเป็นรถ ( อัลฟ่า บีตา แกมมา ) - สิ่งที่ต้องการ -f เพียงธรรมดาจะไม่ได้ทำงาน
UnxUtils tailดูดีขึ้น (-f ทำงานได้ แต่ --pid ไม่ได้ -n แต่ไม่ใช่ - lines = n ล้มเหลวด้วย -f) แต่ดูเหมือนจะเป็นโปรเจ็กต์ที่ตายแล้ว
Cygwinเป็นข้าวต้มน่าเกลียดขนาดใหญ่อาจจะแค่ใช้ DLL และแพ็คเกจ coreutils - แต่ก็ยังมีปัญหาเช่น --pid ไม่ทำงานกับกระบวนการ win32 ดั้งเดิม
ฉันเคยใช้ หางสำหรับ Windows แน่นอนว่าไม่หรูหราเท่าการใช้งาน
หางแต่คุณใช้ Windows ;)
ด้วย Windows PowerShell คุณสามารถใช้:
Get-Content <file> -Wait
ฉันไม่ได้เห็นผู้เชี่ยวชาญด้านบันทึกข้อมูลทุกคำตอบที่นี่
มันปรับแต่งได้และค่อนข้างดีสำหรับการบันทึกไฟล์ จนถึงตอนนี้มันเป็นโปรแกรมดูบันทึกกราฟิก Windows ที่ดีที่สุดสำหรับฉัน
น่าเสียดายที่ซอฟต์แวร์นี้ไม่สามารถใช้งานได้อีกต่อไป คุณสามารถอ่านเกี่ยวกับเรื่องarchive.org
หากคุณไม่ต้องการติดตั้งอะไรเลยคุณสามารถ "สร้างไฟล์แบทช์ของคุณเอง" ซึ่งทำงานจากคำสั่ง Windows มาตรฐาน ต่อไปนี้เป็นตัวชี้วิธีดำเนินการ
1) ใช้yourinput.file ของ find / c / v ""รับจำนวนบรรทัดในไฟล์อินพุตของคุณ ผลลัพธ์เป็นดังนี้:
---------- T.TXT: 15
2) ใช้สำหรับ / fแยกวิเคราะห์เอาต์พุตนี้เพื่อรับหมายเลข 15
3) ใช้set / aคำนวณจำนวนบรรทัดหัวเรื่องที่ต้องข้าม
4) ใช้สำหรับ / f "skip = n"ข้ามส่วนหัวและ echo / ประมวลผลส่วนท้าย
ถ้าฉันหาเวลาฉันจะสร้างไฟล์แบตช์ดังกล่าวและโพสต์กลับมาที่นี่
tail.bat
REM tail.bat
REM
REM Usage: tail.bat <file> <number-of-lines>
REM
REM Examples: tail.bat myfile.txt 10
REM tail.bat "C:\My File\With\Spaces.txt" 10
@ECHO OFF
for /f "tokens=2-3 delims=:" %%f in ('find /c /v "" %1') do (
for %%F in (%%f %%g) do set nbLines=%%F )
set /a nbSkippedLines=%nbLines%-%2
for /f "usebackq skip=%nbSkippedLines% delims=" %%d in (%1) do echo %%d
ฉันใช้Mtailเมื่อเร็ว ๆ นี้และดูเหมือนว่าจะทำงานได้ดี นี่คือประเภท GUI เช่น baretail ที่กล่าวถึงข้างต้น
ดาวน์โหลดคำสั่งหางเป็นส่วนหนึ่งของWindows Server 2003 Resource Kit Tools
จากไมโครซอฟท์เอง
ลองWindows Services สำหรับ UNIX ให้เปลือกหอย, awk, sed, ฯลฯ รวมทั้งหาง
อัปเดต -: น่าเสียดายที่ในปี 2019 ระบบนี้ไม่สามารถใช้งานได้ใน Microsoft Download Center
ฉันชอบ TailMe เพราะมีความเป็นไปได้ที่จะดูไฟล์บันทึกหลายไฟล์พร้อมกันในหน้าต่างเดียว: http://www.dschensky.de/Software/Staff/tailme_en.htm
อีกตัวเลือกหนึ่งคือติดตั้งMSYS (ซึ่งมีน้ำหนักเบากว่า Cygwin มากกว่า)
type
งานของ DOS เช่น * nux cat
แต่ก็เหมือนcat
กันมันทำการถ่ายโอนไฟล์ทั้งหมดดังนั้นมันจึงไม่ใช่ของจริงtail
แต่มันจะมีวางจำหน่ายในไม่tail
กี่ชั่วโมงโดยไม่ต้องดาวน์โหลด / ติดตั้งตัวแทนที่แท้จริง
ฉันเพิ่งเขียนสคริปต์ชุดเล็ก ๆ นี้ มันไม่ซับซ้อนเท่า Unix "tail" แต่หวังว่าจะมีใครบางคนสามารถเพิ่มมันเพื่อปรับปรุงเช่น จำกัด การส่งออกไปยัง 10 บรรทัดสุดท้ายของไฟล์ ฯลฯ หากคุณปรับปรุงสคริปต์นี้โปรดส่งมัน ถึงฉันที่ robbing ~ [at] ~ gmail.com
@echo off
:: This is a batch script I wrote to mimic the 'tail' UNIX command.
:: It is far from perfect, but I am posting it in the hopes that it will
:: be improved by other people. This was designed to work on Windows 7.
:: I have not tested it on any other versions of Windows
if "%1" == "" goto noarg
if "%1" == "/?" goto help
if "%1" == "-?" goto help
if NOT EXIST %1 goto notfound
set taildelay=%2
if "%taildelay%"=="" set taildelay=1
:loop
cls
type %1
:: I use the CHOICE command to create a delay in batch.
CHOICE /C YN /D Y /N /T %taildelay%
goto loop
:: Error handlers
:noarg
echo No arguments given. Try /? for help.
goto die
:notfound
echo The file '%1' could not be found.
goto die
:: Help text
:help
echo TAIL filename [seconds]
:: I use the call more pipe as a way to insert blank lines since echo. doesnt
:: seem to work on Windows 7
call | more
echo Description:
echo This is a Windows version of the UNIX 'tail' command.
echo Written completely from scratch by Andrey G.
call | more
echo Parameters:
echo filename The name of the file to display
call | more
echo [seconds] The number of seconds to delay before reloading the
echo file and displaying it again. Default is set to 1
call | more
echo ú /? Displays this help message
call | more
echo NOTE:
echo To exit while TAIL is running, press CTRL+C.
call | more
echo Example:
echo TAIL foo 5
call | more
echo Will display the contents of the file 'foo',
echo refreshing every 5 seconds.
call | more
:: This is the end
:die
echo.
กับจุดต่อท้ายคำ (และไม่เป็นอาร์กิวเมนต์แยก) มันจะพิมพ์บรรทัดใหม่เดียว
tail
คำสั่งและอื่น ๆ อีกมากมายที่มีอยู่ในเครื่องมือของ Windows ทรัพยากร Kitแพคเกจ
หากคุณต้องการใช้พอร์ต Win32 บางสาธารณูปโภค Unix (แทนที่จะติดตั้ง Cygwin) ผมขอแนะนำให้สาธารณูปโภค GNU สำหรับ Win32
น้ำหนักเบากว่า Cygwin และพกพาได้มากกว่า
ติดตั้งชุดเครื่องมือ MKS ... เพื่อให้คุณสามารถเรียกใช้คำสั่ง Unix ทั้งหมดบน Windows
คำสั่งคือ:
tail -f <file-name>
ในFar ManagerกดF3ไฟล์เพื่อเข้าสู่วิวเวอร์มาตรฐานจากนั้นEndปุ่มเพื่อนำทางไปยังจุดสิ้นสุดไฟล์
หากมีการอัปเดตไฟล์ Far Manager จะเลื่อนไฟล์โดยอัตโนมัติ
โปรแกรมดูไฟล์บันทึกแบบกราฟิกในขณะที่ไฟล์เหล่านั้นอาจใช้งานได้ดีในการดูไฟล์บันทึก แต่ไม่ตรงกับความต้องการอรรถประโยชน์บรรทัดคำสั่งที่สามารถรวมเข้ากับสคริปต์ (หรือไฟล์แบตช์) บ่อยครั้งที่คำสั่งที่เรียบง่ายและมีจุดประสงค์ทั่วไปสามารถใช้เป็นส่วนหนึ่งของโซลูชันเฉพาะสำหรับสภาพแวดล้อมเฉพาะ วิธีการแบบกราฟิกจะไม่ทำให้พวกเขาใช้งานได้อย่างง่ายดาย
คุณสามารถลองWinTail ได้เช่นกัน
ََ
ฉันคิดว่าฉันได้พบโปรแกรมอรรถประโยชน์ที่ตรงกับความต้องการของฟังก์ชั่น tail ในไฟล์แบทช์ มันชื่อว่า "mtee" และฟรี ฉันรวมมันไว้ในไฟล์แบทช์ที่ฉันทำงานอยู่และมันทำงานได้ดีมาก เพียงตรวจสอบให้แน่ใจว่าใส่ไฟล์ปฏิบัติการลงในไดเรกทอรีในคำสั่ง PATH แล้วออกไปเลย
นี่คือลิงค์: