2014-03-02 42 views
1

我對bash shell腳本非常陌生,我有一項任務要求我閱讀我的linux安裝副本的最後一行(即管理員文件夾)passwd文件,其中包含用戶名,真實姓名,主目錄和登錄shell。我已經嘗試了讀命令,但它繼續輸出整個文件,而不是僅僅最後一行,甚至所以我需要能夠輸入在部分,例如:echo $Username將輸出管理員或回聲$Realname wold ouptut用戶真實姓名。我也試過sed,但我得到了「不能讀取,沒有這樣的文件或目錄錯誤」如何在bash shell中打印passwd的最後一行

編輯:在收到我的教授的電子郵件後,我必須使用read命令從passwd文件中獲取信息。但是,您的回答在幫助我理解我目前的行爲方面非常有用。謝謝!

Here is a link to my list of objectives in this script

,這裏是我寫的是返回整個passwd文件中的代碼:

file="/home/Admin/passwd" 

while read -r f1 f2 f3 f4 f5 f6 f7 
do 
     echo "Username: $f1, Realname: $f2, Homedir: $f3, loginshell: $f4 " 
done < "$file" 

任何幫助,將不勝感激,不知何故,我覺得我過分解讀說明但我想一些其他意見,謝謝!

+6

因爲這是一個任務我不會給你一個完整的答案,但看尾部命令的手冊頁。 –

+4

同時考慮使用IFS爲讀命令選擇一個字段分隔符,以便字段正確拆分。找出密碼文件使用的字段分隔符。 – Scrutinizer

+0

+1給Scrutinizer的評論:什麼是字段分隔符? –

回答

0

歡迎來到精彩的腳本世界!

分配似乎並沒有提及使用「讀」命令,因此,不能完全給予瞭解決辦法,我建議你使用重定向方式(嘗試在Unix重定向谷歌搜索,這是很有趣!)

我也建議在Unix中搜索標準和錯誤重定向。有一些漂亮的快捷鍵很容易找到。

希望這會有所幫助!

0

您需要使用IFS來定義字段分隔符,然後瞭解哪些列是主目錄和登錄shell。在/ etc/passwd文件

瞭解字段(http://www.cyberciti.biz/faq/understanding-etcpasswd-file-format/

這裏是修復:

file="/home/Admin/passwd" 

while IFS=: read -r f1 f2 f3 f4 f5 f6 f7 
do 
    echo "Username: $f1, Realname: $f5, Homedir: $f6, loginshell: $f7 " 
done < "$file"