2015-08-17 58 views
1

我正在尋找能夠將Windows用戶目錄中的用戶文件複製到備份驅動器的腳本。我非常希望除Appdata之外的所有內容都可以傳輸。我做了一個真正簡單的腳本,但由於我傳輸的文件夾在名稱中有空格(例如'/ media/gage/Backup \ Drive /'),它表示Drive'不存在。Bash腳本:識別路徑拖放到konsole

我試圖拖拽&從文件管理器拖放/粘貼目錄到終端上,一旦拖拽到終端上,它就會在整個路徑上出現'。有沒有什麼辦法讓輸入識別文件名與周圍的'

這裏是我到目前爲止所(我真的很新的bash腳本)

#!/bin/bash 
echo "Enter the full path to the user's directory" 
read srcName 
echo "Enter the full path to the backup directory" 
read dstName 
echo "Copying from Users to Backup" 
cd $srcName 
cp -rp Documents $dstName 
cp -rp Pictures $dstName 
cp -rp Desktop $dstName 
cp -rp Music $dstName 
cp -rp Videos $dstName 
cp -rp Downloads $dstName 
cp -rp Favorites $dstName 

任何幫助表示讚賞

感謝。

+0

這些名字的開頭和結尾都沒有「';引號是句法,而不是文字。 –

+0

順便說一句,http://shellcheck.net/會爲你抓到這個,而不需要任何人蔘與。 –

+0

此外,使用'IFS =讀取-r srcName'和'IFS =讀取-r dstName' ...或者,更好的是,在命令行上輸入參數,而不是從標準輸入讀取它們。 –

回答

2

終端早於拖動&拖放和複製&粘貼,所以都沒有以一種可靠的方式進行集成。每個終端仿真器都要決定要做什麼。

下面是一些常見的反應如何,當你拖動從圖形文件管理器&降一個或多個文件:

  • xterm什麼都不做。
  • gnome-terminal假裝你輸入的路徑,空格分隔,外殼逃脫的話,每一個是完全單一適當的轉義引用:

    '/path/foo' '/path/Rock Lobster - B-52'\''s.mp3'

  • konsole彈出一個菜單,讓你的副本之間進行選擇/移動到外殼的當前目錄中,或作爲殼轉義也就是說,如果它們含有metacharaters其僅單引號的路徑粘貼:

    /path/foo '/path/Rock Lobster - B-52'\''s.mp3'

從你描述,你使用gnome-terminal,只是沒有嘗試拖動&丟棄包含單引號,看看還有什麼它的文件名的文件。


那麼你能做什麼?

我會建議你只需要逐字複製粘貼的路徑,而不是拖動&刪除文件。這就是每個其他程序的工作原理,以及Charles Duffy的解決方案。

要將路徑作爲字符串進行復制粘貼而不是拖動文件,通常可以在文件管理器中打開「屬性」或「詳細信息」選項卡,然後複製完整路徑。

然而,爲了好玩,這裏是你如何可以解釋輸入爲拖動&從文件管理器丟棄的文件,如果你真的想,通過填充數組使用eval

#!/bin/bash  
echo "Drag&Drop files/dirs and press enter when done." 
echo "Do not drag&drop/paste/type text, because it will be evaluated as code." 
IFS="" read -r input 
eval "files=($input)" 

echo "Here are the things you pasted:" 
for file in "${files[@]}" 
do 
    ls -ld "$file" 
done 

它運行這樣的:

$ ./test 
Drag&Drop files/dirs and press enter when done. 
Do not drag&drop/paste/type text, because it will be evaluated as code. 
'/usr/local/home/me/Documents' '/usr/local/home/me/Downloads' 

Here are the things you pasted: 
drwxr-x--- 3 me eng 4096 Aug 7 13:46 /usr/local/home/me/Documents 
drwxr-x--- 2 me eng 4096 Aug 17 14:32 /usr/local/home/me/Downloads 
+0

啊!我錯過了那裏的推理。凌亂的解決方案,但是,鑑於上下文,它是有意義的。 –

+0

幾乎試圖編輯問題以更加明確地複製和粘貼方面。 –

+0

我會毫不猶豫地這樣做。而我沒有。 –