如何从命令行创建一个包含新文本文件的文件夹?

时间:2011-06-30 15:35:58

标签: bash shell command-line

我是一名记者,使用以下命令为我开始的每个新故事创建一个包含子文件夹的故事文件夹:

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

它就像一个魅力,但我也想在名为“DataJournal.txt”的“数据”子文件夹中创建一个文本文件,我不知道该怎么做。

更进一步,我想添加我的数据期刊的四个标题:

  

---数据文件夹设置

     

---数据介绍

     

---数据审核/操作

     

---数据查询

我现在可以使用echo命令创建这样的文本文件,但我不知道如何将其用于创建文件夹/子文件夹的命令。我会感激任何帮助!

3 个答案:

答案 0 :(得分: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,那么它是可执行的。)

答案 1 :(得分: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使其可执行。

答案 2 :(得分: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”,或者您在主文件夹中的任何内容[〜/] 打开终端并输入[UPDATED] chmod +x newstory; sudo mv newstory /usr/games/ / usr / games /通常在$ PATH变量中,因此当您键入“newstory”时,它知道在哪里查找并执行它。 注意 [截至目前]此处的其他答案没有错误保护,因此如果您执行不带参数[$ 1]的脚本,它将只显示〜/ Desktop /目录中的所有目录!

现在你们都完成了!下次要添加包含所有子目录的新目录和带标题的DataJournal.txt时,请打开终端并键入newstory "Name Of Story"!如果名称中有空格,请务必引用它,否则它只会捕获第一个单词。

P.S。如果你想在你的.bashrc中使用一个函数,只需包装上面的代码[函数中除了'#!/ bin / bash',添加到〜/ .bashrc:`newstory(){ 粘贴代码 ; }