2017-09-28 3 views
0

Ich habe ein Shell-Skript geschrieben, um eine Reihe von Dateien zu erstellen. Der Benutzer gibt die Anzahl der Dateien und deren Dateierweiterung über die Befehlszeile an. Hier ist mein CodeErstellen von Dateien spezifischen Typs

#!/bin/bash 

NUM_FILES=0 
FILE_TYPES="" 
LOCATION=`pwd` 

if [ $# -eq 0 ]; then 
    echo "**** ERROR: You must specify the number of files you wish to create and (optional) the file types.\n\n" 
    exit 1 
fi 

if [ ! -z $1 ]; then 
    NUM_FILES=$1 
fi 

if [ ! -z $2 ]; then 
    FILE_TYPES=$2 
else 
    FILE_TYPES=".tmp" 
fi 

n=$NUM_FILES 

for ((i=1; i <= n; i++)) 
do 
    touch TEMP_FILE_$i.$FILE_TYPES #Files created here - this is where my script needs work 
    echo "Created file " TEMP_FILE_$i.$FILE_TYPES 
done 

Meine Frage bezieht sich auf das Erstellen von Dateien eines bestimmten Typs. Das zweite an die Befehlszeile übergebene Argument ($FILE_TYPES) wird verwendet, um die Erweiterung anzugeben, die Sie verwenden möchten (txt, java, py, usw.), aber wenn ich das Skript ausführe, interpretiert Linux alle Dateien als Text und fügt einfach die hinzu Erweiterung auf das Ende des Dateinamens.

zB bash createFiles.sh 4 java läuft in vier Textdateien führen wird erstellt mit dem Namen TEMP_FILE_1.java aber das Verzeichnis in Linux-GUI Betrachten zeigt die Dateien des Typs sein text.

Wie kann ich das Shell-Skript so ändern, dass es Dateien des angegebenen Typs erstellt?

+0

Ich habe gerade Ihr Skript getestet und es tut genau das, was Sie wollen. Können Sie "ls -lh" in Ihrer Konsole versuchen und die Ausgabe anzeigen? –

+0

'wenn [! -z $ 1]; ... fragt wirklich nach Ärger. Schreiben Sie einfach 'NUM_FILES = $ {1: -0}; FILE_TYPES = $ {2: -. Tmp} ' –

+0

Hallo William - Ich bin relativ neu im Shell-Scripting, also kann ich fragen, warum diese Aussage nach Ärger fragt? Es soll überprüft werden, ob das erste an das Skript übergebene Argument nicht null ist. –

Antwort

1

Es gibt keinen "Typ" der regulären Datei in Linux/Unix. Sie können eine beliebige Ihrer eigenen Dateierweiterungen registrieren, um Dateien mit der angegebenen Erweiterung mit der von Ihnen ausgewählten Anwendung zu öffnen.

Bitte schauen Sie auf Antworten zu Frage: "(#!) Bauden" Register file extensions/mime types in Linux

Auch andere Zuordnungsmechanismus auf Linux genannt, zu verstehen, könnten Sie dies lesen: File extensions and association with programs in linux

+0

@MrCyro: danke für die Erklärung –

+0

Wenn ich Ihre Frage beantworte, bitte "markieren" Sie es. – MrCryo

1

Viele Werkzeuge aussehen am tatsächlichen Dateiinhalt, um Dateityp zu bestimmen (a'la file Dienstprogramm). Wenn Sie leere Dateien erstellen, gibt es keinen Inhalt, der überprüft werden könnte, um den Dateityp abzuleiten. Wenn Sie also Dateien erstellen möchten, die als bestimmter Typ erkannt werden, müssen Sie wahrscheinlich Vorlagen für jeden von Ihnen unterstützten Dateityp bereitstellen und den Vorlageninhalt in die erstellten Dateien kopieren. Schreiben Sie zum Beispiel ein minimales Java-Programm beim Erstellen von .java Dateien, schreiben Sie 1x1 Pixel Bilder beim Erstellen von .png Dateien usw.

Verwandte Themen