我对 C Shell 很陌生。我正在尝试从命令行读取文件,并确定它是否是 zip 文件、.txt、符号链接、管道或其他文件(“未知”)。
然后我想根据类型执行一些指令。例如,如果它是 .txt 文件,请打印有关它的信息(“它是一个文本文件”)并给出其大小。
如何从命令行而不是 -ls 读取?我很困扰
这是我到目前为止所得到的:每当我运行它时,我都会得到这个
cshell.sh: Command not found
#!/bin/tcsh
#copying the out of ls -l command to a file
ls -l > /tmp/tmp.tmp
#initilizing values
sum=0
dir=0
file=0
link=0
#reading the file
while read line
do
#getting the first character of each line to check the type of file
read -n 1 c <<< $line
#checking if the file is a directory or not
if [ $c == "d" ]
then
((dir++))
echo "[DIR] ${line}/" | cut -d" " --fields="1 9" >> /tmp/dir.tmp
elif [ $c == "-" ] #true if the file is a regular file
then
((file++))
echo $line | cut -d" " -f8 >> /tmp/file.tmp
elif [ $c == "l" ] #true if the file is a symbolic link
then
((link++))
fi
size=$( echo $line | cut -d" " -f5 ) #getting the size of the file
sum=$(( sum+size )) #adding the size of all the files
done < /tmp/tmp.tmp
cat /tmp/file.tmp #output the name of all the files
cat /tmp/dir.tmp #output the name of all the directory
echo "Total regular files = $file"
echo "Total directories = $dir"
echo "Total symbolic links = $link"
echo "Total size of regular file = $size"
#removing the temporary files
rm /tmp/file.tmp
rm /tmp/dir.tmp
rm /tmp/tmp.tmp
答案1
您找不到该命令,因为您没有cshell.sh
配置命令行来查找它。
您需要做两件事才能将其作为命令找到。您需要将其标记为执行文件,如下所示:
$ chmod go+x cshell.sh
您还需要将其放在执行路径中或通过路径名运行它。如果您位于包含脚本的目录中,则可以使用以下命令运行它:
$ ./cshell.sh
您还可以使用以下命令检查您的执行路径:
$ echo $PATH