Как я могу создать папку с новым текстовым файлом в командной строке? - PullRequest
3 голосов
/ 30 июня 2011

Я репортер, который использует следующую команду для создания папки истории с подпапками для каждой новой истории, которую я начинаю:

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

Это работает как шарм, но я также хотел бы создать текстовый файл в подпапке «Данные» под названием «DataJournal.txt», и я не знаю, как это сделать.

Идя дальше, я хотел бы добавить четыре заголовка моих журналов данных:

--- Настройка папки данных

--- Введение данных

--- Аудит / манипулирование данными

--- Запросы данных

Теперь я могу создать такой текстовый файл с помощью команды echo, но я не знаю, как включить это в команду, которая создает папки / подпапки. Буду благодарен за любую помощь!

Ответы [ 3 ]

4 голосов
/ 30 июня 2011

Просто оберните все это в сценарий оболочки и выполните его вместо команды 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 сделать его исполняемым).

2 голосов
/ 30 июня 2011

Если вы действительно хотите сделать это в одну строку, вы можете объединить команды вместе с &&, но вам, вероятно, лучше поместить его в собственный скрипт оболочки:

#!/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.

1 голос
/ 30 июня 2011

Если вы собираетесь много заниматься этим, я бы создал скрипт. [Или вы можете также сделать это функцией и поместить ее в ваш .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 () { вставьте код здесь ; } ​​

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...