我编写了一个shell脚本来创建许多文件。用户从命令行指定文件数及其文件扩展名。这是我的代码
#!/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
我的问题涉及创建指定类型的文件。传递给命令行的第二个参数($FILE_TYPES
)用于指定要使用的扩展名(txt,java,py等),但是当我运行脚本时,Linux会将所有文件解释为类型文本并只是将扩展名添加到文件名的末尾。
例如,运行bash createFiles.sh 4 java
将导致创建名为TEMP_FILE_1.java
的四个文本文件,但在Linux GUI中查看目录会显示类型为text
的文件。
如何修改shell脚本以便创建指定类型的文件?
答案 0 :(得分:1)
没有&#34;类型&#34; Linux / Unix中的常规文件。您可以注册任何自己的文件扩展名,以打开具有指定扩展名的文件,并使用您选择的应用程序。
请查看问题的答案:Register file extensions / mime types in Linux
另外要理解名为&#34; Shebangs(#!)&#34;的Linux上的其他关联机制,您可以阅读:File extensions and association with programs in linux
答案 1 :(得分:1)
许多工具会查看实际文件内容以确定文件类型(&#39; la file
实用程序)。创建空文件时,没有可以检查的内容来推断文件类型。因此,如果要创建可识别为特定类型的文件,可能必须为您支持的每种文件类型提供模板,并将模板内容复制到创建的文件中。例如,在创建.java
文件时编写一些最小的Java程序,在创建.png
文件时编写1x1像素图像等。