С Новым годом! Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
 Аватар для Каменщик
1 / 1 / 0
Регистрация: 13.01.2019
Сообщений: 35

Необходимо описать комментариями действия команд

13.01.2019, 19:59. Показов 2425. Ответов 9

Студворк — интернет-сервис помощи студентам
Необходимо описать комментариями действия команд. Я здесь немного уже по набрасывал все что мог, но остальное уже не знаю и прошу помощи вашей. Особо интересует 21, 26, 36, 50 строки


Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/bin/bash
if [ "$#" -ne 0 ] 
###
#квадратные скобки проверяют выражение на истинность
 
then
  echo -e "\e[31mWrong number of parameters."
  #Возвращает true если (-e) файл существует; 
  #слэш(\)символ экранирует не экранируемое;
  #дефис(-)символ перенаправление.Например cd -
 
  echo -e "Type -help as first parameter to see possible inputs.\e[39m"
  #Возвращает true если (-e) файл существует;   
 
else
  if [ "$1" = "-h" ]   ######добавил правую квадратную скобку! 
  #левая квадратная скобка является синонимом команды test - проверка истинности;
  #Возвращает true если (-h) файл является символической ссылкой; 
 
 then
    echo -e "\e[34mAll users home folders by size:\e[39m"
    #Возвращает true если (-e) файл существует;
    #двоеточие(:)пустая команда(эквивалент операции NOP - no op,нет операции) может рассматриваться как синоним встроенной команды true
    #Команда ":" так же является встроенной командой Bash, которая всегда возвращает "true" (0). 
 
    eval "du -s /home/* | sort -h"
    #Возвращает true если (-s) нулевой размер файла;
    #Возвращает true если (-h) файл является символической ссылкой;
    #символ(*)звездочка служит шаблоном для подстановки в имена файлов(как команда ls);
    
    #конвейер(|). Передает вывод предыдущей команды на ввод следующей или на вход командного интерпретатора shell.
    #Этот метод часто используется для связывания последовательности команд в единую цепочку.
 
  else
 
    if [ "$1" = "-help" ] 
    #(=) Оператор присваивания
 
    then
      echo "1. Type -h as first parameter to show all users" 
      echo "home directories sorted by size."
      echo "2. Type catalogue path as first parameter to show"
      echo "all folders located inside sorted by size".
 
    else 
 
      echo -e "\e[34mSize of all catalogs located inside $1:\e[39m"
      #Возвращает true если (-e) файл существует;
 
      eval "du -s $1/* | sort -h"
    #Возвращает true если (-s) нулевой размер файла;
    #Возвращает true если (-h) файл является символической ссылкой;
 
    fi
  fi
fi
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.01.2019, 19:59
Ответы с готовыми решениями:

Записать машинные коды команд, их 16-ричное представление, выполнить действия и установить флаги
Записать машинные коды команд, их 16-ричное представление, выполнить действия и установить флаги. 1) SUB BX, SI 2) ADC SI,...

Необходимо создать обработку команд которые введёт пользователь в текстовом меню
Есть программа которая принимает текст пользователя и нумерует каждую букву по алфавиту Добавлено через 36 секунд /** * @autor...

Как описать действия?
как в коде, после // program Project1; const max=10; // Запись текста в файл //а - имя перезаписываемого файла, b - записываемый...

9
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
13.01.2019, 21:29
21. ескейп последовательность '\e[34m' меняет цвет выводимого на терминал текста в синий цвет
'\e[39m' меняет цвет текста на белый
26. eval Дает возможность оболочке сделать все подстановки, после чего возвращает строку оболочке
для ее выполнения в новом виде. Например здесь нет глоббинга потому что звездочка находится внутри двойных кавычек
в которых глоббинг не работает и оболочке возвращается клон этой строки только без кавычек. Оболочка делает
свои подстановки уже в возвращенной eval команде.
36. В этой конструкции оператор "присваивания" является на самом деле оператором сравнения строк, это нужно запомнить.
50. смотри п. 26 )) Только здесь в агрументах eval заключенных в двойные кавычки есть переменная $1 которую сперва
раскрывает оболочка, подает на вход eval, а eval возвращает оболочке команду в которой вместо переменной $1 уже
подставленно ее значение.
Надеюсь это поможет
1
 Аватар для Каменщик
1 / 1 / 0
Регистрация: 13.01.2019
Сообщений: 35
13.01.2019, 22:55  [ТС]
Благодарю, а Вы не можете подсказать что необходимо отредактировать или вписать чтобы данный скрипт работал с конкретным путем. Например в данный момент скрипт работает у меня с путем диска C, но мне нужно чтобы был путь D.
За ранее спасибо!
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
14.01.2019, 00:27
Цитата Сообщение от Каменщик Посмотреть сообщение
работает у меня с путем диска C, но мне нужно чтобы был путь D.
Вы видимо запускаете скрипт через какойто эмулятор. Я плохо разбираюсь в виндовс поэтому не подскажу.
Я немного переделала ваш скрипт
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash
if [ $# -eq 0 ]; then
        echo -e "\e[31mWrong number of parameters."
        echo -e "Type -help as first parameter to see possible inputs.\e[0m"
else
        if [ "$1" = "-h" ]; then
                echo -e "\e[34mAll users home folders by size:\e[0m"
                du -s /home/* | sort -k1,1nr
        else
                if [ "$1" = "-help" ]; then
                        echo "1. Type -h as first parameter to show all users" 
                        echo "home directories sorted by size."
                        echo "2. Type catalogue path as first parameter to show"
                        echo "all folders located inside sorted by size".
                else 
                        if [ -d "$1" ]; then
                                echo -e "\e[34mSize of all catalogs located inside $1:\e[0m"
                                du -d1 $1 | sort -k1,1nr
                        else
                                echo -e "\e[31m$1 Directory does not exist.\e[0m"
                        fi
                fi
        fi
fi
Надеюсь это поможет
0
 Аватар для Каменщик
1 / 1 / 0
Регистрация: 13.01.2019
Сообщений: 35
14.01.2019, 22:59  [ТС]
АА! Я разобрался с моим скриптом там нужно банально ввести ./script и каталог который тебе нужен например /mnt/d

Цитата Сообщение от Каменщик Посмотреть сообщение
#!/bin/bash
if [ "$#" -ne 0 ]
и в первой/второй строке нужно изменить с нуля на 1.


Но с вашим скриптом так не работает, у меня он вообще не запускается к сожалению, в смысле он работает но выдает:
Code
1
2
Wrong number of parameters.
Type -help as first parameter to see possible inputs.
1
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
15.01.2019, 09:38
Каменщик, Он у вас работает. В моем варианте стоит условие
[ $# -eq 0 ] при котором и выводится
подобное сообщение. Тоесть если вы его запускаете без параметров )))
0
 Аватар для Каменщик
1 / 1 / 0
Регистрация: 13.01.2019
Сообщений: 35
15.01.2019, 18:48  [ТС]
Дак я менял условие 0 на 1 и все равно выдает Wrong number of parameters.
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
15.01.2019, 19:55
Каменщик, Не нужно менять условие нужно прочитать вывод программы.
Если вы не знаете английского, на всякий случай переведу
"Неправильное количество параметров"
"Введите -help первым параметром что бы посмотреть варианты ввода"
Помойму эти строки вы сами писали?

Добавлено через 16 минут
Скопируйте мой вариант, ни чего не меняя, вставте
например в файл test.sh, сделайте его исполняемым
Bash
1
chmod 755 test.sh
и запустите 4 разными способами, Вы же сами логику программы создавали.
Я только подправила его для корректной работы.
.
Bash
1
2
3
4
/test.sh
./test.sh -help
./hest.sh -h
./hest.sh /home/$USER/путь_к_нужной_директории
После команды
Bash
1
./test -h
придется подождать некоторое время. Дождитесь результата,
нужно время чтобы просканировать всю домашнюю деректорию
Я еще добавила проверку на существование директории.
Если вы введете например
Bash
1
./test lsdkjflskdjfslkdfjsl
Программа выдаст что нет такой директории
1
 Аватар для Каменщик
1 / 1 / 0
Регистрация: 13.01.2019
Сообщений: 35
15.01.2019, 21:20  [ТС]
Вы мне очень помогли спасибо! Скрипт не мой вот и хочу разобраться что к чему, но я уже все начинаю ближе подходить к пониманию. Не понимание осталось только вот на этом:

Цитата Сообщение от nezabudka Посмотреть сообщение
$# -eq
Цитата Сообщение от nezabudka Посмотреть сообщение
du -d1 $1 | sort -k1,1nr

хотелось бы знать что они значат.
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
15.01.2019, 23:03
Лучший ответ Сообщение было отмечено Каменщик как решение

Решение

Каменщик,
Bash
1
[ $# -eq 0 ]
здесь сравнивается количество входных параметров с нулем, тоесть условие будет верно
если не задать ни одного параметра и тогда выдается предупреждающее сообщение.
Bash
1
du -d1 $1 | sort -k1,1nr
Здесь вместо опции -s я использовала опцию -d1 означающую вложенность
директорий. Иначе в выводе присутствовали бы и размеры обычных файлов
находящихся в этой директории. Учитесь пользоваться справкой
Bash
1
2
man du
man sort
При отлаживании опций в sort хорошо пользоваться длинной опцией --debug
которая показывает по какому полю идет сортировка и возможные ошибки.
в команде sort идет сортировка по первому полю -k1,1 состоящему из размера директорий
в байтах, тип сортировки числовой, за это отвечает опция n, а опция r сортирует это поле
по убыванию
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.01.2019, 23:03
Помогаю со студенческими работами здесь

Описать действия в данном коде с массивами
Данный код: Program exe2; Const n = 10; var a: array of integer; i, max, min: integer; begin randomize; ...

Описать действия в данном коде с массивами
Pascal-программа имеет вид: const n=10; var a: array of integer; i,imax,imin,tmp: integer; begin writeln('массив:'); ...

Необходимо организовать однонаправлений список структурой, и предусмотреть следующие действия :
В работе необходимо организовать однонапрямлений список структурой, и предусмотреть следующие действия : - добавление элементов в...

Для типизированного файла необходимо создать программу выполняющий следующие действия
Для типизированного файла необходимо создать программу выполняющий следующие действия: 1) заполнение базы данных 2) возможность...

Массив: при переборе элементов необходимо выполнить два действия по одной ссылке
При переборе елементов мне необходимо выполнить два действия по одной ссылке, я выбрал LinkedList так-как я перерисовываю свой экран. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru