Cose di cui si potrebbe fare a meno: Microsoft pubblica Coreutils for Windows!

Se fino a ieri un utente Linux all’interno della Powershell di Microsoft Windows si sarebbe sentito frastornato, con la pubblicazione di Coreutils for Windows le cose cambiano. È infatti possibile avere comandi Linux nativi in Windows. Il punto è: ce n’era davvero bisogno?

Nell’ambito della conferenza annuale Build, dedicata agli sviluppatori Windows, Microsoft ha fatto un annuncio per certi versi sorprendente, dichiarando disponibile il primo rilascio di Coreutils for Windows.

Se il nome vi suona familiare, è del tutto normale, infatti si tratta di una suite di utility di sistema che gli utilizzatori di Linux conoscono da sempre, e che in tempi recenti ha visto la migrazione dalla base di codice originale, scritta in C, alla versione scritta in Rust, che è già parte di Ubuntu 26.04 LTS.

Evidentemente questi comandi piacciono tanto anche a Microsoft, tanto da volerne fare il loro porting nel mondo Windows, utilizzando sempre il linguaggio Rust.

Per installare i comandi nel proprio sistema è sufficiente utilizzare WinGet:

winget install Microsoft.Coreutils

Il requirement principale è quello di avere una versione di PowerShell superiore o uguale alla 7.4.

Ma quali e quanti sono i comandi di sistema disponibili e, soprattutto, funzionano tutti?

Per rispondere a questa domanda riportiamo la tabella presente nella pagina GitHub del progetto, la cui legenda delle icone è ✅ ships and works · ⚠️ ships but conflicts with a built-in · 🛑 not shipped:

CommandCMDPowerShell 7.4+Notes
cat✅⚠️
cp✅⚠️
date⚠️⚠️
dir🛑🛑Conflicts with the built-in DOS command
echo⚠️⚠️
expand🛑🛑Conflicts with the built-in DOS command
find✅✅Integrated port of the original DOS command
hostname✅✅Superset of the Windows built-in
kill🛑🛑Unavailable due to lack of signals on Windows; Implementing a form of SIGTERM/SIGKILL may be possible in the future however
ls✅⚠️
mkdir⚠️⚠️
more🛑🛑Conflicts with the built-in DOS command (consider edit as an alternative)
mv✅⚠️
pwd✅⚠️
rm✅⚠️
rmdir⚠️⚠️
sleep✅⚠️
sort✅⚠️Integrated port of the original DOS command
tee✅⚠️
timeout🛑🛑Relies on kill‘s functionality
uptime✅⚠️
whoami🛑🛑Conflicts with the built-in Windows command

Quindi, come è facile notare, comandi come kill, che sono basati sui segnali POSIX, non sono ovviamente disponibili (almeno per il momento, stando ai commenti inseriti nella tabella).

A proposito di come i vari tool sono integrati c’è un aspetto interessante da notare, come spiega questo articolo di Bleeping Computer: è uno solo l’eseguibile che viene installato nel sistema, ossia c:\Program Files\coreutils\coreutils.exe, gli altri sono tutti hardlink. Quando un utente lancia uno di questi comandi, Windows carica coreutils.exe, che determina quale utility eseguire in base al nome del comando che è stato eseguito.

Una sorta di parser quindi, che varia il comportamento in base all’invocazione.

Tra l’altro, a dispetto della tabella di cui sopra, è interessante notare come il numero di hardlink sia ben più ampio di quello riportato, vedi immagine allegata all’articolo:

Coreutils using NTFS hardlinks to map commands to binary

Altro aspetto importante, se ve lo state chiedendo, è quello relativo ai sorgenti, che sono pubblicati con licenza MIT, quindi più open-source di così non si può.

Rimane infine la domanda principale a cui, se volete, potete cercare di dare una risposta nei commenti: tutto bello, bellissimo, la licenza MIT poi, straordinaria, solo… Perché?

Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.

Iscriviti
Notificami
guest
16 Comments
Massimo Luciani

La mia impressione è di un'operazione di facciata per cercare di accattivarsi le simpatie di qualche utente Linux.

Luca Moscato

Faccio per un attimo la voce fuori dal coro. A causa di cambiamenti aziendali sono stato praticamente costretto a passare a windows, dopo un giorno a cercare di capire come implementare il comando ssh sono riuscito a realizzare un'esperienza di linea di comando (solo per ssh eh) simile a quella che avevo su ubuntu. La combo win terminal + powershell 7 + ssh client e agent di win e un buon file config (grazie Claude) mi hanno permesso un'esperienza simile a quella che avevo prima; i vari cygwin, mobaxterm non mi fanno impazzire. Ho anche un agent funzionante ssh-add quindi non devo inserire la password della chiave ogni volta. Ora, avere qualche comando in più simile a quelli che avevo prima e simili a quelli che poi andrò a trovare sui server ai quali mi collego dal mio punto di vista non è male … ma ripeto essere una mia condizione soggettiva.

mimmus

WSL è vietato? Per me è stato la svolta, è consentito e bypassi anche le regole di uscita verso Internet 🙂

Luca Moscato

WSL l'avevo provato tempo fa, ma se non ricordo male non riuscivo a usare l'agente ssh-add e dovevo inserire la password della chiave ogni volta

mimmus

tempo fa, WSL non gestiva i processi all’avvio, ora sì e funziona tranquillamente:
$ pgrep -a ssh
845 ssh-agent

BlaBla

Ti costringono a usare Windows… Bene metti una vm con Ubuntu… Si f#ott4n0

Divago

Non sempre nei computer aziendali si può installare quello che si vuole.

mimmus

ce n'erano tanti modi per installarsi un "grep"…

redshift

Se non lo batti lo copi. Ora penso che il quadro sia chiaro. Canonical si e' venduta per qualche denaro , come ha fatto per wsl ed ora usa il cavallo di troia uutils nella sua distro. Mi sono chiesto perche' usare un software beta non compatibile al 100%, piu lento e che ha mostrato anche diversi problemi di sicurezza in una distro LTS? Perche serve a M$ avere una unica lib sia su linux che su win. La licenza MIT? Bella ? Non direi , consente di chiudere il software e non rilasciare i sorgenti dei lavori derivati, cioe' consente di appropriarsi del sorgente, cosa molto utile a M$ : saranno illazioni ma quando il puzzle combacia…

Francesco Rubeo

Perché l'AI fatica ad usare powershell. Non so se è cambiato qualcosa negli ultimi mesi, ma openai codex addirittura sconsigliavano di installarlo su Windows, io lo usavo in WSL. Ora uso gemini e va un po meglio, ma sbaglia spesso ad usare comandi powershell, quando non fa casino con l'encoding dei caratteri…

SiriosDev

Nono, in realtà abbastanza Easy, anzi ottimo per quelle 3/4 volte all'anno in cui serve """convertire""", uno script o uno snippet da bash a pwsh senza volerci perdere troppo tempo.
Imho questo port è utile più che altro a non far impazzire chi per un motivo o per un altro deve fare la sponda fra una distro e Windows (magari proprio da wsl)

Giacomo Perin

Come avere la funzionalità di Linux senza l'efficienza di linux

JaK

Ai più giovani ricordo il vecchio motto di Microsoft: Embrace-Extend-Extinguish. Presto Windows coreutils avrà comandi nuovi, irrinunciabili… che saranno non disponibili su altre piattaforme

Pinzia

Concordo!!!

[…] Lasciamo ai vostri commenti il giudizio su questa nuova trovata, che entra di diritto nella rubrica “Cose di cui non si sentiva il bisogno“, che abbiamo aperto ad inizio giugno parlando delle Coreutils per Windows. […]