Me preguntaba cuál es la necesidad de poner comandos ejecutables dentro de un .sh
archivo para hacer un solo script, ya que puedo hacer lo mismo poniendo los comandos dentro de un .txt
archivo y haciéndolo ejecutable usando chmod
.
Supongo que esto se puede hacer con cualquiera de las extensiones de archivo. Entonces, estoy bastante confundido acerca de la necesidad de .sh
extensión. Cualquier ayuda sería muy apreciada.
.txt
.txt sufijo.txt, usted es.txt no.txt ayudando.txt usted mismo.txt (o.txt anybody.txt más .txt) comprensión.txt what.txt cada archivo.txt.txt es.txt there.txt for.txt.Respuestas:
No es necesario que la extensión del archivo coincida con nada específico, como descubrió correctamente.
En los sistemas tipo Unix, los tipos de archivo generalmente se derivan del contenido del archivo (es decir, el "número mágico" u otras estructuras características en los primeros bytes) y no de su nombre. También puede omitir por completo la extensión, que a menudo se realiza para ejecutables.
Verifique el
file
comando, le muestra la información que puede encontrar sobre un tipo de archivo a partir de su contenido.Para un script ejecutable, el sistema espera un llamado "shebang" en la primera línea, que se ve, por ejemplo, como
e indica qué programa ejecutar como intérprete con el archivo de script como argumento. Si ejecuta un archivo de texto sin dicho shebang, usará su shell predeterminado, es decir, Bash para intentar interpretarlo.
Entonces, en los sistemas Unix / Linux, las extensiones de nombre de archivo son principalmente una pista (pero no una garantía) para que el usuario humano reconozca rápidamente qué esperar que contenga un archivo específico. También es una convención que puede ayudar, por ejemplo, a encontrar archivos más rápido.
Sin embargo, tenga en cuenta que existen algunas excepciones en las que el nombre y la extensión son importantes (por ejemplo, algunos archivos de configuración del sistema que deben seguir una convención de nomenclatura, o muchos visores y editores de imágenes también requieren que la extensión indique el tipo de archivo).
También puede echar un vistazo a ¿Las extensiones de archivo tienen algún propósito (para el sistema operativo)?
fuente
No existe una "extensión" o "tipo" de archivo en un nombre de archivo UNIX / Linux.
Como otros han señalado, el "tipo" se puede encontrar usando el comando de archivo asumiendo que la magia relevante está disponible en su sistema. Los nombres de archivos UNIX / Linux normalmente pueden contener cualquier carácter disponible, pero a menudo es útil usar alguna forma de convención para el nombre de modo que tanto los humanos como las máquinas puedan hacer juicios sobre el contenido (y, por lo tanto, el uso del contenido).
Como ejemplo, a menudo uso una coma como primer carácter del nombre del archivo para indicar un archivo temporal en lugar de usar algo como la cadena ".tmp" al final del nombre de archivo. El resultado es el mismo, un archivo que contiene datos que solo se requieren por un corto tiempo, pero el nombre no requiere tener un "." dentro de ella ni la cadena "tmp". Esto a veces puede tener ventajas, por ejemplo, al analizar una lista de nombres de archivo. Pero es MI convención y alguien más puede decidir sobre otra incluso usando ".tmp" como su convención de un nombre para un archivo temporal.
Entonces, mi respuesta es que no existe una extensión de archivo UNIX / Linux, sino un conjunto de convenciones que generalmente se parecen a las extensiones de archivo utilizadas en otros sistemas operativos y sus sistemas de archivos.
fuente
"."
están destinados a ser punteados por el shell (no pueden ejecutarse significativamente en un subshell). En consecuencia, desactivo la convención predeterminada "punto inicial = archivo oculto" en mis alias / scripts que utilizols
para poder ver todos los archivos, incluidos los "ocultos". De manera similar, en Windows, deshabilito la configuración de "ocultar extensiones de archivo".