#bash #shell #command-line
#bash #оболочка #командная строка
Вопрос:
Я репортер, который работает с наборами данных. Каждый раз, когда я получаю новый набор данных, я сразу делаю две вещи: дублирую файл (ы) и блокирую оригиналы.
Я хочу автоматизировать этот процесс. Изменив сценарий оболочки, который я использую для создания вложенных папок для создания отчетов о проектах, и связав его с кучей команд, я смог добиться базовой функциональности, но это беспорядочно. Я был бы признателен за вашу помощь в оптимизации.
Вот что я делаю сейчас (потерпите, и я обещаю быть максимально ясным):
Я загружаю данные в папку на рабочем столе под названием «DataInbox», где у меня также есть следующий сценарий оболочки, сохраненный как newdata.sh:
#!/bin/bash
if [[ -z "${1}" ]]; then
die "FolderName Required"
fi
/bin/mkdir -p ~/Desktop/DataFarm/$1/{ProtectedOrig,Data}
echo -n "---Data Folder Setup
---Data Introduction
---Data Audit/Manipulation
---Data Queries" > ~/Desktop/DataFarm/$1/Data/DataJournal.txt
При выполнении bash newdata.sh DirectoryName
я создаю каталог с вложенными папками «Data» и «ProtectedOrig» и текстовым файлом с именем «DataJournal.txt » со встроенными четырьмя заголовками.
Внутри каталога «DataInbox» я запускаю этот беспорядок, только связанный вместе с amp;amp;
:
$ ditto NewData/ NewDataCopy
$ bash newdata.sh DirectoryName
$ mv NewData/ /Users/JSG/Desktop/DataFarm/DirectoryName/ProtectedOrig/NewData
$ mv NewDataCopy/ /Users/JSG/Desktop/DataFarm/DirectoryName/Data/NewDataCopy
$ chflags -R uchg /Users/JSG/Desktop/DataFarm/DirectoryName/ProtectedOrig/
Как я уже сказал, я хотел бы упростить это. На самом деле, что я действительно хотел бы сделать, так это превратить все это в сценарий оболочки, и я изо всех сил пытаюсь заставить его работать. Заранее благодарю вас от нетерпеливого новичка.
Комментарии:
1. Если все, что вы хотите, это убедиться, что у вас есть оригинальные копии, вы можете изучить инструменты управления конфигурацией, например, git или svn.
Ответ №1:
Не уверен, что я неправильно понимаю ваш вопрос, но вы хотите объединить все это в один скрипт, подобный этому?
#!/bin/bash
if [[ -z "${1}" ]]; then
die "FolderName Required"
fi
newDirName="DirectoryName"
newBaseDir="~/Desktop/DataFarm/$1/"
/bin/mkdir -p $newBaseDir/{ProtectedOrig,Data}
echo -n "---Data Folder Setup
---Data Introduction
---Data Audit/Manipulation
---Data Queries" > $newBaseDir/Data/DataJournal.txt
ditto NewData/ NewDataCopy
newdata.sh $newDirName
mv NewData/ $newBaseDir/ProtectedOrig/NewData
mv NewDataCopy/ $newBaseDir/Data/NewDataCopy
chflags -R uchg $newBaseDir/ProtectedOrig/
Комментарии:
1. Теперь, когда у вас есть это как newdatatest.sh сделайте a
chmod x newdatatest.sh
, чтобы сделать его исполняемым, а затем запустите его:newdatatest.sh
. Я использую команды, которые вы предоставили из вашего сообщения, поэтому некоторые каталоги могут быть отключены (например, where isnewdata.sh
?). ГдеNewData
создается иNewDataCopy
создается? Должны ли они быть защищены ORIG и Data?2. Это было всего лишь незначительное исправление. Я внес правку в то, что вы собрали для меня, и это все! Я новичок, поэтому я отправил редактирование на рецензирование. Большое вам спасибо.