C Shell determinou o arquivo

1

Sou muito novo no C Shell. Eu estou tentando ler um arquivo da linha de comando e determinar se é um arquivo zip, um .txt, um link simbólico, um pipe ou qualquer outra coisa ("desconhecido").

Depois, gostaria de executar algumas instruções dependendo do tipo. Por exemplo, se for um arquivo .txt, imprima informações sobre ele ("é um arquivo de texto") e especifique seu tamanho.

Como você lê a linha de comando em vez de -ls? Estou muito confuso

Aqui está o que eu tenho até agora: sempre que eu corro, eu tenho isso

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
    
por Jack P 07.11.2014 / 19:26

1 resposta

2

Você está tendo o comando não encontrado porque você não tem cshell.sh configurado para a linha de comando para encontrá-lo.

Existem duas coisas que você precisa fazer para que seja encontrado como um comando. Você precisa marcá-lo como um arquivo de execução com algo como:

$ chmod go+x cshell.sh

Você também precisa tê-lo em seu caminho de execução ou executá-lo por um nome de caminho. Se você estiver no diretório com o script, poderá executá-lo com:

$ ./cshell.sh

Além disso, você pode verificar seu caminho de execução com:

$ echo $PATH
    
por 07.11.2014 / 22:55