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.