Você pode usar o teste de shell para verificar o tipo de arquivo e as permissões:
#!/bin/sh
read -rp 'Enter a filename: ' fname
if [ -f "$fname" ]; then
echo 'File is a regular file'
elif [ -d "$fname" ]; then
echo 'File is a directory'
else
echo 'File is not a regular file or a directory'
fi
[ -r "$fname" ] && read=read
[ -w "$fname" ] && write=write
[ -x "$fname" ] && execute=execute
echo "User has ${read} ${write} ${execute} permissions" | tr -s ' '
A construção if informará sobre o tipo de arquivo, verificando se é um arquivo normal ( -f
) ou um diretório ( -d
), caso contrário, informará que não é nenhum dos dois.
Em seguida, verificamos as várias permissões: read ( -r
), write ( -w
) e execute ( -x
). Definindo uma variável para cada um. Se o usuário não tiver uma dessas permissões, a variável correspondente permanecerá indefinida, portanto, na linha de eco final, se o usuário não tiver essa permissão, a variável será expandida para nada. Isso é encerrado com uma chamada para tr -s ' '
para remover quaisquer espaços extras que possam estar lá de permissões não existentes.