FTP規劃及ShellScript如何使用包含空白的變數 - Linux

Steve avatar
By Steve
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

--
花繁柳密處撥得開方見手段
濃雲密霧中看得見才是本領
風狂雨急時站得住才是功夫

--
Tags: Linux

All Comments

Carolina Franco avatar
By Carolina Franco
at 2010-03-06T23:26
把IFS改成換行號試試
像是IFS="
"
Noah avatar
By Noah
at 2010-03-09T19:59
今天試了一個下午,有改過IFS=newline不行,不過是怎樣
不行已經忘記了,今天下午試了很多方法都不行。
Hardy avatar
By Hardy
at 2010-03-13T16:38
你不會真的打newline吧?
最簡單改掉空格的方法是跑rename " " "" * 很多次
Anthony avatar
By Anthony
at 2010-03-16T00:17
這會把空格消除掉
Liam avatar
By Liam
at 2010-03-17T03:26
樓上的id好好玩喔!
Oscar avatar
By Oscar
at 2010-03-17T09:07
對不起,我還真的打newline,我是看man bash裡<new-line>
Charlotte avatar
By Charlotte
at 2010-03-19T11:05
目前測試應該是可以,感謝chroot的幫忙,那我寫一些
script之後再跟大家分享。
Necoo avatar
By Necoo
at 2010-03-19T21:22
請問這樣改IFS在執行script其他指令不會有問題嗎?
Poppy avatar
By Poppy
at 2010-03-21T19:14
我會把var加 "$var"

ubuntu架伺服器不穩

Frederica avatar
By Frederica
at 2010-03-05T14:07
這問題有可能是MTU的問題 你得補上你的伺服器如何連上internet的說明或是圖 不然沒辦法判斷 我最近就被MTU、MRU擺了一道 ※ 引述《PiGFAcE (被遺忘在沙灘上的腳印)》之銘言: : 弄 ubuntu 架伺服器 跑一些 telnet 服務 : 不過常常會掉封包 : 跑去查了一下 ifcon ...

ubuntu架伺服器不穩

Bennie avatar
By Bennie
at 2010-03-05T12:34
※ 引述《PiGFAcE (被遺忘在沙灘上的腳印)》之銘言: : 弄 ubuntu 架伺服器 跑一些 telnet 服務 : 不過常常會掉封包 : 跑去查了一下 ifconfig : eth0 Link encap:Ethernet HWaddr 00:00:E8:28:(馬賽克處理) : ...

GNU linux系統

Lily avatar
By Lily
at 2010-03-05T12:23
我的是Eee pc元老 用的是GNU linux系統 我因為重灌兩次以後 網路突然不能連了 請教一下是什麼問題 - ...

Ubuntu 8.04 顯示問題

Irma avatar
By Irma
at 2010-03-05T12:16
小弟在自己的NB上灌了 ubuntu 8.04 LTS 螢幕上卻出現下面類似狀況: http://launchpadlibrarian.net/17665060/ubu.JPG 爬了文 得到的答案應該是系統不支援NB解析度 要修改xorg 請問有比較詳細的教學或除錯文可以提供參考嗎? 謝謝 -- ...

ubuntu架伺服器不穩

Jessica avatar
By Jessica
at 2010-03-05T09:56
弄 ubuntu 架伺服器 跑一些 telnet 服務 不過常常會掉封包 跑去查了一下 ifconfig eth0 Link encap:Ethernet HWaddr 00:00:E8:28:(馬賽克處理) inet addr:140(馬賽克處理)213 Bcast:14 ...