News for hackers. Stuff that matters.
Re:Hello Go by AskewEgret on Monday April 30, 2018 @09:44AM (#16958491)
Of course. Get-Content puts every line of text into the pipeline as a .Net String object with a few additional attributes added on, including ReadCount which is the line number. For example:

Get-Content -Path TEXT.TXT | %{"$($_.ReadCount) $($_.Length) $($_.ToUpper())" }

For each line of text, this will print the line number, the length of the string, and the string converted into upper case.

PowerShell is very wordy, but very powerful.

Re:Hello Go by Cthulhu_ on Monday April 30, 2018 @10:58AM (#16959064)
I'm neither a sh nor powershell guru, but, it kinda feels like that Powershell was intended more as a scripting language, less as a commandline language. sh / bash / etc commands are more terse, but harder to read if they're composed into a shell script.

I mean I still can't wrap my head around [ being a command / executable usable in conditions.

Re:Hello Go by brudgers on Monday April 30, 2018 @11:37AM (#16959497)
The terseness of Bash etc. is a tradeoff. "cat" is short for "concatenate." It's common use to list a single file is more the exploitation of an ambiguous API than a feature...concatenation of one file is like the sound of one hand clapping. I mean "to display the contents of a file use 'cat filename'" is an example of how *nix terseness makes understanding dependent on oral tradition rather than clear written communication. Even the man page doesn't describe using cat to display the contents of a single file [1]. It is only implied via the stdin example once a person understands the abstract relationship between the terminal and files.

[1]: https://linux.die.net/man/1/cat

Re:Hello Go by AnIdiotOnTheNet on Monday April 30, 2018 @11:56AM (#16959659)
Since shell languages invariably end up becoming scripting languages (see: Bourne shell and resulting nightmare), Powershell targets being a good tool for both purposes.

When scripting and writing documentation, full commandlet names are encouraged:

  Get-ChildItem | Where-Object { $_.Name.Contains("evidence") } | Remove-Item
When using the command line, there are built-in shortcuts (and users may define their own aliases):

  gci | ?{ $_.name.contains("evidence") } | ri
For the convenience of those hopelessly entrenched in Bourne shell, there are some default aliases:

  ls | ?{ $_.name.contains("evidence") } | rm
Re:Hello Go by stcredzero on Monday April 30, 2018 @12:51PM (#16960169)
Since shell languages invariably end up becoming scripting languages

We need to start paying attention to this phenomenon.

Re:Hello Go by wruza on Monday April 30, 2018 @01:24PM (#16960443)
It’s like | perl -pe ‘$_=join(“ “, $., length, uc)’, but with brand new syntax, so cool. PS also can help you build any non-mingw/make/sh based dependency, if you find one.