LINUX.ORG.RU

Супер-простой скрипт

 ,


0

2

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

  • a.В соответствующей директории создает копию системной директории /usr/share/pixmaps.
  • b.В рабочей директории создает папку png и перемещает туда все файлы с таким расширением.
  • c.В папке-копии pixmaps создает файл со списком содержимого скопированного и модифицированного каталога. Использовать ключ –l.
  • d.В папке png создает файл со списком содержимого данного каталога. Использовать ключ –l.

скрипт же имеет вот такой вид

#!/bin/bash
cp -r usr/share/pixmaps 
mkdir ~/png
mv *.png ~/png 
cd pixmaps 
touch file1.txt 
ls -lrt >> ~/file1.txt 
cd~
cd png
touch file2.txt
ls -lrt>> ~/file2.txt
cd ~ 

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

mv: не удалось выполнить stat для '*.png': нет такого файла или каталога

в чём ошибка? и правильный ли скрипт? помогите, пожалуйста, на благо будущего, заранее спасибо )

«Суперпростой», без дефиса. Всё неправильно.

Deleted ()
Ответ на: комментарий от Deleted

ну я же просила разъяснить не грамматику русского языка, а как скрипт писать

kawaii_antagonist ()
Ответ на: комментарий от kawaii_antagonist

ну прочитать man mv для начала - с какого лешего mv по регэкспу должен так просто работать в обычном баше?

anonymous ()
Ответ на: комментарий от kawaii_antagonist

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

Скрипт замечателен тем, что в нём нет ни одной правильной строчки, кроме первой.

Deleted ()
Ответ на: комментарий от Deleted

Скрипт замечателен тем, что в нём нет ни одной правильной строчки, кроме первой.

Это верно, но совсем простым он все же не является. Конкретно:

b.В рабочей директории создает папку png и перемещает туда все файлы с таким расширением.

Проблема в том, что может быть два или более файлов с одинаковым именем, но в разных директориях. А переместить их в одну нельзя, ибо в UNIX не может быть два или более файла/директории в одной директории с одинаковым именем. Есть 3 выхода:

  1. Игнорировать дубли, копировать только один файл на каждое имя
  2. Копировать файлы вместе с путями
  3. Переименовывать файлы, типа (копия 1), (копия 2)...
Vsevolod-linuxoid ★★★★★ ()

Иди лучше на рынок торговать . Там твое место .

anonymous ()

В соответствующей директории
системной директории
рабочей директории

папку

В папке-копии
данного каталога

три разных названия? три разных сущности?

Parser Error Message: Could not load type a.В


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

system-root ★★★★ ()
Последнее исправление: system-root (всего исправлений: 1)
Ответ на: комментарий от system-root

Папка — родитель, копия — клон. Что тут может быть непонятно.

anonymous ()
Ответ на: комментарий от kawaii_antagonist

разъяснить не грамматику русского языка, а как скрипт писать

Чтобы составить слово из частей, нужна морфология – раздел грамматики. Автор вовсе не так невежествен, как хочет казаться, раз знает это.

Deleted ()
#!/bin/bash

mv_keep_path() {
	target=$(echo $1 | cut -d'/' -f3-)
	path=$(echo $target | rev | cut -d'/' -f2- -s | rev)
	if [ -n "$path" ]; then
		mkdir -p "$path"
	fi
	cp "$1" "$target"
}

export -f mv_keep_path

cp -r /usr/share/pixmaps ./
mkdir -p png && cd png
find ../pixmaps -type f -name '*.png' -exec bash -c 'mv_keep_path "$0"' {} \;
ls -lR > list.txt
cd ../pixmaps && ls -lR > list.txt
cherry_boy ()
Ответ на: комментарий от cherry_boy

А можешь объяснить зачем тебе однострочники в скрипте?

Почему «mkdir -p png && cd png» а не

mkdir -p png
cd png

alpha ★★★★★ ()
Ответ на: комментарий от Deleted

Вы вспомните ваш «первый» скрипт, прослезитесь.

#!/bin/bash
echo 'Hello World'

whitedevil ()
Ответ на: комментарий от cherry_boy

и никакого диссонанса не возникает? не кажется, что ты что-то делаешь не так?

alpha ★★★★★ ()
Ответ на: комментарий от anonymous

У автора просто нет файлов .png в каталоге, поэтому mv и ругается, ты чего мозг канифолишь зря

false ★★★★★ ()

kawaii_antagonist

Ахахахаха.

Deleted ()
Ответ на: комментарий от Deleted

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

Это у безграмотных.

Deleted ()

Этот виртуал слишком жирный. Внесите другого.

ashot ★★★ ()
Ответ на: комментарий от cherry_boy

А должен возникать? В продакш я так не пишу.

А в продакшен так?

mkdir -p png && cd png || die "Усё пропало, Михалыч!"
Deleted ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.