Reputation: 1101
On unix I can do a
tail -f file
And the equivalent powershell command is
gc file -Wait
However on unix I can press enter to add some blank lines (for readability) on the console while it is outputting lines, but not in powershell. Any workaround?
Use case: On unix I run tail -f /some/webserver/log/file
and it outputs the last part of the log. I then do some http-requests and the log scrolls by accordingly. I then press enter a couple of times to get some blank space in the console, so the log entry for the next request stands out because of the blank lines above.
Upvotes: 19
Views: 93208
Reputation: 1782
This seems to work:
Function tailf ([string]$file) {
$job = Start-Job ([scriptblock]::Create("cd $((gl).Path); gc -wait $file"))
$cc = [console]::TreatControlCAsInput
[console]::TreatControlCAsInput = $true
$key = 0
while ($key.KeyChar -ne 3) {
Receive-Job $job
while ([console]::KeyAvailable) {
$key = [console]::ReadKey()
if ($key.Key -eq 'Enter') {''}
}
sleep -m 100
}
[console]::TreatControlCAsInput = $cc
Remove-Job -Force $job
}
Upvotes: 0
Reputation: 1
As far as I can tell, Write-Host `n gives a single line space when used with text but a double line space when used alone. Write-Host "" or Write-Host '' or Write-Host $null all give a single line space.
Upvotes: 0
Reputation: 101
Write-Host `n"hello"
the output is:
hello
This works because `n is a special character sequence, which represents a newline, in PowerShell.
Simply follow the link below, for additional information regarding the use of special characters in PowerShell:
Microsoft PowerShell Documentation - About Special Characters
Upvotes: 10
Reputation: 21
Write-Host " "
I just copy this and keep it in clipboard to easily create empty spaces in my script presented to console.
I believe this is what he was looking for, This enables him to use the paste hotkey to easily accomplish his goal of keeping his output console run script clean by creating a fake space with that line.
Upvotes: 2
Reputation: 2064
Best way to do blank lines for me is :
""
If you write that in script or console you get a blank line, just two double quotes.
If you want to create for example 3 new blank lines in one shot you could do :
"" ; "" ; ""
Upvotes: 7
Reputation: 1298
You can use `n to create a new line .
This is just a small example , if you want to modife the out put of the Get-Content command you should store the out put and then and the new line to line 10 for example then retrieve the out put.
write-host "This is an example"
write-host "`n"
write-host "just to show how to add a new line"
This example reads a file and when it get to line to in inserts a space.
$content = Get-Content C:\Dump\test.txt
foreach ($line in $content)
{
if ($line.ReadCount -eq 2) { Write-Host "`n$line" }
Else{$line}
}
This is the out put
Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Upvotes: 29