Ich habe nach dem Unterschied zwischen adduser
und gesucht useradd
, und eine Erklärung ist, dass useradd
es sich um einen Befehl handelt, während adduser
es sich um ein Perl-Skript handelt. Ich verstehe, was ein Perl-Skript ist, aber was ich nicht verstehe, ist, was ein command
Dann genau ist.
Ich dachte immer, dass Befehle wie ls
, ln
, cd
usw. sind alle einfache Programme geschrieben in welcher Sprache auch immer , dass eine Sache einfach tun. Was ist der Unterschied zwischen diesen "einfachen Programmen" und einem Perl-Skript?
Ich weiß natürlich, dass ein (Perl-) Skript zur Laufzeit nicht kompiliert, sondern interpretiert wird, aber ich denke, das ist nicht der einzige Unterschied?
linux
command-line
bash
perl
kramer65
quelle
quelle
Antworten:
In einfachen Worten ist ein Befehl eine Anweisung (oder ein Befehlssatz), die von einem Computer ausgeführt wird.
Standalone-Befehle
Fundamental Unix - Dienstprogramme wie
ls
,ln
etc. ( in der Regel) in C geschrieben und kompiliert eigenständige ausführbare werden Programme , die ausgeführt keinen Dolmetscher erforderlich ist; Normalerweise müssen bestimmte Bibliotheksdateien auf dem System installiert sein, aber das ist eine Antwort auf eine andere Frage.Skripte
Ein Skript ist eine Sammlung von Befehlen, und Skripte selbst werden als Befehle betrachtet.
Ein Perl-Skript ist eine Folge von Perl-Anweisungen und erfordert ein
perl
ausführbares (eigenständiges und kompiliertes) Programm , um die Perl-Anweisungen zu interpretieren.Manchmal werden große und komplexe interpretative Skripte (in Sprachen wie Perl, Python und Ruby) auch als interpretierte Programme bezeichnet, während der Begriff Skript kürzeren und einfacheren Skripten vorbehalten ist.
Ein Shell-Skript ist eine Folge anderer Befehle (jeder Befehlstyp) und erfordert eine Unix-Shell wie Bash, um das Skript zu interpretieren. Von der Bash-Manpage:
Shell-Einbauten
Shells verfügen normalerweise über integrierte Befehle, bei denen es sich weder um eigenständige Programme noch um Skripte handelt. Stattdessen sind sie Teil der Shell selbst und werden direkt von der Shell ausgeführt.
cd
ist ein Beispiel für einen solchen eingebauten Befehl.Manchmal gibt es Befehle, die gleichzeitig als Shell-Built-Ins und als Standalone-Befehle existieren, z
echo
. B. den Befehl.echo
Führt die integrierte Shell eigenständig aus, während der eigenständige Befehl ausgeführt werden kann, indem der vollständige Pfad angegeben wird.Führen Sie die integrierte Version von echo aus:
Führen Sie ein eigenständiges
echo
Programm aus:Hinweis: Die obigen Angaben beziehen sich auf eine Unix-Umgebung, gelten jedoch auch für eine Windows-Umgebung.
quelle
.bat
vielen, vielen Jahren nicht mehr mit Dateien arbeiten).Ein eingebauter Befehl ist Teil der Shell. Ein Programm wird von der Shell ausgeführt.
http://www.gnu.org/software/bash/manual/bashref.html#Shell-Builtin-Commands
quelle
useradd
aber keine Shell eingebaut. Die Website sagte nur "Befehl", nicht "eingebauter Befehl". Wie ist diese Erklärung für diese Frage relevant?Befehl bedeutet nur eine Möglichkeit, eine Anwendung oder ein System anzuweisen, etwas zu tun.
Eine Anwendung akzeptiert normalerweise viele verschiedene Befehle, entweder von der GUI aus
stdin
, aber andere Methoden sind möglich, z. B. ein UNIX-Socket oder eine Named Pipe, eine Art Web-API, eine RPC-Verbindung oder ein anderes benutzerdefiniertes Protokoll.Eine Anwendung, die nur eines tut und dann beendet wird, in der Regel ohne GUI, kann auch als Befehl bezeichnet werden, da Sie dieser Anwendung nur einen aussagekräftigen Befehl geben können. Dies ist, wie kleine Programme wie
ls
und solche funktionieren und warum sie Befehle genannt werden.Sie würden Photoshop jedoch nicht als Befehl bezeichnen, sondern über die grafische Benutzeroberfläche Befehle eingeben.
Der Begriff kann jedoch für verschiedene Personen unterschiedliche Bedeutungen haben. In Ihrem Beispiel wird mit dem Befehl eine ausführbare Datei beschrieben, die direkt ausgeführt wird, im Gegensatz zu einer Datei, für deren Ausführung ein Skriptinterpreter erforderlich ist. Die Unterscheidung kann wichtig sein, da es sich bei der Ausführung eines Perl-Skripts
/usr/bin/perl
um die tatsächlich ausgeführte Binärdatei handelt (wenn Sie also ein lang laufendes Perl-Skript beenden möchten, müssen Sie danach suchenps
). Die meisten Shells verfügen jedoch über "integrierte" Befehle, die Befehle für die Shell selbst sind und die Ausführung einer externen ausführbaren Datei verhindern. Wird zum Beispielcd
vonbash
alleine gehandhabt und ruft nicht/sbin/cd
oder ähnlich auf.quelle