2017-10-12 153 views
0

練習一些的Bash腳本:在ls輸出中包含換行符?

1 #!/bin/bash 
    2 
    3 read -p "Input the path to a file or directory: " TARGET_PATH 
    4 
    5 if [ -f "${TARGET_PATH}" ] 
    6 then 
    7  echo "${TARGET_PATH} is a file!" 
    8  echo $(ls ${TARGET_PATH} -l) 
    9 elif [ -d "${TARGET_PATH}" ] 
10 then 
11  echo "${TARGET_PATH} is a directory!" 
12  echo $(ls ${TARGET_PATH} -l) 
13 else 
14  echo "${TARGET_PATH} is not a file or directory." 
15 fi 

這工作按預期如果TARGET_PATH是一個文件,針對它的ls -l命令運行不夠精細。

但如果它是一個目錄,ls -l的輸出將多個項目壓縮成一行。

我嘗試在該例中迭代ls -l命令,但它將所有內容按空格分隔,因此每個單獨的部分都以新行結束。

如果我們在終端輸入ls -l,有沒有辦法輸出類似於我們所期望的內容?

+3

變化'回聲$(LS $ {TARGET_PATH} -1-)''到LS -l 「$ {TARGET_PATH}」' – anubhava

+1

@anubhava當然!!謝謝,我完全忘記了我可以直接編寫命令,就像我在終端中寫入這些命令一樣 –

回答

0

使用-1選項(這是一個數字,而不是小寫的L)到ls將使它每行輸出一個項目。

ls -1l "${TARGET_PATH}"