Скрипт созданию папки linux

Bash скрипт для создания директории

Я возиться со сценариями, я могу создать сценарий, который при запуске запрашивает у меня имя для нового каталога, создает его, затем создает несколько файлов, выводит строки, а затем удаляет все это.

Я хотел бы немного изменить его, чтобы он сам создавал и называл каталог!

Это бессмысленное упражнение, которое я знаю, но возиться с ним — лучший способ научиться.

#!/bin/bash echo "Give a directory name to create:" read NEW_DIR ORIG_DIR=$(pwd) [[ -d $NEW_DIR ]] && echo $NEW_DIR already exists, aborting && exit mkdir $NEW_DIR cd $NEW_DIR pwd for n in 9 8 7 6 5 4 3 2 1 0 do touch file$n done ls file? for names in file? do echo This file is named $names > $names done cat file? cd $ORIG_DIR rm -rf $NEW_DIR echo "Goodbye" 

4 ответа

Вместо использования read Команда для того, чтобы получить значение NEW_DIR Исходя из ввода, вы можете установить жестко запрограммированное значение для переменной NEW_DIR следующим образом:

замените следующую строку в вашем скрипте:

NEW_DIR="new_dir_hard_coded_value" 

Если вы хотите сюрприз, вместо жесткого кодирования имени, вы можете использовать технику для генерации случайной строки, например

Это устанавливает NEW_DIR до строки из восьми буквенно-цифровых символов. Каждый раз, когда вы запускаете скрипт, новый каталог будет иметь другое случайное имя.

Или, чтобы получить случайное слово, выберите словарь из /usr/share/dict/ и использовать shuf , например:

$ shuf -n1 /usr/share/dict/british-english soupier $ shuf -n1 /usr/share/dict/british-english penguins 
NEW_DIR=$(shuf -n1 /usr/share/dict/british-english) mkdir "$NEW_DIR" . 

Вы могли бы даже пойти еще дальше: вы можете сказать «читать», чтобы предложить предложение для имени папки, принять его, нажав return или изменить его, как вам нравится:

read -p "Give a directory name to create: " -ei "default_name" NEW_DIR; 
Give a directory name to create: default_name 

Чтобы объединить с вышеупомянутыми предложениями, вы можете сделать следующее:

# pre-set NEW_DIR to a value or to any random string # as suggested in the other answers NEW_DIR="default_name" # Prompt for new directory name, suggesting previously selected default answer read -p "Give a directory name to create: " -ei "$NEW_DIR" NEW_DIR; 

Обратите внимание, что чтение -p «текст» запросит текст и попросит ответить в той же строке. Если вы хотите придерживаться своего кода и попросить его о 2-строчном формате, вы можете сделать

echo "Give a directory name to create:" read -ei "$NEW_DIR" NEW_DIR 

Источник

Как использовать mkdir для создания каталогов Linux

Делайте папки из терминала с помощью этой простой команды

Вы можете создавать новые папки/каталоги в Linux с помощью командной строки. Команда, которую вы используете для создания каталогов – это mkdir.

Читайте также:  Загрузочная флешка виндовс linux

Ниже приводится полный обзор того, как создавать каталоги с помощью mkdir. Мы также рассмотрим параметры, которые вы можете использовать с mkdir, и правильный синтаксис, который вы должны использовать для правильной работы команды.

Как создать новый каталог

Простейший способ создать новый каталог заключается в следующем:

Например, если вы хотите создать каталог с именем test , откройте окно терминала, перейдите к нужной папке, где вы хотите эту папку, и введите следующую команду:

Команда cd ~ используется для изменения рабочего каталога, чтобы при вводе команды mkdir папка создавалась именно там, где вы хотите.

Изменение разрешений нового каталога

После создания новой папки вы можете захотеть установить разрешения, чтобы только определенный пользователь мог получить к ней доступ, или чтобы некоторые люди могли редактировать файлы в папке, а другие имели права только для чтения.

Чтобы продолжить приведенный выше пример, мы запустим команду ls, чтобы увидеть разрешения для папки с именем test :

Вы должны запустить команду ls в любой папке, в которой находится тестовая папка. Если это ваш домашний каталог (т. Е. Вы не использовали команду cd выше), то вам не нужно беспокоиться об изменении каталога здесь.

Вы должны увидеть что-то вроде этого (но, возможно, и с несколькими другими записями, учитывая, что там, вероятно, есть и другие папки):

drwxr-xr-x 2 группа владельцев 4096 22 января 10:43 тест 

Нам интересны следующие элементы: владелец drwxrwxr-x 2 и группа группа .

  • d говорит нам, что test – это каталог.
  • Первые три буквы, следующие за буквой d, являются разрешениями владельца для каталога, указанного в имени владельца:
    • r предназначен для чтения
    • w для записи
    • x предназначен для выполнения (в данном случае это означает, что вы можете получить доступ к папке)

    Чтобы изменить разрешения для файла или папки, вы можете использовать команду chmod . Команда chmod позволяет вам указать три числа, которые устанавливают права доступа:

    Добавьте числа вместе для смеси разрешений. Например, чтобы присвоить разрешения на чтение и выполнение, вам нужно 5 (4 + 1), или для разрешения на чтение и запись вы должны использовать число 6 (4 + 2).

    Помните, что вам нужно указать три числа как часть команды chmod. Первое число предназначено для прав доступа владельца, второе – для полномочий группы, а последнее – для всех остальных.

    Например, чтобы владелец имел полные права доступа, чтение и выполнение группы, а у кого-то не было никаких прав доступа, вы должны ввести следующее:

     тест chmod 750 

    Используйте команду chgrp, чтобы изменить имя группы, которой принадлежит папка. Например, представьте, что вы хотите создать каталог, к которому могут обращаться все бухгалтеры вашей компании.

    Сначала вы должны создать учетные записи группы, набрав следующее:

     учетные записи groupadd 

    Если у вас нет правильного разрешения на создание группы, вам может потребоваться использовать sudo для получения дополнительных привилегий или перейти к учетной записи с действительными разрешениями с помощью команды su.

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

     Аккаунты chgrp 
     проверка учетных записей chgrp 

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

     тест chmod 770 

    Как создать каталог и установить разрешения одновременно

    Вы можете создать каталог и одновременно установить разрешения для этого каталога, используя следующую команду:

    Приведенная выше команда создаст папку, к которой у всех есть доступ. Очень редко вы захотите создать что-либо с такими разрешениями.

    Создать папку и любые родители, которые необходимы

    Представьте, что вы хотите создать структуру каталогов, но не хотите создавать каждую отдельную папку вместе со способом.

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

    • /главная/музыка/рок/Элис Купер
    • /главная/музыка/рок/королева
    • /главная/музыка/рэп/drdre
    • /главная/музыка/джаз/louisjordan

    Было бы досадно создавать папку для рок-музыки Алисы Купер и королевы, а затем папки для рэпа и джаза для остальных.

    Указав -p , вы можете создать все родительские папки на лету, если они еще не существуют:

    Например, эта команда mkdir используется для создания одной из папок, перечисленных выше:

     mkdir -p ~/music/rock/alicecooper 

    Получение подтверждения, что каталог был создан

    По умолчанию команда mkdir не сообщает, был ли созданный вами каталог успешно создан. Обычно, если ошибки не отображаются, вы можете предположить, что это сработало.

    Однако, если вы хотите получить более подробный вывод, чтобы знать, что было создано, используйте переключатель -v :

    mkdir: созданный каталог/path/to/directoryname

    Использование mkdir в скрипте оболочки

    Вы также можете использовать команду mkdir как часть сценария оболочки.

    В нашем примере мы рассмотрим скрипт, который принимает путь. Когда скрипт будет выполнен, он создаст папку и добавит один текстовый файл с именем «hello».

     #!/bin/bash 
    mkdir $ @
    cd $ @
    нажмите Привет

    Первая строка должна быть включена в каждый скрипт, который вы пишете. Он используется, чтобы показать, что это действительно BASH-скрипт.

    • mkdir , конечно, используется для создания папки.
    • $ @ (также называемый входными параметрами), помещенный в конец второй и третьей строки, заменяется значением, которое вы указали при запуске скрипта.
    • cd перейдет в указанный вами каталог.
    • touch создает пустой файл с именем привет .

    Выполните следующие шаги, чтобы попробовать скрипт самостоятельно:

    1. Откройте окно терминала. Ctrl + Alt + T должен сделать это быстро.
    2. Введите эту команду:
     nano createhellodirectory.sh 
     #!/bin/bash 
    mkdir $ @
    cd $ @
    нажмите Привет
     chmod + x createhellodirectory.sh 
     ./ createhellodirectory.sh test 

    Пока все хорошо, но теперь попробуйте Шаг 7 снова. Появится ошибка о том, что папка уже существует.

    Есть несколько вещей, которые мы можем сделать, чтобы улучшить сценарий. Например, даже если папка уже существует, нам все равно, пока она там.

     #!/bin/bash 
    mkdir -p $ @
    cd $ @
    touch hello

    Если вы укажете -p как часть команды mkdir, это не приведет к ошибке, но если она не существует, она создаст папку.

    Сенсорная команда создаст файл, если он не существует, но если он существует, он просто изменяет дату и время последнего доступа.

    Представьте, что оператор touch был заменен оператором echo, который записывает текст в файл:

     #!/bin/bash 
    mkdir -p $ @
    cd $ @
    повторить "привет" >> привет

    Если вы снова и снова будете запускать команду ./ createhellodirectory.sh test , это приведет к тому, что файл с именем “hello” в каталоге тестов будет становиться все больше и больше с увеличением числа строк слова “привет” в этом.

    Теперь, это может или не может быть так, как задумано, но давайте пока скажем, что это не желаемое действие. Вы можете написать тест, чтобы убедиться, что каталог не существует, прежде чем запустить команду echo:

     #!/bin/bash 
    mkdir $ @ 2>/dev/null;
    if [$? -экв 0]; затем
    cd $ @
    эхо "привет" >> привет
    выход
    fi

    Приведенный выше скрипт является нашим предпочтительным методом для обработки создания папок. Команда mkdir создает папку, которая передается в качестве входного параметра, но любые сообщения об ошибках отправляются в/dev/null (что, по сути, нигде не означает).

    Третья строка проверяет состояние вывода предыдущей команды, которая является оператором «mkdir», и в случае успеха выполняет операторы до тех пор, пока не будет достигнут оператор «fi».

    Это означает, что вы можете создать папку и выполнять все, что вы хотите, если команда выполнена успешно. Если вы хотите сделать что-то еще, если команда не была успешной, вы можете просто ввести оператор else:

     #!/bin/bash 
    mkdir $ @ 2>/dev/null;
    if [$? -экв 0]; thencd $ @ echo "hello" >> helloexitelsecd $ @ echo "hello"> helloexitfi

    В приведенном выше сценарии, если оператор mkdir работает, то оператор echo отправляет слово «hello» в конец файла с именем «hello», тогда как, если он не существует, будет создан новый файл «hello» со словом «hello». привет “в этом.

    Этот пример не особенно практичен, потому что вы можете достичь тех же результатов, просто запустив строку echo “hello”> hello . Суть примера в том, чтобы показать, что вы можете запустить команду «mkdir», скрыть вывод ошибки, проверить состояние команды, чтобы увидеть, была ли она успешной или нет, а затем выполнить один набор команд, если «mkdir» Команда была успешной и другой набор, если это не так.

    Источник

Оцените статью
Adblock
detector