Vad använder ni för terminal och kommandotolk i Windows?

Permalänk
Medlem

Vad använder ni för terminal och kommandotolk i Windows?

Jag jobbar som ingenjör och inte med IT. Programmen jag använder har i allmänhet ett GUI som fungerar likadant under Linux och Windows, men allt går också att styra med skript för att kunna automatisera arbetsflödet, göra batchkörningar av simuleringar, mm. Då använder man i allmänhet terminalen.

Tidigare jobbade jag mest i Linux och använde tcsh eller bash shell, men i nuvarande projekt kör jag allt i Windows och använder Kommandotolken ("cmd") för samma ändamål. Jag tycker dock den är hopplöst klumpig när det kommer till kommandohistorik, auto complete, etc. Jag saknar också unix-verktyg som grep, less, sed, etc. (för att kunna använda dessa har jag installerat Git Bash).

Vad använder folk som gör mycket saker i shell på Windows? Jag har sett att det finns något som heter PowerShell. Vad är detta?

Permalänk
Keeper of the Bamse

Windows Terminal, som sen har Powershell7 och WSL2 (Windows Subsystem for Linux) i sig. Windows skeppas nu alltså med en riktig Linux-kärna, det behövs ingen git-bash eller Cygwin längre.

Och Powershell är mycket kraftfullare än vad många förstår, det är inte bara en bash-terminal, utan hanterar allting som objekt. Jag rekommenderar att läsa "powershell in 30 days of lunches" oavsett, för man ska kunna powershell idag

Permalänk
Medlem
Skrivet av Printscreen:

Windows Terminal, som sen har Powershell7 och WSL2 (Windows Subsystem for Linux) i sig. Windows skeppas nu alltså med en riktig Linux-kärna, det behövs ingen git-bash eller Cygwin längre.

Och Powershell är mycket kraftfullare än vad många förstår, det är inte bara en bash-terminal, utan hanterar allting som objekt. Jag rekommenderar att läsa "powershell in 30 days of lunches" oavsett, för man ska kunna powershell idag

WSL2 kör dock Linux i en Hypervisor så det är inte mer än att det är en VM och försök att få det integrerat på olika vis med Windows på gott och ont. Men det blir en hel del problem om man ska ha access till kringutrustning som usb-anlutna grejer eller liknande. Det är tycker jag mer smidigt att bara köra en vanlig Linux-VM i vmware eller virtualbox och bara totalt ignorera Windows.

Powershell är kraftfullt om du arbetar med anpassade verktyg som alltid levererar resultatet som objekt men fasligt omständigt om man ska hantera saker som strängar likt bash etc. Och relativt begränsat då Windows saknar så många verktyg man annars är van vid samt helt andra bibliotek. Att kompilera upp standardprogramvaror likt man gör på Linux, BSD eller MacOS fungerar sällan också utan ganska omfattande arbete. Integrationer med WSL underlättar ibland men skapar också problem när man hamnar mellan stolarna. Vilket är anledningen jag tycker det är lättare att bara sätta upp en vanlig VM och göra allt därifrån.

För mig som utgår från en unix-värld och behöver använda Windows är det nästan omöjligt att få samma funktionalitet och enkelhet. Men jag kanske bara likt trådskaparen bara inte upptäckt allt.

Permalänk
Medlem

Windows terminal och, än så länge, powershell 5.1 men har 7an installerad också.

Varit lite sugen på att lägga in WSL2 för en linuxtprompt men jobbet har ingen support för det så…

Permalänk
Medlem
Skrivet av Printscreen:

Windows Terminal, som sen har Powershell7 och WSL2 (Windows Subsystem for Linux) i sig. Windows skeppas nu alltså med en riktig Linux-kärna, det behövs ingen git-bash eller Cygwin längre.

Och Powershell är mycket kraftfullare än vad många förstår, det är inte bara en bash-terminal, utan hanterar allting som objekt. Jag rekommenderar att läsa "powershell in 30 days of lunches" oavsett, för man ska kunna powershell idag

Intressant! Windows Terminal ska jag definitivt testa. Det står att den stödjer "command-line tools and shells like Command Prompt, PowerShell, and WSL". Är Command Prompt namnet på det shell som Kommandotolken använder? PowerShell låter spännande, men kanske lite overkill för vad jag behöver göra.

Kanske en dum fråga, men hur funkar det att växla mellan olika shells i Windows Terminal? Finns grep och dyl. tillgängligt i WSL2?

Permalänk
Medlem

OM du nu är "tvungen" att jobba i windows, så är det Windows Terminal som gäller som övriga varit inne på. Det går dock göra den riktigt trevlig om man installerar "Oh-My-Posh", som är en port av "Oh-My-Zsh" som gör ZSH helt magiskt trevligt. Du får saker som ctrl+r för att söka i historiken, riktig ncurses och desstuom en rätt vacker prompt

... men det är lite som Sidde var inne på, läppstift på en gris. Du kan aldrig få riktigt samma "oompfh".

Permalänk
Medlem
Skrivet av KroesusSork:

OM du nu är "tvungen" att jobba i windows, så är det Windows Terminal som gäller som övriga varit inne på. Det går dock göra den riktigt trevlig om man installerar "Oh-My-Posh", som är en port av "Oh-My-Zsh" som gör ZSH helt magiskt trevligt. Du får saker som ctrl+r för att söka i historiken, riktig ncurses och desstuom en rätt vacker prompt

https://i.imgur.com/4Jfb4ou.png

... men det är lite som Sidde var inne på, läppstift på en gris. Du kan aldrig få riktigt samma "oompfh".

Hehe, tvungen och tvungen. Projektet jag sitter med nu har en skriptmiljö som är avsedd för Windows. Det skulle gå att modifiera skripten och köra med Linux i en VM, men skulle innebära en massa extrafix.

Söka i historiken med ctrl+r vore väldigt välkommet. Jag går ständigt vilse med piltangenterna i Kommandotolken.

Permalänk
Datavetare

Som "terminal-emulator" är Microsoft egna Terminal ett utmärkt val.

Som skal (shell) har de två mest relevanta redan nämns i tråden: PowerShell och WSL2+bash.

Har verkligen gett PowerShell en riktig chans under över ett års tid nu. Fattar varför man måste göra något likt PowerShell på Windows, det är egentligen ett skal för att relativt enkelt kunna manipulera .NET/COM-objekt. Men resultat är brutalt långsamt och ineffektivt med en syntax som jag undrar om någon kan hävda är logisk? "Det går att få det att göra det man vill, men det är en rätt horribel användarupplevelse" är min sammanfattning!

Så vill man göra Windows-specifika saker är PowerShell vägen att gå, det är i alla fall ett rejält steg upp från CMD
Men för att använda skalet till att automatisera flöden och enkelt kunna knyta ihop mindre byggstenar till det flöde just du behöver för tillfället är BASH (eller ZSH) långt mycket bättre.

Beror lite på vad man vill göra, men WSL2+bash är i alla fall integrerat med filsystemet i Windows så sådana saker fungerar bra där (dock inte alls lika snabbt mot NTFS som det skulle vara på "native Linux" med EXT3/4 , XFS eller liknande).

Permalänk
Medlem
Skrivet av KroesusSork:

OM du nu är "tvungen" att jobba i windows, så är det Windows Terminal som gäller som övriga varit inne på. Det går dock göra den riktigt trevlig om man installerar "Oh-My-Posh", som är en port av "Oh-My-Zsh" som gör ZSH helt magiskt trevligt. Du får saker som ctrl+r för att söka i historiken, riktig ncurses och desstuom en rätt vacker prompt

https://i.imgur.com/4Jfb4ou.png

... men det är lite som Sidde var inne på, läppstift på en gris. Du kan aldrig få riktigt samma "oompfh".

Funkar den även via ssh in till en server t.ex.? Eller bara i skrivbordsmiljö på datorn?

Permalänk
Medlem

En av säkert fler ingångarna till kaninhålet för SSH i windows https://docs.microsoft.com/en-us/windows-server/administratio...

och ja, det går att administrera Windows via SSH så länge det görs med kommandorader och inte vara beroende av GUI.

jag provade om det var möjligt att göra en pull-backup via SSH i 'root-nivå' i win10-home och det gick efter lite trassel och man använder lämpligen open-SSH nycklar för inloggningsfri access (är mer eller mindre standard om man skall göra cron och script-orienterad pull-backuprutiner från tex en Linux-server)

Redan utplacerade SSH-nycklar/certifikat går i regel förbi sedvanliga inloggningsförfarande väldigt snabbt (kör ingen keystretching, vilket annars görs med password) och kan göras till en bakvägs-ingång för tex. user/admin och har glömt passwordet av någon orsak och den vägen lösa problemet. - man kan göra samma sak i Linux där root-cert gör att man direkt kan bli root fast 'root' normalt inte fins som möjlig inloggnings-namn med username/password - sshd tittar inte ens i listan i shadow för att matcha mot sparad hashad password, utan fins publika nycken i filen authorized_keys under .ssh för användaren där så hamnar man direkt på rätt plats med dess rättigheter - i regel brukar man också stänga av möjligheten att kunna göra login med användare/lösenord på SSH och den enda vägen att komma in är med rätt open-SSH nyckel - dvs. den som loggar in har den privata delen av nyckeln tillgänglig under sin ./.ssh.

man bör ha 'rsync' startbar i windows-datorn om man tänker kopiera ut filer med rsync via ssh och den kommer inte med git-shell (cygwin) av någon anledning utan måste installeras separat.

Permalänk
Keeper of the Bamse
Skrivet av KroesusSork:

OM du nu är "tvungen" att jobba i windows, så är det Windows Terminal som gäller som övriga varit inne på. Det går dock göra den riktigt trevlig om man installerar "Oh-My-Posh", som är en port av "Oh-My-Zsh" som gör ZSH helt magiskt trevligt. Du får saker som ctrl+r för att söka i historiken, riktig ncurses och desstuom en rätt vacker prompt

https://i.imgur.com/4Jfb4ou.png

... men det är lite som Sidde var inne på, läppstift på en gris. Du kan aldrig få riktigt samma "oompfh".

Var det kanske länge sen du använde powershell? Ctrl+r är sen gammal nu ju, behövs inga tillägg

Skrivet av Kefir_Tribe:

Hehe, tvungen och tvungen. Projektet jag sitter med nu har en skriptmiljö som är avsedd för Windows. Det skulle gå att modifiera skripten och köra med Linux i en VM, men skulle innebära en massa extrafix.

Söka i historiken med ctrl+r vore väldigt välkommet. Jag går ständigt vilse med piltangenterna i Kommandotolken.

Vad är det för skript?

Permalänk
Medlem

Beror på vad som ska göras osv.
I arbetet har vi en hel del begränsningar kring Powershell, som vi dessutom kör via en virtuell fjärrmaskin och sen jumphost.
Använder därför fortfarande mycket cmd/kommandotolken och batch-skript.
Inte använt Windows Terminal då den ställer en del krav och även behöver installeras på servern osv för att göra någon praktisk nytta, som sagt p g a begränsad miljö.

Jag ser det lite så här:

Cmd/kommandotolken och batch-skript för snabba och enkla åtgärder el viss automatisering. Mycket där är relativt enkelt att göra och komma ihåg hur man gjorde/skrev. Kan på kort tid och med begränsade mängder kod bygga skript.

Powershell för mer avancerade saker där batch/cmd inte räcker till för det man ska göra. Använder det mer för skript än kommandon då det ofta krävs längre och mer komplicerade kommandon. Men det tar längre tid att göra och kräver mer kod, det är inte direkt så att man bara snabbt skriver ihop ett Powershell-skript.

Sen har det väl både med komplexiteten och vanan att göra.
Cmd/Kommandotolken (först command.com och sen cmd.exe om man ska vara noga), inkl tillhörande skript, har jag använt mer eller i perioder mindre frekvent i snart 30 år (ok, 28).
Powershell betydligt mer begränsat, även om jag gått både kortare utbildningar och skrivit en del skript i det.

Kan lite jämföras med språk:
-GUI är modersmålet som man talar/skriver utan att knappt tänka på det.
-Cmd/kommandotolken är andraspråket som man kan hyfsat bra, men ändå får tänka till lite kring formuleringar och ord.
-Powershell är tredjespråket där man har en viss grund men hela tiden måste kolla upp ord och grammatik m m.

Är det en Linux-maskin, vilka är väldigt sällsynta, blir det dess terminal.

Det är olika hur vi arbetar; en del använder i princip enbart GUI så långt det går, andra gör så mycket som möjligt via kommandon. Jag tillhör helt klart den senare kategorin, medan de flesta mindre erfarna kollegorna tillhör den förstnämnda.

Nätverkarna på arbetet (som har friare miljö) föredrar lite olika beroende på bakgrund. Vi har bl a en Linux-entusiast som nog helst använder Bash, andra som föredrar Python, någon som kör Powershell.

Permalänk
Medlem
Skrivet av Yoshman:

Har verkligen gett PowerShell en riktig chans under över ett års tid nu. Fattar varför man måste göra något likt PowerShell på Windows, det är egentligen ett skal för att relativt enkelt kunna manipulera .NET/COM-objekt. Men resultat är brutalt långsamt och ineffektivt med en syntax som jag undrar om någon kan hävda är logisk? "Det går att få det att göra det man vill, men det är en rätt horribel användarupplevelse" är min sammanfattning!

Syntaxen i Powershell suger något förbannat tycker jag. Så otroligt störande att hela tiden få googla på hur man ska göra basic saker.

Dock vill man ha ett scriptspråk som fungerar direkt på windowsdatorer, där koden är öppen och alla kan se vad den gör. På många ställen är binärfiler inte tillåtna. Med powershell är det superlätt att göra script som uppdaterar excelfiler och annat. Det är så ofta jag har gjort powershell lösningar som har tagit dubbla tiden emot C#, men man vill ha en kod så man ser vad saken gör.

Förutom språket Powershell är knepigt så suger standard utvecklingsmiljön på alla sätt och vis, det är svårt att debugga och se vad variabler har för värde och ändra i dem. Quest software gjorde PowerGUI för många år sedan och den var bra, men sedan la de ner utvecklingen.

Problemet för alternativen är att även om de är bättre, så lycka till att få många användare. Är alternativet bättre, men inte "alla" kan den, så blir det bara mer krångligt. Och detta är ett generellt problem, förutom att ej pålitliga program får installeras.

Så på frågan vilka terminaler och annat jag använder, så nästan inget om alternativ redan finns på operativsystemet. Då de byråkratiska problemet att få installera något annat inte ska underskattas.

*edit*
Powershell utvecklas dock snabbt. Ett klassisk problem är att maskinen man vill köra powershell på har version 2.0 eller något. Och för det man vill lösa så är det superenkelt att lösa det på powershell 4.0, bara ta första Googleträffen och klistra in.
Men det byråkratiska problemen att få uppdatera Powerhshell gör att det är bättre att lägga mycket arbete på att lösa det med den gamla versionen.

Permalänk
Medlem
Skrivet av lillaankan_i_dammen:

Syntaxen i Powershell suger något förbannat tycker jag. Så otroligt störande att hela tiden få googla på hur man ska göra basic saker.

Jag håller med, men jag har faktiskt lärt mig den någorlunda. Tyvärr blir det lätt röriga script som inte är så lättlästa.

Skrivet av lillaankan_i_dammen:

Dock vill man ha ett scriptspråk som fungerar direkt på windowsdatorer, där koden är öppen och alla kan se vad den gör. På många ställen är binärfiler inte tillåtna. Med powershell är det superlätt att göra script som uppdaterar excelfiler och annat. Det är så ofta jag har gjort powershell lösningar som har tagit dubbla tiden emot C#, men man vill ha en kod så man ser vad saken gör.

Förutom språket Powershell är knepigt så suger standard utvecklingsmiljön på alla sätt och vis, det är svårt att debugga och se vad variabler har för värde och ändra i dem. Quest software gjorde PowerGUI för många år sedan och den var bra, men sedan la de ner utvecklingen.

Visual Studio Code är ju numera officiell utvecklingsmiljö för PowerShell, och jag tycker den duger. Jag skriver dock aldrig några större grejer i PowerShell, detta har gjorts i C#.

Skrivet av lillaankan_i_dammen:

Problemet för alternativen är att även om de är bättre, så lycka till att få många användare. Är alternativet bättre, men inte "alla" kan den, så blir det bara mer krångligt. Och detta är ett generellt problem, förutom att ej pålitliga program får installeras.

Så på frågan vilka terminaler och annat jag använder, så nästan inget om alternativ redan finns på operativsystemet. Då de byråkratiska problemet att få installera något annat inte ska underskattas.

Byråkrati för få installera något är ju en organisationsfråga, och i dagens läge är det ju undermåligt om det ska vara ett hinder (förutom i prod-miljöer). För mig har det svängt jättemycket de senaste åren, t.ex. är konto för lokal admin standard nuförtiden. Har jag haft en bra motivation för att installera något har det inte varit ett problem, och ofta har jag fått frågan om jag vill göra det själv.

Men då har jag arbetat för företag som insett behovet av snabba förändringar och arbetat i nära samarbete med DevOps.

Skrivet av lillaankan_i_dammen:

*edit*
Powershell utvecklas dock snabbt. Ett klassisk problem är att maskinen man vill köra powershell på har version 2.0 eller något. Och för det man vill lösa så är det superenkelt att lösa det på powershell 4.0, bara ta första Googleträffen och klistra in.
Men det byråkratiska problemen att få uppdatera Powerhshell gör att det är bättre att lägga mycket arbete på att lösa det med den gamla versionen.

Permalänk
Medlem
Skrivet av Phod:

Byråkrati för få installera något är ju en organisationsfråga, och i dagens läge är det ju undermåligt om det ska vara ett hinder (förutom i prod-miljöer). För mig har det svängt jättemycket de senaste åren, t.ex. är konto för lokal admin standard nuförtiden. Har jag haft en bra motivation för att installera något har det inte varit ett problem, och ofta har jag fått frågan om jag vill göra det själv.

Jag syftar just på produktionsmiljö. Ta populära Notepad++ är denna mjukvara helt säker? Väldigt många säger ni klarar er med notepad kör den. Och det man blir typ idiotförklarad på ens tanken att vilja dra in en sådan mjukvara på produktionsserver när det ej behövs.

Utvecklingsmiljö kör man ofta samma verktyg som skarp. Detta av anledningar som det sparar tid att ha samma.