Domanda

Io uso bash, e lo hanno fatto per oltre un decennio - ma a volte mi chiedo se vi sia stata alcuna novità di rilievo nel mondo della shell Linux

.

Alcuni anni fa Microsoft ha rilasciato PowerShell, che sembrava molto interessante. C'è qualche innovazione paragonabile succedendo nella shell di Linux?

È stato utile?

Soluzione

È possibile eseguire PowerShell su Linux tramite Pash . Esso utilizza il modo Mono PowerShell utilizza .NET.

Altri suggerimenti

Ti rendi conto bash 4 è stato molto recentemente rilasciato con un carico di nuove funzionalità e aggiunte linguaggio?

  • opzioni Shell globstar (**/foo) fa una ricerca ricorsiva, correzioni di errori di battitura e dirspell durante l'espansione del percorso.
  • Array associativi, mappa stringhe in stringhe, invece di solo numeri in stringhe.
  • L'opzione di shell autocd permette di cambiare le directory semplicemente digitando il percorso della directory, invece di dover mettere cd davanti.
  • Coprocesses
  • operatori
  • &>> e reindirizzamento |& che reindirizzano sia stdout e stderr
  • Un sacco di aggiunte alle builtins esistenti per una migliore comodità di scripting.

Check out:

mi piacerebbe prendere uno sguardo a zsh o fishshell.

Una delle caratteristiche meno propagandato di Bash (e diverse altre shell) è la possibilità di scrivere i propri loadables, e hanno il guscio li eseguito come comandi incorporati.

Diciamo che si scrive il caricabile 'su' .. e si desidera lavorare in questo modo:

on node 123 run some command
on class nodes run some command
on all nodes run some command

... etc ..

È possibile seguire semplici esempi su come scrivere un caricabile, quindi attivarlo come bash costruito in via abilitare -f / path / to / caricabile loadable_name

Quindi, nel nostro caso, abilitare -f / opt / bash / loadables / ON

... nel tuo bashrc, e ce l'hai.

Quindi, se si vuole avere bash interpretare la nuova lingua spiffy nativamente, si potrebbe scrivere un caricabile chiamato 'uso' o 'switch_to', quindi modificare il parser per caricare una diversa grammatica / runtime se è stata impostata una certa variabile d'ambiente .

cioè:.

#/bin/bash

switch_to my-way-cool-language

funkyfunc Zippy(int p) [[
   jive.wassup(p) ]]

La maggior parte delle persone sono non andando a voler incidere il loro guscio, però. Volevo far notare che le strutture esistono per prendere Bash e renderlo nel modo desiderato, senza giocherellare troppo con codice di base.

See / path-to-bash-source / esempi / loadables, si potrebbe essere in grado di ottenere che a volare dove si lavora, dal momento che si sta ancora utilizzando Bash.

penso che il "miglioramento della shell originale" è ksh93 . bash venne alla luce nel momento in cui il codice sorgente ksh era proprietaria; se fosse stata ksh open-source, allora, potrebbe non essere stato ritenuto necessario per avere una nuova shell (anche se con la FSF non si sa mai). ksh vale la pena studiare, soprattutto per la sua capacità di essere esteso attraverso moduli C, ma non è una chiara vittoria su bash. il completamento automatico di bash è chiaramente superiore, che può essere sufficiente a rendere bash una vittoria complessiva. In ogni caso bash e ksh hanno fatto sforzi notevoli a convergere, quindi le differenze sono minori.

L'altra shell interessante è zsh , che tenta di essere tutto ciò che è ksh mentre includendo anche csh. Dal momento che non ho mai visto un qualsiasi punto o l'uso di csh, io non sono la persona giusta per sostenere per zsh. Mi preme segnalare un'incompatibilità insolita: per impostazione predefinita, in zsh un $var variabile sempre si espande ad un unico token, anche se contiene spazi. Questo comportamento è incompatibile con tutte le altre shell sh-derivati, ed è a volte scomodo, ma in realtà ha molto più senso rispetto all'originale, e fa risparmiare un inferno di un sacco di citare.

csh è stato il primo guscio di avere il controllo di posti di lavoro, ma nella mia mente (e dei suoi successori) è stata sostituita dalla bash e ksh. Non è mai stato mucn divertente da scrivere script in.

Infine, ci sono molte conchiglie piccoli progettati per i floppy di soccorso (!) E altri ambienti spartani, ma sembra che tu abbia poco interesse per quelli.

(In materia di innovazione, devo aggiungere che più della metà degli script che ho usato per scrivere come script di shell sono ora Lua script. Altri potrebbero dire lo stesso per Python o Ruby, o back in the day, Perl o Tcl. Quindi penso che la vera innovazione è la migrazione di distanza dal guscio per l'interazione programmabile nella riga di comando.)

IIRC, PowerShell è Object Oriented, mentre la maggior parte shell di Unix e le utility operano su testo. Al riguardo, Squirrel Shell potrebbe interessarti. Non ho mai usato, però.

Se siete disposti a perdere la compatibilità sh, si poteva guardare utilizzando un linguaggio di scripting come Python o Tcl come shell. rlwrap può essere molto utile se l'interprete non prevede la modifica di linea, di comando la storia, il completamento, ecc.

Una filosofia dei gusci è che essi dovrebbero in primo luogo essere utilizzati solo per collegare i processi con i file ( qui è una pagina che abbraccia questo approccio ). Detto questo, le persone hanno scritto alcuni software notevole complessità che li utilizzano.

Conchiglie non vengono molto più inovative rispetto alla Scheme Schell . Tutta la potenza dello Schema combinata con la possibilità di eseguire comandi Unix e un interprete awk incorporato (scritto nello Schema, ovviamente). L'unico inconveniente è che ha bisogno di un po 'di patch di costruire su 64 bit Linux.

Non è esattamente Bourne-shell, ma è diverso. Naturalmente, si deve imparare Scheme - bonus

!

Se si come Ruby, è possibile utilizzare di punta (shell ruby-unix, non IRB)

vedi la presentazione qui

http: //www.slideshare. net / adamwiggins / rush-the-ruby-shell-and-unix-integrazione-library

o al sito web ufficiale per vedere altri esempi

http://rush.heroku.com/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top