按列和行输出bashshell脚本的结果

按列和行输出bashshell脚本的结果,bash,shell,unix,Bash,Shell,Unix,我正在做一个家庭作业,检查目录中所有文件的用户权限。我想在一列中输出所有文件名,在一列或多列中输出权限。任何帮助都将不胜感激 #!/bin/bash clear bold=$(tput bold) normal=$(tput sgr0) red=`tput setaf 1` reset=`tput sgr0` DIR1=$1 cd $1 num=0 for file in *; do echo ${bold}$file${normal} if [ -r $file ] then

我正在做一个家庭作业,检查目录中所有文件的用户权限。我想在一列中输出所有文件名,在一列或多列中输出权限。任何帮助都将不胜感激

#!/bin/bash
clear
bold=$(tput bold)
normal=$(tput sgr0)
red=`tput setaf 1`
reset=`tput sgr0`
DIR1=$1
cd $1
num=0
for file in *; do
echo ${bold}$file${normal}
if [ -r $file ] 
   then    
      echo ${red}"r"${reset} ;
fi    
if [ -w $file ]
   then       
      echo ${red}"w"${reset};
fi    
if [ -x $file ]
   then       
     echo ${red}"x"${reset};
fi
# ls -l $file | awk '{print $1 }
#ls -1 $file | awk '{print $1 }
(( num+=1 ))
# echo $num
done

echo
echo

if  [ $1 ]
then
echo $num files in specified directory '('`pwd`')'
else
echo $num files in directory '('`pwd`')'
echo

fi
echo
echo
我想在一列中输出所有文件名,在一列或多列中输出权限

像这样的东西可能会做到:

stat -c "%A %n" *
如果首选文件名,请更改
stat
的输出:

stat -c "%n %A" *
如果要将输出作为表格,可以使用
命令:

stat -c "%n:%A" * | column -t -s ':'
但是,如果路径中有
,您可以为任何其他字符更改路径,那么这不是一个好的解决方案

当然,您可以在循环中使用相同的逻辑:

#!/bin/bash               

red=$(tput setaf 1)       
bold=$(tput bold)         
reset=$(tput sgr0)        

for file in "${1:-"${PWD}"}"/*; do                                                                       

    perm=$(stat -c %A "${file}")                  
    echo "${bold}${file}${reset}:${red}${perm:1:3}${reset}"                                              

done | column -t -s ":" 

printf“%s\t%s\t%s\n”a b c
请参阅。我们希望您尽可能地生成最小的代码来演示您的问题(有人可以扩展、修改或引用这些代码来重现问题或在其答案中重用),而不是在问题中转储较大的程序;请参阅建筑a的文档。是否不清楚?我很感激有建设性的反馈,但这不是我想要的反馈。我正在寻找如何从上述代码中输出列。如果你愿意,我可以澄清