Warum haben Windows und Ubuntu ähnliche Shell-Befehle?

14

Ubuntu hat eine Bash (Bourne Again SHell), während Windows eine proprietäre Shell hat. Nach meiner Recherche gibt es keinen Namen für die Sprache, die für Shell-Skripte in Windows / Ubuntu verwendet wird. Es heißt nur Shell-Scripting.

Warum Windows - & Ubuntu shells die gleichen Befehle verstehen , wie: ls, mkdir, rmdir, mountund so weiter?

Gibt es eine Art Verkehrssprache für Shell-Skripte? Wenn ja, geben Sie mir bitte weitere Details.

Schattiger Programmierer
quelle
9
Siehe en.wikipedia.org/wiki/List_of_Unix_commands - Überprüfen Sie, wann diese Befehle zum ersten Mal angezeigt wurden und wann Windows und GNU zum ersten Mal angezeigt wurden. Diese Befehle sind nicht Bestandteil von bash - es handelt sich um externe Dienstprogramme. Welche Shell verwendet wird, ist daher irrelevant.
Muru
10
Und ich bin mir ziemlich sicher, lsdass Powershell das unterstützt, nicht cmd.exe. Und das liegt daran, dass die Macher von Powershell einige Anstrengungen unternommen haben, um Aliase für allgemeine Unix-Befehle hinzuzufügen, damit sich Unix-Benutzer wohler fühlen. technet.microsoft.com/en-us/library/dd347739.aspx
muru
7
Der Wikipedia-Artikel über DOS könnte etwas Licht ins Dunkel bringen. Zitat: "DOS lief stattdessen auf Intel 8086 16-Bit-Prozessoren. Ab MS-DOS 1.28 und PC DOS 2.0 enthielt das Betriebssystem verschiedene Funktionen, die von Xenix, der Unix-Variante von Microsoft, inspiriert waren." Unix ist also bis zu einem gewissen Punkt ein Vorläufer von MS-DOS. en.wikipedia.org/wiki/DOS
Theodorn
4
@muru: Tatsächlich sind sowohl der Unix- als auch der DOS- Befehl nur Aliase zu den echten PowerShell-Befehlen, die nach einer standardisierten Action-ObjectStruktur benannt sind, die sich aus einer Reihe von ebenfalls standardisierten Aktionen und Objekten zusammensetzt. Beispielsweise sind beide lsund dirAliase für Get-ChildItem(die zusätzlich über den Alias ​​verfügen gci) mkdirund mdtatsächlich New-Item(die aufgrund des objektbasierten Ansatzes von PowerShell viel mehr als nur Verzeichnisse erstellen können) und so weiter.
Jörg W Mittag
2
Schauen Sie sich auch CPM, VMS, JCL an.
Zan Lynx

Antworten:

44

Der Windows cmd.exenicht unterstützt ls, mountusw., es sei denn , Sie diese selbst installiert und fügten sie zu dem %PATH%(via Cygwin, MinGW, Subsystem für UNIX-basierte Anwendungen (SUA) oder etwas anderes). Powershell macht. Und das liegt daran, dass Powershell diese Befehle als Aliase zu Standard-Powershell-Befehlen verwendet, damit sich Unix-Benutzer wohler fühlen können. Sehen Sie sich die Liste der Kompatibilitäts-Aliase in Powershell an . Windows hat rmdir, mkdirusw. , aber diese, natürlich, unterstützen nicht die gleiche Option Syntax , dass Sie auf Ubuntu finden würde.

In Ubuntu haben diese nichts mit Bash zu tun. Sie sind alle externe Befehle. Es gibt Standards für solche Dienstprogramme. POSIX ist am bemerkenswertesten (siehe die Liste der von POSIX beauftragten Dienstprogramme ), und Linux Standard Base (LSB) ist ein weiteres wichtiges Element für Linux-Systeme (das hauptsächlich auf POSIX basiert, jedoch einige Ergänzungen enthält ). Diejenigen unter Ubuntu werden meistens von GNU bereitgestellt , und GNU-Dienstprogramme haben oft mehr Funktionen als die Basis, die von POSIX benötigt wird.

POSIX definiert auch die von Ihnen erwähnte Shell-Sprache (die sich wesentlich von der in unterscheidet cmd.exe). Es leitet sich aus der Syntax der Bourne-Shell ab . Bash (jetzt wissen Sie, worauf sich der Bourne bezieht), ebenfalls von GNU, fügt ebenfalls Funktionen hinzu, kann sich aber bei Bedarf POSIX-konform verhalten. Die POSIX-Sprache ist genau das, was Sie erwarten sh. bash, ksh, ash, dash, zshAlle verwenden die Sprache, mit Verbesserungen. cshist in einer (Albtraum-) Welt für sich und tcshwertet auf csh.

Um etwas mehr zu verstehen, werfen Sie einen Blick in die Geschichte von Unix und Unix-ähnlichen Systemen. Unix ist mehr als ein Jahrzehnt älter als Windows, und diese Dienstprogramme wurden erstmals unter Unix eingesetzt.

Windows war zu einer Zeit POSIX-konform, da es von der US-Regierung für Betriebssysteme vorgeschrieben wurde, die von Regierungsbehörden verwendet wurden (zu diesem Zeitpunkt fügten sie die Dienste für Unix (SFU) hinzu , von denen die im ersten Absatz erwähnte SUA stammte). Diese Anforderung wurde jedoch gestrichen, und anschließend wurde die SUA eingestellt.

Verbunden:

(Beachten Sie den gemeinsamen Teil dieser Beiträge - sie alle auf sind Unix & Linux und getaggten Geschichte -. Sie durch diesen Tag gerade finden könnte sehr informativ)

muru
quelle
3
AFAIK rmdir(zusammen mit mkdirund cd / chdir) sind native command.comBuildins seit MS-DOS 2.0 (vorher gab es keine Hierarchie im DOS-Dateisystem)
jlliagre
1
rdwar auch eine Abkürzung md.
Juli
1
Dies ist, was ich aus dem Lesen Ihrer Antwort und dem Durchblättern der von anderen bereitgestellten Links habe: Diese Befehle / Dienstprogramme sind in der Vergangenheit auf verschiedenen Systemen zum ersten Mal aufgetaucht. Im Laufe der Zeit wurden die meisten von ihnen in Ubuntu und einige von ihnen in Windows integriert. Windows hat jedoch beschlossen, die Dinge auf ihre eigene Weise zu tun und eine eigene Version dieser Dienstprogramme zu erstellen. Mit der Zeit hat Windows beschlossen, Aliase zu seinen eigenen Shell-Befehlen hinzuzufügen, damit Linux-Benutzer Befehle verwenden können, die auf der Oberfläche genauso aussehen wie auf ihren Systemen, aber darunter in Windows-Befehle übersetzt werden
Shady Programmer
1
Die POSIX-Sprache ist genau das, was Sie erwarten sh. bash, ksh, ash, dash, zshAlle verwenden die Sprache, mit Verbesserungen. cshist in einer (Albtraum-) Welt für sich und tcshwertet auf csh. Windows hat sich früher an POSIX gehalten, da es von der US-Regierung für Betriebssysteme vorgeschrieben wurde, die von Regierungsbehörden verwendet wurden (daher kam die SUA). Diese Anforderung wurde jedoch gestrichen, und anschließend wurde die SUA eingestellt.
Muru
1
@ShadyProgrammer ein weiterer U & L-Beitrag, den Sie interessant finden: unix.stackexchange.com/q/145522/70524
muru
0

Einfach:

Linux ist ein System, das auf dem von Dennis Ritchie und Ken Thompson erfundenen UNIX-Modell basiert.

Windows / DOS ist ein billiger Abbruch eines Systems namens CP / M, das in den 1970er Jahren auf den alten Computern, die Sie an einen Fernseher angeschlossen haben, populär war. Dieses System war wiederum ein billiger Abbruch der frühen UNIX-Systeme aus den späten 60er / frühen 70er Jahren .

geschlafen
quelle
Ihre Antwort ist zwar zutreffend, aber viel zu stark vereinfacht, um nützlich zu sein. (Und wir haben Monitore oder Terminals mit CP / M verwendet - keine Fernseher;)) Wenn ich versuche, einen obskuren Bash- oder Sed-Befehl zu finden, denke ich manchmal an jene Tage zurück, als das Betriebssystem kaum etwas für Sie getan hat, aber es war einfach zu machen - und mir ging auf einem 64k-Rechner nie der Speicher aus.
Joe