Foro de elhacker.net

Foros Generales => Dudas Generales => Mensaje iniciado por: D@niel99 en 14 Noviembre 2020, 01:33 am



Título: Duda batch, cmd...
Publicado por: D@niel99 en 14 Noviembre 2020, 01:33 am
Saludos, quería saber cual es el lenguaje o el nombre de las instrucciones que usamos en el cmd y en la terminal de linux cuando creamos carpetas, accedemos a ellas y todo eso, ejemplo de los comandos: mkdir, cd, cat, etc <--- Antes por ignorancia pensaba que esto era batch, pero en fin, como se llama ese lenguaje o si no es un lenguaje como se llaman esas instrucciones o lo que sea? Gracias


Título: Re: Duda batch, cmd...
Publicado por: EdePC en 14 Noviembre 2020, 02:38 am
El Shell de comandos es Intérprete de comandos, en Windows puede ser command.com (anteriores a WinXP), cmd.exe (WinXP en adelante), powershell.exe (Win7 en adelante), etc

Cada uno de estos Shell tiene comandos internos y externos, los internos son innatos del Shell en sí (CD, MD, Copy, RM, etc), los externos son en realidad otros ejecutables (programas) que se puede llamar (ejecutar) desde el Shell (xCopy, Find, Attrib, IpConfig, More, etc)

Cuando se ejecuta alguno de estos comandos en la Shell, pues son eso, comandos. Si se crea un archivo aparte y ahí se ponen comandos e incluso algunas características de programación que permite el Shell (GoTo, Parámetros, agrupaciones multilínea, etc) se le denomina al archivo resultante (.bat, .cmd, etc): Archivo por Lotes o Archivo de secuencia de comandos

A la práctica de crear Archivos por Lotes se le denomina Batching para Windows (.bat), en caso de Linux no tengo idea XD, supongo que con decirle programación Bash Scripting debería valer, lo mismo para Windows: Batch Scripting.

- Si deseas ponerle un nombre al "lenguaje" me parece que sería ese Bacth Scripting y Bash Scripting. Aunque claro está que hay más Shell e Intérpretes, por ejemplo en Windows está PowerShell (powershell.exe), Visual Basic Script (CScript.exe), Windows Management Instumentation (WMIC.exe), etc.

- Entonces un nombre más genérico sería Shell Scripting.


Título: Re: Duda batch, cmd...
Publicado por: simorg en 14 Noviembre 2020, 14:02 pm
Todos esos comandos provienen del antiguo MS-DOS.




Saludos.


Título: Re: Duda batch, cmd...
Publicado por: MinusFour en 14 Noviembre 2020, 15:33 pm
Saludos, quería saber cual es el lenguaje o el nombre de las instrucciones que usamos en el cmd y en la terminal de linux cuando creamos carpetas, accedemos a ellas y todo eso, ejemplo de los comandos: mkdir, cd, cat, etc <--- Antes por ignorancia pensaba que esto era batch, pero en fin, como se llama ese lenguaje o si no es un lenguaje como se llaman esas instrucciones o lo que sea? Gracias

En el caso de CMD son comandos de DOS:

https://en.wikipedia.org/wiki/List_of_DOS_commands

Pero ojo, no todos los comandos que usas son comandos de DOS. Por ejemplo, "ipconfig" no es un comando de DOS, es un programa.

En el caso de la terminal de Linux es lo mismo. Para los comandos como "cd", "jobs", "fg", "bg", "time", "kill" y algunos otros estos se conocen como "Shell builtin commands". Y varían dependiendo de la shell.

Al igual que en Windows, en linux no todos son comandos, algunos son programas. Algunos son incluso ambos. mkdir por ejemplo no es un comando integrado en la shell, es un programa. cat también es un programa. kill existe como comando de la shell y como programa. time existe como comando de la shell y como programa.


Título: Re: Duda batch, cmd...
Publicado por: D@niel99 en 14 Noviembre 2020, 16:15 pm


Al igual que en Windows, en linux no todos son comandos, algunos son programas. Algunos son incluso ambos. mkdir por ejemplo no es un comando integrado en la shell, es un programa. cat también es un programa. kill existe como comando de la shell y como programa. time existe como comando de la shell y como programa.

Gracias! Donde puedo encontrar informacion sobre esto para saber diferenciar cada uno?


Título: Re: Duda batch, cmd...
Publicado por: EdePC en 14 Noviembre 2020, 17:38 pm
Gracias! Donde puedo encontrar informacion sobre esto para saber diferenciar cada uno?

En Windows puedes usar el comando Where para localizar la Ruta de un comando, si es un comando Interno (built-In) no lo va a encontrar o no existe:

Citar
C:\Users\EdSon>where ipconfig
C:\Windows\System32\ipconfig.exe

C:\Users\EdSon>where pepe
INFORMACIÓN: no se pudo encontrar ningún archivo para los patrones dados.

C:\Users\EdSon>where cls
INFORMACIÓN: no se pudo encontrar ningún archivo para los patrones dados.

- Ahora bien, los comandos Internos (built-in) tienen están asociados al comandos Help, es decir, si el comando muestra la ayuda es que se trata de un comando Interno, sino, muestra que no admite ese comando, en este último caso implica que el comando es externo o no existe.

Citar
C:\Users\EdSon>help ipconfig
El programa de Ayuda no admite este comando.  Pruebe con "ipconfig /?".

C:\Users\EdSon>help pepe
El programa de Ayuda no admite este comando.  Pruebe con "pepe /?".

C:\Users\EdSon>help cls
Borra la pantalla.

CLS

Otra forma es simplemente buscando el comando usando el buscador de Windows o uno mucha más rápido como EveryThing de VoidTools.

- También considerar que como ya dijeron en mensajes anteriores, puede haber un comando Interno pero que a su vez exista un programa (comando externo) con el mismo nombre, en este caso el Shell de Windows le da prioridad al comando externo.

---
En caso de Linux creo recordar que el comando Type sirve para indicar si el comando dado se trata de uno Interno o Externo, muestra Built-In para los internos y la ruta para los externos:

Citar
$ type ifconfig
ifconfig is /sbin/ifconfig

$ type pepe
bash: type: pepe: no se encontró

$ type clear
clear está asociado (/usr/bin/clear)

$ type cd
cd es una orden interna del shell

$ type kill
kill es una orden interna del shell

$ type -a kill
kill es una orden interna del shell
kill is /bin/kill
 

- Una gran ventaja que veo es que se puede usar un solo comando efectivo para todo e incluso usar type -a para mostrar todas las ocurrencias de comando mostrando los Internos y Externos si los hay, tal como indica @MinusFour con kill


Título: Re: Duda batch, cmd...
Publicado por: D@niel99 en 15 Noviembre 2020, 02:53 am
En Windows puedes usar el comando Where para localizar la Ruta de un comando, si es un comando Interno (built-In) no lo va a encontrar o no existe:

- Ahora bien, los comandos Internos (built-in) tienen están asociados al comandos Help, es decir, si el comando muestra la ayuda es que se trata de un comando Interno, sino, muestra que no admite ese comando, en este último caso implica que el comando es externo o no existe.

Otra forma es simplemente buscando el comando usando el buscador de Windows o uno mucha más rápido como EveryThing de VoidTools.

- También considerar que como ya dijeron en mensajes anteriores, puede haber un comando Interno pero que a su vez exista un programa (comando externo) con el mismo nombre, en este caso el Shell de Windows le da prioridad al comando externo.

---
En caso de Linux creo recordar que el comando Type sirve para indicar si el comando dado se trata de uno Interno o Externo, muestra Built-In para los internos y la ruta para los externos:

- Una gran ventaja que veo es que se puede usar un solo comando efectivo para todo e incluso usar type -a para mostrar todas las ocurrencias de comando mostrando los Internos y Externos si los hay, tal como indica @MinusFour con kill

De mucha ayuda... Mil gracias!!


Título: Re: Duda batch, cmd...
Publicado por: Kyrie Eleison en 15 Noviembre 2020, 10:40 am
No sé si sucede lo mismo en otras distribuciones, pero en Ubuntu y derivados la orden help sin nada detrás muestra la lista completa de los comandos internos.


Título: Re: Duda batch, cmd...
Publicado por: simorg en 15 Noviembre 2020, 13:39 pm
No sé si sucede lo mismo en otras distribuciones, pero en Ubuntu y derivados la orden help sin nada detrás muestra la lista completa de los comandos internos.

En Windows, desde CMD, Help también.




Saludos.


Título: Re: Duda batch, cmd...
Publicado por: MinusFour en 15 Noviembre 2020, 16:16 pm
No sé si sucede lo mismo en otras distribuciones, pero en Ubuntu y derivados la orden help sin nada detrás muestra la lista completa de los comandos internos.

Si la shell que se use sea Bash el comando help debe estar ahí (es un builtin de bash). No estoy seguro que otras shells tengan 'help'.

type y command -V son mucho más directos para saber si es un comando o no y creo que te los encuentras en cualquier shell. Aunque yo estoy acostumbrado a usar where en zsh.