FTP規劃及ShellScript如何使用包含空白的變數 - Linux
By Steve
at 2010-03-05T18:30
at 2010-03-05T18:30
Table of Contents
問題是這樣的
我架了個FTP,使用pureftpd,作業系統是Ubuntu 9.10。目前FTP的目錄
是這樣規劃的:
硬碟及資料目錄
sda3:
/ftp
sdb1:
/ftp/sdb1/Animation
/ftp/sdb1/Drama
/ftp/sdb1/Europe
/ftp/sdb1/Asia
/ftp/sdb1/English A-S
sdc1:
/ftp/sdc1/English T-Z
使用者(虛擬帳號)目錄:
/ftp/home/alpha
/ftp/home/beta
/ftp/home/charlie
規劃上想要讓使用者只能在家目錄下活動,所以使用了chroot(),再使用pureftpd
支援的symbolic link(ln -s)將各別的資料目錄連結到各別的使用者家目錄下。又
想說既然支援symbolic link的話,因為資料頗多可以弄個分類,這樣使用者要找
東西也比較好找,所以關於各別使用者的家目錄規劃如下(以alpha為例):
/ftp/home/alpha/Drama
/Animation
/Movie by Language(原始目錄已經有語言分類)
/Movie by Alphabet(就是複製全部到這裡面讓他依照字母排序)
/Movie by Decades(以資料夾最後的年份排序)
/Movie by IMDb(尚未想到,想說在年份後面再加上#1,#2或許吧)
另外說明一點,關於資料夾名稱大致如下:
Saw I 奪魂鋸一 (2004)
The Wrestler 力挽狂瀾 (2008) (DVD)
おくりびと 送行者:禮儀師的樂章(2008)
風聲 (2009)
有英文中文日文,也沒有固定的欄位,大致上是原文片名、中文片名、年份,但是
有的會有多一些符號像是":"、"-"或是像Saw I 奪魂鋸 I (2004)沒有固定的空格。
現在的想法是做一個依照上述分類的sample資料夾,之後再複製到各個使用者家目
錄。現在問題在我想要自動化管理,也就是寫script來做相關的事情。
結果第一步就遇到問題了。就是變數名稱(也就是資料夾名稱)有許多空格,執行
的時候會到空格就停住了,但是echo $name是可以顯示出空格的。可是這個包含
空格的$name拿給test用或是ln -s用就會到空格就停住而出現錯誤。
我想這裡強者很多,應該很多人會遇到使用空格當資料夾名稱的問題,版上搜尋
有找到兩篇,但是我也是用read跟while卻不行。如果真的不能使用空格當資料夾
名稱的話...那我只好把空格取代成別的符號了(linux這麼強大應該可以吧!),
這一步沒先解決的話,之後想要寫新增資料夾同步到各別的使用者家目錄或是其他
事情都沒辦法做了。
以下附上script寫法,請各位強者解答!先謝過了!
# Set all movie directory
Asia=/ftp/sdb1/Asia
Europe=/ftp/sdb1/Europe
EnglishT=/ftp/sdb1/English\ T-Z
EnglishA=/ftp/sdc1/English\ A-S
Alpha=/ftp/dir_sample/Movie\ by\ Alphabet
for dir in $Asia $Europe $EnglishT $EnglishA
do
ls $dir | while read name
do
test -e $dir/$name || ln -s $dir/$name $Alpha/$name
done
done
--
花繁柳密處撥得開方見手段
濃雲密霧中看得見才是本領
風狂雨急時站得住才是功夫
--
我架了個FTP,使用pureftpd,作業系統是Ubuntu 9.10。目前FTP的目錄
是這樣規劃的:
硬碟及資料目錄
sda3:
/ftp
sdb1:
/ftp/sdb1/Animation
/ftp/sdb1/Drama
/ftp/sdb1/Europe
/ftp/sdb1/Asia
/ftp/sdb1/English A-S
sdc1:
/ftp/sdc1/English T-Z
使用者(虛擬帳號)目錄:
/ftp/home/alpha
/ftp/home/beta
/ftp/home/charlie
規劃上想要讓使用者只能在家目錄下活動,所以使用了chroot(),再使用pureftpd
支援的symbolic link(ln -s)將各別的資料目錄連結到各別的使用者家目錄下。又
想說既然支援symbolic link的話,因為資料頗多可以弄個分類,這樣使用者要找
東西也比較好找,所以關於各別使用者的家目錄規劃如下(以alpha為例):
/ftp/home/alpha/Drama
/Animation
/Movie by Language(原始目錄已經有語言分類)
/Movie by Alphabet(就是複製全部到這裡面讓他依照字母排序)
/Movie by Decades(以資料夾最後的年份排序)
/Movie by IMDb(尚未想到,想說在年份後面再加上#1,#2或許吧)
另外說明一點,關於資料夾名稱大致如下:
Saw I 奪魂鋸一 (2004)
The Wrestler 力挽狂瀾 (2008) (DVD)
おくりびと 送行者:禮儀師的樂章(2008)
風聲 (2009)
有英文中文日文,也沒有固定的欄位,大致上是原文片名、中文片名、年份,但是
有的會有多一些符號像是":"、"-"或是像Saw I 奪魂鋸 I (2004)沒有固定的空格。
現在的想法是做一個依照上述分類的sample資料夾,之後再複製到各個使用者家目
錄。現在問題在我想要自動化管理,也就是寫script來做相關的事情。
結果第一步就遇到問題了。就是變數名稱(也就是資料夾名稱)有許多空格,執行
的時候會到空格就停住了,但是echo $name是可以顯示出空格的。可是這個包含
空格的$name拿給test用或是ln -s用就會到空格就停住而出現錯誤。
我想這裡強者很多,應該很多人會遇到使用空格當資料夾名稱的問題,版上搜尋
有找到兩篇,但是我也是用read跟while卻不行。如果真的不能使用空格當資料夾
名稱的話...那我只好把空格取代成別的符號了(linux這麼強大應該可以吧!),
這一步沒先解決的話,之後想要寫新增資料夾同步到各別的使用者家目錄或是其他
事情都沒辦法做了。
以下附上script寫法,請各位強者解答!先謝過了!
# Set all movie directory
Asia=/ftp/sdb1/Asia
Europe=/ftp/sdb1/Europe
EnglishT=/ftp/sdb1/English\ T-Z
EnglishA=/ftp/sdc1/English\ A-S
Alpha=/ftp/dir_sample/Movie\ by\ Alphabet
for dir in $Asia $Europe $EnglishT $EnglishA
do
ls $dir | while read name
do
test -e $dir/$name || ln -s $dir/$name $Alpha/$name
done
done
--
花繁柳密處撥得開方見手段
濃雲密霧中看得見才是本領
風狂雨急時站得住才是功夫
--
Tags:
Linux
All Comments
By Carolina Franco
at 2010-03-06T23:26
at 2010-03-06T23:26
By Noah
at 2010-03-09T19:59
at 2010-03-09T19:59
By Hardy
at 2010-03-13T16:38
at 2010-03-13T16:38
By Anthony
at 2010-03-16T00:17
at 2010-03-16T00:17
By Liam
at 2010-03-17T03:26
at 2010-03-17T03:26
By Oscar
at 2010-03-17T09:07
at 2010-03-17T09:07
By Charlotte
at 2010-03-19T11:05
at 2010-03-19T11:05
By Necoo
at 2010-03-19T21:22
at 2010-03-19T21:22
By Poppy
at 2010-03-21T19:14
at 2010-03-21T19:14
Related Posts
ubuntu架伺服器不穩
By Frederica
at 2010-03-05T14:07
at 2010-03-05T14:07
ubuntu架伺服器不穩
By Bennie
at 2010-03-05T12:34
at 2010-03-05T12:34
GNU linux系統
By Lily
at 2010-03-05T12:23
at 2010-03-05T12:23
Ubuntu 8.04 顯示問題
By Irma
at 2010-03-05T12:16
at 2010-03-05T12:16
ubuntu架伺服器不穩
By Jessica
at 2010-03-05T09:56
at 2010-03-05T09:56