2011-06-30 12 views
3

我誰使用下列命令創建子文件夾的文件夾中的故事爲每一個新的故事是記者,我開始:如何從命令行創建一個包含新文本文件的文件夾?

/bin/mkdir -p ~/Desktop/NewStory/{Copy,Data,Notes,PubMaterial,RefMaterial,Media/{Audio,Images,Video}} 

它的工作原理就像一個魅力,但我也想創建一個文本文件在名爲「DataJournal.txt」的「Data」子文件夾中,我不知道該怎麼做。

往前一步,我想補充我的數據期刊的四個標題:

---數據文件夾設置

---數據簡介

- -data審計/操縱

---數據查詢

我現在可以使用echo命令創建這樣的文本文件,但是我不知道如何將其用於創建文件夾/子文件夾的命令中。我會很感激任何幫助!

回答

4

只是包裝整個事情變成一個shell腳本並執行,而不是mkdir命令。

#!/bin/bash 

if [[ -z "${1}" ]]; then 
    die "FolderName Required" 
fi 


/bin/mkdir -p ~/Desktop/$1/{Copy,Data,Notes,PubMaterial,RefMaterial,Media/{Audio,Images,Video}} 

echo -n "---Data Folder Setup 

---Data Introduction 

---Data Audit/Manipulation 

---Data Queries" > ~/Desktop/$1/Data/DataJournal.txt 

加入少許一般性使用該腳本將bash script-name.sh StoryName作爲$1內插到傳遞給腳本的第一個參數。 (或者只是./script-name.sh StoryName如果你碰巧chmod +x它,所以它是可執行文件)。

+0

更好的是,您可以使它更通用,並將NewStory的值作爲參數傳遞。 – James

+0

非常真實,我發現在正確性和速度之間有一個折衷。如果傑夫認爲有必要,我可以更新這個參數。 – zellio

+0

我很想看到這一點。非常感謝! –

2

如果你真的想這樣做在同一行,你可以鏈&&一起命令,但你可能會更好過把它在它自己的shell腳本:

#!/bin/bash 

if [ $# -eq 0 ]; then echo "No name specified."; exit; fi; 
/bin/mkdir -p ~/Desktop/$1/{Copy,Data,Notes,PubMaterial,RefMaterial,Media/{Audio,Images,Video}} 
echo -n "---Data Folder Setup 

---Data Introduction 

---Data Audit/Manipulation 

---Data Queries" > ~/Desktop/$1/Data/DataJournal.txt 

如果你把這個變成了create-story.sh,那麼你可以用./create-story.sh NewStory來調用它。不要忘記使其可執行chmod +x create-story.sh

+0

這太好了。能夠以這種方式命名文件夾真是太好了。只有一個問題,當我打開DataJournal.txt文件時,它有這個問題:---數據文件夾設置\ n \ n - 數據介紹.... –

+0

對不起 - 換出多線回波線在其他答案回聲。我會更新我的答案:) –

+0

添加-e參數回顯[啓用轉義字符],它會工作。 – Matt

1

如果你打算做這個有很多,我想創建一個腳本。 [或者你也能做出這樣的功能,並把它放到你的.bashrc]

複製&粘貼到一個文件:

#!/bin/bash 
if [ $# -eq 0 ]; then echo "No name specified."; exit; fi; 
mkdir -p ~/Desktop/"$1"/{Copy,Data,Notes,PubMaterial,RefMaterial,Media/{Audio,Images,Video}} 
echo '---Data Folder Setup 

---Data Introduction 

---Data Audit/Manipulation 

---Data Queries' > ~/Desktop/"$1"/Data/DataJournal.txt 
exit 0 

保存在某個地方爲「newstory」,或者你在喜歡你主文件夾[〜/] 打開一個終端並鍵入[增訂] chmod +x newstory; sudo mv newstory /usr/games/在/ usr /遊戲/通常是在$ PATH變量,所以當你鍵入「newstory」它知道到哪裏尋找它,執行它。 注意 [截至目前這裏沒有錯誤的保護,因此,如果您沒有參數[$ 1]它只是使所有的目錄,在你的〜/桌面/目錄下執行腳本其他的答案!

現在你都做!下一次你想添加一個帶有所有子目錄的新目錄和帶有標題的DataJournal.txt時,打開你的終端並鍵入newstory "Name Of Story"!如果你的名字中有空格,請務必引用它,否則它只會聽到第一個單詞。

P.S.如果你想在你的.bashrc中使用一個函數,只需要包裝上面的代碼[除了'#!/ bin/bash'在一個函數中,添加到〜/ .bashrc:`newstory(){paste code here;}

+0

您的#!除非你的bash令你的驅動器的根源感到不寒而慄。 – zellio

+0

哎呀!你是對的,修正。 – Matt

+0

好的,當我進入sudo命令時,我得到了這個:mv:將newstory重命名爲/ usr/games /:Permission denied –

相關問題