Сценарий оболочки для дублирования каталога, блокировки одного и перемещения обоих в новый каталог — почти есть?

#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 is newdata.sh ?). Где NewData создается и NewDataCopy создается? Должны ли они быть защищены ORIG и Data?

2. Это было всего лишь незначительное исправление. Я внес правку в то, что вы собрали для меня, и это все! Я новичок, поэтому я отправил редактирование на рецензирование. Большое вам спасибо.