Автоматический способ создания дерева каталогов

Вы не хотите «открывать порт», вы хотите настроить веб-сервер.

По умолчанию веб-сервер прослушивает порт 80 для HTTP или веб-сервер открывает этот порт для вас , Ваш сайт хранится в папке, вы можете называть его «www», но это не «AKA» 127.0.0.1, и если вы обслуживаете его на других компьютерах, вы не можете позволить своему веб-серверу прослушивать только 127.0.0.1. Кроме того, если доступ ограничивается только локальной сетью, безопасность может не быть проблемой, но при этом необходимо учитывать такую ​​проблему безопасности, когда вы настраиваете сервер для доступа других к вашим файлам. Прежде чем продолжить, убедитесь, что вы поняли этот материал.

Вы можете начать с установки пакета apache2, и ваш веб-сервер запущен и работает (файлы хранятся в /var/www/html).

Я предлагаю вам Google что-то вроде «ubuntu apache php», чтобы найти множество руководств по этой теме, то есть установить, настроить веб-сервер, способный запускать PHP-сайты (возможно, включая сервер MySQL), если вы столкнулись с некоторыми конкретными проблемы в этой процедуре, задайте эти вопросы.

СОВЕТ: может быть более полезно добавить вашу конкретную версию Ubuntu, когда Googling, например: «ubuntu 14.04 LTS apache php»

11
задан 10 April 2018 в 15:51

6 ответов

Несмотря на то, что способ printf муру не может быть избит, мне лично нравится jot для такого рода вещей. jot не установлен по умолчанию в Ubuntu. Пакет athena-jot предоставляет его. Любая из этих команд работает:

mkdir -p "$(jot -s/ -c 26 A)" jot -s/ -c 26 A | xargs mkdir -p

Действительно любая команда, которая генерирует последовательность букв и объединяет их со слэшами, облегчит это, потому что ее вывод затем может быть передан на mkdir -p либо через путь printf muru (как в ответе муру) или с помощью jot . Вот несколько примеров с использованием нескольких инструментов и xargs, которые не требуют установки программного обеспечения, за исключением, возможно, минимальных систем или Ubuntu Core:

perl -we 'print join "/", A..Z' | xargs mkdir -p ruby -we 'print (?A..?Z).to_a * ?/' | xargs mkdir -p python3 -c 'print("/".join(__import__("string").ascii_uppercase))' | xargs mkdir -p

Old Ubuntu выпуски поставляются с Python 2 вместо Python 3. Для этого просто измените python3 на python, чтобы эта последняя команда работала, если вы действительно хотите сделать это с помощью Python.

Аналогично, Можно ответить иначе: можно записать:

printf '%s/' {A..Z} | xargs mkdir -p

Обратный / в пути к каталогу mkdir -p просят создать, не проблема и, возможно, стилистически предпочтительнее. Но это прекрасно, чтобы опустить это, как и другие примеры в этом ответе.

2
ответ дан 17 July 2018 в 17:08

На очень простом уровне вы можете использовать расширение {A..Z} для генерации всей буквы, затем итеративно сделать и ввести каждый из них:

~/test_directory$ for d in {A..Z}; do mkdir "$d"; cd "$d"; done ~/test_directory/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z$

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

Однако, если фактические имена каталогов отличаются от простого алфавита, вам нужно каким-то образом предоставить список имен каталогов, возможно, через файл, по которому вы повторяете и выполняете тот же процесс снова. В принципе, это

while IFS= read -r dir_name;do mkdir "$dir_name"; cd "$dir_name" ;done < directory_list.txt
7
ответ дан 17 July 2018 в 17:08

С mkdir, printf и расширением скобки bash:

$ mkdir -p "$(printf "%s/" {A..Z})" $ tree A A └── B └── C └── D └── E └── F └── G └── H └── I └── J └── K └── L └── M └── N └── O └── P └── Q └── R └── S └── T └── U └── V └── W └── X └── Y └── Z 25 directories, 0 files {A..Z} расширяется до A B ... Z, printf "%s/" печатает аргументы с помощью / после них, поэтому Я получаю A/B/...Z/ и mkdir -p создает каталог A/B/.../Z с любыми родительскими каталогами, которые необходимо создать.
25
ответ дан 17 July 2018 в 17:08

Несмотря на то, что способ printf муру не может быть избит, мне лично нравится jot для такого рода вещей. jot не установлен по умолчанию в Ubuntu. Пакет athena-jot предоставляет его. Любая из этих команд работает:

mkdir -p "$(jot -s/ -c 26 A)" jot -s/ -c 26 A | xargs mkdir -p

Действительно любая команда, которая генерирует последовательность букв и объединяет их со слэшами, облегчит это, потому что ее вывод затем может быть передан на mkdir -p либо через путь printf muru (как в ответе муру) или с помощью jot . Вот несколько примеров с использованием нескольких инструментов и xargs, которые не требуют установки программного обеспечения, за исключением, возможно, минимальных систем или Ubuntu Core:

perl -we 'print join "/", A..Z' | xargs mkdir -p ruby -we 'print (?A..?Z).to_a * ?/' | xargs mkdir -p python3 -c 'print("/".join(__import__("string").ascii_uppercase))' | xargs mkdir -p

Old Ubuntu выпуски поставляются с Python 2 вместо Python 3. Для этого просто измените python3 на python, чтобы эта последняя команда работала, если вы действительно хотите сделать это с помощью Python.

Аналогично, Можно ответить иначе: можно записать:

printf '%s/' {A..Z} | xargs mkdir -p

Обратный / в пути к каталогу mkdir -p просят создать, не проблема и, возможно, стилистически предпочтительнее. Но это прекрасно, чтобы опустить это, как и другие примеры в этом ответе.

2
ответ дан 23 July 2018 в 18:00

На очень простом уровне вы можете использовать расширение {A..Z} для генерации всей буквы, затем итеративно сделать и ввести каждый из них:

~/test_directory$ for d in {A..Z}; do mkdir "$d"; cd "$d"; done ~/test_directory/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z$

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

Однако, если фактические имена каталогов отличаются от простого алфавита, вам нужно каким-то образом предоставить список имен каталогов, возможно, через файл, по которому вы повторяете и выполняете тот же процесс снова. В принципе, это

while IFS= read -r dir_name;do mkdir "$dir_name"; cd "$dir_name" ;done < directory_list.txt
7
ответ дан 23 July 2018 в 18:00
  • 1
    это круто. Вот следующий вопрос. скажем, я хотел иметь каталог A1..A100 внутри A (в той же структуре AtoZ). Затем B1..B100 внутри B. Таким образом, он выглядит примерно так: & gt; [D0] imgur.com/jfuKEdf – Nish 10 April 2018 в 09:10
  • 2
    @Nish ah, для которого потребуется внутренний цикл, поэтому for d in {A..Z}; do mkdir "$d"; cd "$d"; for i in {1..100}; do mkdir "${d}${i}" ;done ; done – Sergiy Kolodyazhnyy 10 April 2018 в 09:15
  • 3
    Или даже без внутреннего цикла for d in {A..Z}; do mkdir "$d"; cd "$d"; mkdir "$d"{1..100}; done – Sergiy Kolodyazhnyy 10 April 2018 в 09:17
  • 4
    Спасибо за это. Кажется, что работает, но порядок каталога выглядит прикрученным, так что 2 не после 1. Его сортировка случайным образом. В любом случае, чтобы это исправить? Вот скриншот - & gt; [D0] imgur.com/a/Zqj1c – Nish 10 April 2018 в 09:22
  • 5
    @Nish Порядок сортировки является текстовым, а не численным, как я думаю, вы ожидаете. Что касается tree, я не уверен, как это исправить, но я думаю, что это даже не проблема tree, а порядок сортировки оболочки. Я предлагаю задать вопрос об этом либо здесь, либо еще лучше на unix.stackexchange.com – Sergiy Kolodyazhnyy 10 April 2018 в 10:05

С mkdir, printf и расширением скобки bash:

$ mkdir -p "$(printf "%s/" {A..Z})" $ tree A A └── B └── C └── D └── E └── F └── G └── H └── I └── J └── K └── L └── M └── N └── O └── P └── Q └── R └── S └── T └── U └── V └── W └── X └── Y └── Z 25 directories, 0 files {A..Z} расширяется до A B ... Z, printf "%s/" печатает аргументы с помощью / после них, поэтому Я получаю A/B/...Z/ и mkdir -p создает каталог A/B/.../Z с любыми родительскими каталогами, которые необходимо создать.
25
ответ дан 23 July 2018 в 18:00
  • 1
    Спасибо за это. Думаю, я получу эту ошибку. Я использую команду mkdir: A / B / C / D / E / F / G / H / I / J / K / L / M / N / O / P / Q / R / S / T / U / V / W / X / Y: нет такого файла или каталога – Nish 10 April 2018 в 09:08
  • 2
    @Nish В команде mkdir есть -p. – muru 10 April 2018 в 09:09
  • 3
    мой плохой, я попробовал это на своем mac вместо ubuntu. И следующий вопрос: - & gt; скажем, я хотел иметь каталог A1..A100 внутри A (в той же структуре AtoZ). Затем B1..B100 внутри B. Таким образом, он выглядит примерно так: & gt; imgur.com/jfuKEdf – Nish 10 April 2018 в 09:17
  • 4
    Предположим, вы публикуете последующий отчет в качестве фактического вопроса, а не в комментариях, и не использовали изображения, кроме текста. Это было бы намного лучше, нет? – muru 10 April 2018 в 09:25
  • 5
    Я понимаю вашу мысль. Его трудно опубликовать в виде своего кода и его огромного выпуска. Поэтому просто смотреть на скриншот облегчает его понимание. – Nish 10 April 2018 в 09:29

Другие вопросы по тегам:

Похожие вопросы: