2017-07-25 61 views
0

我正在研究檢查目錄中所有文件的用戶權限的家庭作業分配。我想輸出一列中的所有文件名以及一列或多列中的權限。任何幫助,將不勝感激。在列和行中輸出bash shell腳本的結果

#!/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 
+1

'printf的 「%S \ t%S \ t%S \ n」 個abc' –

+2

請參見[我怎麼問的好問題嗎?(https://stackoverflow.com/help/how-to-ask)。我們希望您能夠完成生成儘可能最小的代碼的工作,這些代碼可以演示您的問題(並且有人可以擴展,修改或引用來重現該問題或在其答案中重複使用),而不是**轉儲較大的程序這裏的問題;請參閱有關構建[mcve]的文檔。 –

+0

不清楚嗎?我很欣賞這種建設性的反饋,但這不是我正在尋找的反饋。我一直在尋找如何從上面的代碼輸出列。我可以澄清,如果你的願望 – Frank

回答

0

我想輸出所有的在一列中的文件名和權限中的一個或多個列。如果你第一次喜歡的文件名

stat -c "%A %n" * 

變化stat輸出:

像這樣的東西可能會做到這一點

stat -c "%n %A" * 

如果你想輸出作爲一個表,你可以使用column命令:

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 ":"