Команда MORE – постраничный вывод на экран консоли.
Формат командной строки:
имя_команды – Команда, вывод которой отображается на экране.
/E – Разрешение использования дополнительных возможностей.
/C – Очистка экрана перед выводом каждой страницы.
/P – Учет символов перевода страницы.
/S – Сжатие нескольких пустых строк в одну строку.
/Tn – Замена символов табуляции n пробелами (по умолчанию n = 8).
Стандартный набор ключей можно поместить в переменную среды MORE.
+n – Начало вывода первого файла со строки с номером n.
файлы – Список отображаемых файлов. Для разделения имен файлов в списке используйте пробелы.
Если использование дополнительных возможностей разрешено, в ответ на приглашение — More — можно вводить следующие команды:
P n – Вывод следующих n строк.
S n – Пропуск следующих n строк.
F – Вывод следующего файла.
Q – Завершение работы.
= – Вывод номера строки.
? – Вывод строки подсказки.
пробел – Вывод следующей страницы.
ENTER – Вывод следующей строки.
MORE /? – выдать справку по использованию команды.
MORE textfile.txt – отобразить на экране содержимое текстового файла textfile.txt в постраничном режиме. Для перемещения на строку нажимается клавиша ENTER, для перемещения на страницу – пробел, для завершения просмотра – клавиша Q.
MORE /C /B textfile.txt – то же, что и с предыдущем случае, но с очисткой экрана перед выводом каждой страницы, и сжатием следующих друг за другом, пустых строк, в одну.
SET MORE=/C /B – установить значение переменной окружения для команды MORE . В данном случае, команда MORE без параметров, буде эквивалентна команде MORE /C /B
more *.txt sitemap.xml – отобразить содержимое всех текстовых файлов и файла sitemap.txt текущего каталога.
more +6 sitemap.xml – отобразить содержимое файла, пропустив первые 6 строк.
Командная строка в Microsoft Windows по прежнему активно используется для осуществления различных действий с операционными системами Windows, в том числе и для упрощенного выполнения каких-либо задач, или автоматизации выполняемых действий. В данной статье мы рассмотрим, казалось бы, не сложную задачу – вывод сообщения средствами командой строки, и различные способы осуществления данной задачи.
Использование echo
Вот так будет выглядеть пример, выводящий сообщение “Привет мир!” в командной строке.
Дополнив пример выше несколькими дополнительными командами и пробелами, сделаем более “красивый” вариант с отображением текста в командной строке:
Использование msg
Программа msg поставляется вместе с Windows еще со времен версий Windows 2000 и Windows XP, и предназначена для передачи сообщений от одного пользователя другому пользователю. Она предлагает простые возможности по выводу сообщения, и так же проста в использовании.
В качестве примера, выведем сообщение “Привет мир!”:
Использование mshta
Mshta – программа, предназначенная для запуска приложений формата hta, которые представляют из себя программы, написанные с использованием HTML, CSS, JavaScript и VBScript. В данном случае, нам пригодиться возможность выполнения команд, написанных на языке JavaScript и VBScript. Используя знания данных языков, можно выводить сообщения.
Сперва рассмотрим возможности использования скриптового языка VBScript совместно с mshta.
mshta vbscript:Execute(“msgbox “”Привет мир!””:close”)
Добавим в наше сообщение заголовок “Пример”:
mshta vbscript:Execute(“msgbox “”Привет мир!””,0,””Пример””:close”)
Сделаем так, чтобы в сообщении были различные значки. Начнем со значка с ошибкой:
mshta vbscript:Execute(“msgbox “”Привет мир!””,16,””Заголовок””:close”)
Сменим его на вопросительный знак:
mshta vbscript:Execute(“msgbox “”Привет мир!””,32,””Заголовок””:close”)
Или, на значок информации:
mshta vbscript:Execute(“msgbox “”Привет мир!””,48,””Заголовок””:close”)
Теперь рассмотрим возможности mshta с JavaScript.
Отобразим сообщение “Привет мир!”:
mshta javascript:alert(“Привет мир!”);close();
Выведем сообщение, состоящее из нескольких строк:
mshta javascript:alert(“Привет мир!
И снова привет мир!
Все еще привет мир!”);close();
Использование PowerShell
Из командной строки так же можно вызвать оболочку PowerShell, передав ей все необходимые параметры, в результате чего будет отображено окно с нужным сообщением.
Каждое выражение может быть либо арифметическим, логическим или текстовым выражением, либо командой перехода на новую строку (ключевое слово нс). Значения выражений выводятся последовательно в строку области ввода-вывода и разделяются пробелом. Когда строка полностью заполнена, автоматически происходит переход к началу новой строки. Когда окно ввод-вывода полностью заполнено, последующие команды вывода будут сдвигать содержимое окна вверх, вытесняя верхние строки окна.
Пример
При выполнении этой команды КуМир выводит курсор в окно ввода-вывода и ждет, пока пользователь введет соответствующие значения. По окончании введенные значения присваиваются указанным величинам. В качестве имени величины можно указать имя простой величины или имя элемента таблицы с указанием значений индексов. Признаком конца ввода служит нажатие на клавишу Enter. При вводе нескольких чисел они отделяются друг от друга запятой или пробелом.
Попробуем написать программу, выводящую строку с надписью “Привет, мир”, в среде программирования КуМир.
Запускаем среду КуМир, в появившемся окне должен быть шаблон для программы:
Вывод текста на экран осуществляется при помощи команды вывод:
1 алг Привет 2 нач 3 вывод “Привет, мир!”4 кон
На экране появится строка:
Кроме того, можно дополнить уже готовую программу выводом еще одной строки:
1 алг Привет2 нач 3 вывод “Привет, мир!” , нс 4 вывод ” Это моя пер вая программа! ” 5 кон
Обратите внимание на команду нс в конце 3 строки: именно она отвечает за переход на новую строку! Таким образом, на экране появится:
Алгоритмический язык имеет сходство с математическим тем, что в нём также используется понятие величины. Используются, в-основном, величины двух типов – числовые и символьные, хотя не исключены и другие типы. Числовые величины – это числа: натуральные, целые, вещественные; символьные – буквы, цифры, слова, предложения.
Переменные, предназначенные для записи числа, называются числовыми. Переменные, в которые можно записывать слова, называются символьными. При этом под словом понимается любой набор символов, которые можно ввести с клавиатуры.
Алфавит языка КуМир состоит:
Наш почтовый ящик имеет некоторые необычные свойства. Когда в него помещается другое значение, начальное стирается и исчезает. Оно уже не может быть восстановлено.
Среди значений символьной переменной есть слово, не содержащее ни одного символа. Это слово называют пустым.
Осуществить запись значения в переменную можно несколькими способами. Первый способ состоит в использовании команды присваивания. Она имеет следующий вид: a:= 15 b:= “ВАСЯ” x:= 125.5 z:=ax 2 + bx + c
Обратите внимание на следующие две команды: a:= 275 b:= “275”
В первой команде записана переменная числового типа, и её значение может использоваться в арифметических вычислениях. Это значение хранится в компьютере как число. Во втором примере переменная имеет символьный тип, её значение состоит из трех символов – трех цифр. Это значение не может быть использовано в вычислениях. Оно хранится в компьютере в виде трех символов.
Примечание. Вещественные числа на языке КуМир записываются через точку – 1.5, 3.14 и т.п. Есть и другая форма записи – показательная, например, 1.025E+2, 1.025Е-2. В привычной форме записи это выглядит так: 1.025Е+2 – 1,025х102=102,5; 1.025Е-2 – 1,025х102=0,01025.
Запись значения в переменную при помощи команды присваивания обладает существенным недостатком. Каждый раз, когда нужно изменить значение переменной, приходится заново редактировать такие программы, чтобы изменить соответствующую команду присваивания.
Оказывается, можно изменить значение переменной при каждом новом прогоне программы, избегая ее повторного редактирования. Для этого используется команда ввод. Эта команда действует подобно команде присваивания в том смысле, что она также записывает какое-то значение в переменную. Однако, в данном случае устанавливаемое значение переменной зависит от того, какая информация набирается на клавиатуре во время выполнения программы.
Посмотрим, как работает команда ввод с числовыми данными. Предположим, в программе имеется команда ввод a
Помочь в данный ситуации может использование команды вывод вместе с подсказкой перед командой ввод. В рассматриваемом случае в программе нужно записать четыре команды вывод “Время равно ” ввод t вывод “Пройденный путь равен ” ввод S
Ясно, что в ответ на запрос необходимо ввести значение времени, будет выполнена команда ввода в переменную t . Сходную ситуацию будем иметь и с исполнением второй команды вывода.
Команда вывод даёт компьютеру указание вывести на экран слова, числа, значения переменных, результаты арифметических действий и других операций, доступных компьютеру.
Рассмотрим еще один пример использования команды вывод .
Если команда вывод применяется без использования кавычек, но с использованием чисел и арифметических действий, то компьютер вычисляет результат и выводит его на экран.
Например, после того, как компьютер выполнит команду вывод 6-4 на экран будет выведено число 2.
Операции сложения и вычитания обозначаются с помощью обычных знаков арифметических действий + и – . Что же касается знаков умножения и деления, то в КуМир для обозначения этих операций используется соответственно знаки * и / , для возведения в степень – знак ** .
Примеры использования команды вывод для выполнения других операций будут рассмотрены позднее.
Команду вывод можно использовать для вывода на экран значений нескольких переменных, нескольких слов или чисел. В этом случае они обычно разделяются запятой. При выводе слов нужно иметь ввиду, что разделитель запятая не оставляет пробела между соседними значениями. Если пробел нужен, то мы сами должны его добавить. Например, после выполнения программы a:= “Миша” b:= “Иванов” вывод a,b на экран будет выведено МишаИванов
Если мы слегка видоизменим третью команду программы: вывод a, ” ” ,b то получим то, что нужно: Миша Иванов
Ключевое слово нс в качестве одного из выражений команды вывод , является признаком перехода на новую строку.
Например, команды вывод “A” вывод “B” выводят на экран AB
в то время как команды вывод “A” , нс вывод “B” выводят на экран A B
Более коротко можно записать вывод “A” , нс , “B”
Встроенные функции
Функцию В языке КуМир полезно наглядно представлять в виде некоторого преобразователя, который может иметь несколько входов и один выход. На входы поступают значения переменных, числа, слова, на выходе получается число или слово. Данные, поступающие на входы, называются аргументами функции.
Некоторым из функций присвоены специальные имена, по которым, в случае необходимости, мы можем вызвать их в ходе исполнения программы. Такие функции называются встроенными функциями. В Бейсик встроено много различных функций. Познакомимся пока с двумя из них.
Функция преобразования в целое int (x)
Аргументом этой функции может быть любое число или значение числовой переменной. На выходе получается наибольшее целое число, не превосходящее значения аргумента.
Если значение аргумента положительно, то его преобразование функцией int состоит просто в отбрасывании дробной части числа. Например, если на вход int(x) поступит число 2.8, то на выходе получим просто 2. В результате выполнения программы алг Целое число нач . вещ x . цел y . x:= 2.8 . y:= int (x) . вывод y кон получим: 2
В случае отрицательного значения аргумента, работа преобразователя int(x) похитрее. Так, если на вход поступит число -2.6, то на выходе будем иметь -3, поскольку именно -3 является наибольшим целым числом, меньшим -2.6.
Функция нахождения абсолютного значения abs (x)
Аргументом этой функции может быть так же любое число или значение числовой перемен¬ной. На выходе получается абсолютная величина значения на входе. Абсолютная величина числа определяется следующим образом:
алг Абсолютная величина числа нач . вещ x . цел y . x:= -5.13 . y:= abs (x) . вывод y кон получим: 5.13
Другие примеры встроенных функции мы рассмотрим ниже.
Выражения
В информатике выражение представляет собой формулу, определяющую некоторое значение. На языке Бейсик выражение записывается в форме, близкой к обычной математической записи. Оно состоит из чисел, переменных, функций, соеди¬ненных знаками арифметических действии. Выполняются операции в соответствии со следующим приоритетом: сначала вычисляются функции, затем выполняется возведение в степень, потом умножение и деление и, наконец, сложение и вычитание. Все формулы записываются в строку без подстрочных и надстрочных знаков. Не разрешается ставить подряд два знака арифметических действий, например, нельзя писать a/-b
Нельзя также опускать знаки действий. Например, запись 6a-b будет ошибочной. Правильная запись имеет вид: 6*a-b
Если нужно выполнить какие-либо действия с нарушением их приоритета, то необходимо использовать круглые скобки. Например, a/(4*b-c) В этом выражении сначала вычисляется значение знаменателя, а затем происходит вычисление дроби.
Если выражение содержит подряд стоящие операции одинакового приоритета (например, сложение и вычитание, умножение и деление), то они выполняются по порядку слева направо. Например, выражение на языке КуМир a+b/c*d равносильно следующей алгебраической формуле a+(b/c)d.
Если бы мы захотели получить на языке КуМир выражение, соответствующее формуле a+(b/(c/d)), то можно было бы использовать скобки a+b/(c*d) или записать в виде a+b/c/d
then I do something like this
and I get:
The system cannot find the path specified.
34.5k14 gold badges104 silver badges129 bronze badges
asked Jan 11, 2012 at 17:18
Like Krister Andersson said, the reason you get an error is your variable is expanding with spaces:
set INSTALL_PATH=C:My AppInstaller
if exist %INSTALL_PATH% (
if exist C:My AppInstaller (
If “C:My” exists, run “AppInstaller” with “(” as the command line argument.
You see the error because you have no folder named “App”. Put quotes around the path to prevent this splitting.
answered Jan 11, 2012 at 22:13
Save this as *.bat file and see differences
3,6312 gold badges30 silver badges39 bronze badges
answered May 26, 2016 at 13:23
Wakan TankaWakan Tanka
7,41215 gold badges65 silver badges121 bronze badges
The lines you showed us look okay, so the problem is probably not there. So, please show us more lines. Also, please show us the exact value of INSTALL_PATH.
answered Jan 11, 2012 at 17:24
Mike NakisMike Nakis
54.9k11 gold badges107 silver badges140 bronze badges
answered Jan 11, 2012 at 17:38
28.7k11 gold badges75 silver badges93 bronze badges
So I changed the encoding to plain old ANSI text, and then the issue went away.
answered Feb 23, 2018 at 15:18
Время на прочтение
Материал, перевод которого мы публикуем сегодня, предназначен для тех, кто хочет освоить командную строку Linux. Умение эффективно пользоваться этим инструментом позволяет экономить немало времени. В частности, речь здесь пойдёт о командной оболочке Bash и о 21 полезной команде. Также мы поговорим о том, как пользоваться флагами команд и псевдонимами Bash, которые позволяют ускорить ввод длинных инструкций.
Термины
В ходе освоения работы в командной строке Linux вам может встретиться множество понятий, в которых полезно будет ориентироваться. Некоторые из них, вроде «Linux» и «Unix», или «командная оболочка» и «терминал», иногда путают. Поговорим об этих и о других важных терминах.
Unix — это популярная операционная система, которая была разработана Bell Labs в 1970-х. Её код был закрытым.
Linux — это самая популярная Unix-подобная операционная система. Она в наши дни используется на множестве устройств, в том числе — и на компьютерах.
Терминал (terminal), или эмулятор терминала — это программа, дающая доступ к операционной системе. Одновременно можно открывать несколько окон терминала.
Оболочка (shell) — это программа, которая позволяет отправлять операционной системе команды, написанные на особом языке.
Bash расшифровывается как Bourne Again SHell. Это — самый распространённый язык командной оболочки, используемый для взаимодействия с операционной системой. Кроме того, оболочка Bash по умолчанию используется в macOS.
Скрипт (script) — это небольшая программа, которая содержит последовательность команд командной оболочки. Скрипты записывают в файлы, использовать их можно многократно. При написании скриптов можно пользоваться переменными, условными конструкциями, циклами, функциями и другими возможностями.
Теперь, когда мы рассмотрели важные термины, хочу отметить, что здесь я буду пользоваться терминами «Bash», «оболочка» и «командная строка» как взаимозаменяемыми, равно как и понятиями «директория» (directory) и «папка» (folder).
Стандартные потоки, которыми мы будем здесь пользоваться — это стандартный ввод (standard input, stdin), стандартный вывод (standard output, stdout) и стандартный вывод ошибок (standard error, stderr).
Если в примерах команд, которые будут приводиться ниже, вы встретите нечто вроде my_whatever — это означает, что данный фрагмент нужно заменить чем-то вашим. Например — именем файла.
Теперь, прежде чем приступать к разбору команд, которым посвящён этот материал, давайте взглянем на их список и на их краткие описания.
21 Bash-команда
- man: выводит руководство пользователя (справку) по команде.
- pwd: выводит сведения о рабочей директории.
- ls: выводит содержимое директории.
- ps: позволяет просматривать сведения о работающих процессах.
▍Манипуляции с файловой системой
- cd: изменение рабочей директории.
- touch: создание файла.
- mkdir: создание директории.
- cp: копирование файла.
- mv: перемещение или удаление файла.
- ln: создание ссылки.
▍Перенаправление ввода-вывода и конвейеры
- head: чтение начала файла.
- tail: чтение конца файла.
- cat: чтение файла и вывод его содержимого на экран или конкатенация файлов.
▍Удаление файлов, остановка процессов
- rm: удаление файла.
- kill: остановка процесса.
- grep: поиск информации.
- ag: продвинутая команда для поиска.
Поговорим об этих командах подробнее.
Подробности о командах
Для начала давайте разберёмся с командами, результаты работы которых выдаются в форме stdout. Обычно эти результаты появляются в окне терминала.
man command_name: вывод руководства по команде, то есть — справочной информации.
pwd: вывод на экран пути к текущей рабочей директории. В ходе работы с командной строкой пользователю часто нужно узнавать то, где именно в системе он находится.
ls: вывод содержимого директории. Эта команда тоже используется весьма часто.
ls -a: вывод скрытых файлов. Здесь применён флаг -a команды ls. Использование флагов помогает настраивать поведение команд.
ls -l: вывод подробной информации о файлах.
Обратите внимание на то, что флаги можно комбинировать. Например — так: ls -al.
ps: просмотр выполняющихся процессов.
ps -e: вывод сведений обо всех выполняющихся процессах, а не только о тех, которые связаны с текущей оболочкой пользователя. Данную команду часто используют именно в таком виде.
cd my_directory: изменение рабочей директории на my_directory. Для того чтобы перейти на один уровень выше в дереве каталогов используйте в качестве my_directory относительный путь ../.
touch my_file: создание файла my_file по заданному пути.
mkdir my_directory: создание папки my_directory по заданному пути.
mv my_file target_directory: перемещение файла my_file в папку target_directory. При указании целевой директории нужно использовать абсолютный путь к ней (а не конструкцию вроде ../).
Команду mv, кроме того, можно использовать для переименования файлов или папок. Например, выглядеть это может так:
mv my_old_file_name.jpg my_new_file_name.jpg
cp my_source_file target_directory: создание копии файла my_source_file и помещение её в папку target_directory.
ln -s my_source_file my_target_file: создание символической ссылки my_target_file на файл my_source_file. Если изменить ссылку, то изменится и исходный файл.
Если файл my_source_file будет удалён, то my_target_file останется. Флаг -s команды ln позволяет создавать ссылки и для директорий.
Теперь поговорим о перенаправлении ввода-вывода и конвейерах.
my_command < my_file: заменяет дескриптор файла стандартного ввода (stdin) на файл my_file. Это может оказаться полезным в том случае, если команда ожидает ввода неких данных с клавиатуры, а эти данные заранее сохранены в файле.
Теперь взглянем на конвейерную обработку данных.
То, что выводит одна команда, подаётся на вход другой команды. Это похоже на подключение одной трубы к другой
В Linux конвейерную обработку данных можно организовать с использованием практически любой правильно составленной команды. Часто говорят, что всё в Linux — это конвейер.
С помощью символа конвейера можно объединять в цепочку несколько команд. Выглядит это так:
Конвейер из нескольких команд можно сравнить с трубопроводом
Теперь поговорим о чтении данных из файлов и о выводе их на экран.
head my_file: считывает строки из начала файла и выводит их на экран. Читать можно не только содержимое файлов, но и то, что команды выводят в stdin, используя эту команду в качестве элемента конвейера.
tail my_file: считывает строки из конца файла. Эту команду тоже можно использовать в конвейере.
Head (голова) находится спереди, а tail (хвост) — сзади
Если вы работаете с данными, используя библиотеку pandas, тогда команды head и tail должны быть вам знакомы. Если это не так — взгляните на вышеприведённый рисунок, и вы без труда их запомните.
Рассмотрим другие способы чтения файлов, поговорим о команде cat.
Команда cat либо выводит содержимое файла на экран, либо конкатенирует несколько файлов. Это зависит от того, сколько файлов передано этой команде при вызове.
cat my_one_file.txt: когда этой команде передают один файл — она выводит его в stdout.
Если же передать ей два файла или большее количество файлов, то она ведёт себя по-другому.
cat my_file1.txt my_file2.txt: получив на вход несколько файлов эта команда конкатенирует их содержимое и выведет то, что получилось в stdout.
Теперь поговорим о том, как удалять файлы и останавливать процессы.
rm my_file: удаляет файл my_file.
rm -r my_folder: удаляет папку my_folder и все содержащиеся в ней файлы и папки. Флаг -r указывает на то, что команда будет работать в рекурсивном режиме.
Для того чтобы система не запрашивала подтверждение при выполнении каждой операции удаления файла или папки, воспользуйтесь флагом -f.
kill 012345: останавливает указанный выполняющийся процесс, давая ему время на корректное завершение работы.
kill -9 012345: принудительно завершает указанный запущенный процесс. Флаг вида -s SIGKILL означает то же самое, что и флаг -9.
Для поиска данных можно использовать разные команды. В частности — grep, ag и ack. Начнём наше знакомство с этими командами с grep. Это — проверенная временем, надёжная команда, которая, правда, медленнее других и не так, как они, удобна в использовании.
grep my_regex my_file: выполняет поиск my_regex в my_file. При обнаружении совпадений возвращается, для каждого из них, вся строка. По умолчанию my_regex воспринимается как регулярное выражение.
grep -i my_regex my_file: поиск выполняется без учёта регистра символов.
grep -v my_regex my_file: возвращает все строки, в которых не содержится my_regex. Флаг -v означает инверсию, он напоминает оператор NOT, имеющийся во многих языках программирования.
grep -c my_regex my_file: возвращает сведения о количестве совпадений с искомым шаблоном, найденных в файле.
grep -R my_regex my_folder: выполняет рекурсивный поиск во всех файлах, находящихся в заданной папке и в папках, вложенных в неё.
Теперь поговорим о команде ag. Она появилась позже grep, она быстрее, работать с ней удобнее.
ag my_regex my_file: возвращает сведения о номерах строк, и сами строки, в которых найдены совпадения с my_regex.
ag -i my_regex my_file: поиск выполняется без учёта регистра символов.
Команда ag автоматически обрабатывает файл .gitignore и исключает из вывода то, что найдено в папках или файлах, перечисленных в этом файле. Это очень удобно.
ag my_regex my_file — skip-vcs-ignores: содержимое файлов систем автоматического контроля версий (наподобие .gitignore) при поиске не учитывается.
Кроме того, для того чтобы указать команде ag на то, какие пути к файлам нужно исключить из поиска, можно создать файл .agignore.
В начале этого раздела мы упомянули о команде ack. Команды ack и ag очень похожи, можно сказать, что они взаимозаменяемы на 99%. Однако команда ag работает быстрее, поэтому я описал именно её.
Теперь поговорим о работе с архивами.
tar my_source_directory: объединяет файлы из папки my_source_directory в один файл tarball. Такие файлы удобно использовать для того, чтобы передавать кому-нибудь большие наборы файлов.
Tarball-файлы, создаваемые этой командой, представляют собой файлы с расширением .tar (Tape ARchive). То, что в названии команды и в расширении имён файлов, создаваемых ей, скрыто слово «tape» (лента), говорит о том, как давно существует эта команда.
tar -cf my_file.tar my_source_directory: создаёт tarball-файл с именем my_file.tar с содержимым папки my_source_directory. Флаг -c расшифровывается как «create» (создание), а флаг -f как «file» (файл).
Для извлечения файлов, находящихся в .tar-файле, используется команда tar c флагами -x («extract», извлечение) и -f («file», файл).
tar -xf my_file.tar: извлекает файлы из my_file.tar в текущую рабочую директорию.
Теперь поговорим о том, как сжимать и распаковывать .tar-файлы.
tar -cfz my_file.tar.gz my_source_directory: здесь, с использованием флага -z («zip», алгоритм сжатия) указано, что для сжатия файлов должен использоваться алгоритм gzip (GNU zip). Сжатие файлов позволяет экономить дисковое пространство при хранении таких файлов. Если же файлы планируется, например, передавать другим пользователям, это способствует более быстрой загрузке таких файлов.
Распаковать файл .tar.gz можно, добавив флаг -z к команде извлечения содержимого .tar-файлов, которую мы рассматривали выше. Выглядит это так:
tar -xfz my_file.tar.gz
Надо отметить, что у команды tar есть ещё множество полезных флагов.
Bash-псевдонимы
Bash-псевдонимы (их ещё называют алиасами или сокращениями) предназначены для создания сокращённых наименований команд или их последовательностей, использование которых вместо обычных команд ускоряет работу. Если у вас, предположим, имеется псевдоним bu, за которым скрывается команда python setup.py sdist bdist_wheel, то для вызова данной команды достаточно воспользоваться этим псевдонимом.
Для создания подобного псевдонима достаточно добавить следующую команду в файл ~/.bash_profile:
alias bu=”python setup.py sdist bdist_wheel”
Если в вашей системе нет файла ~/.bash_profile, то вы можете создать его самостоятельно, воспользовавшись командой touch. После создания псевдонима перезапустите терминал, после чего вы сможете этим псевдонимом пользоваться. В данном случае ввод двух символов заменяет ввод более чем трёх десятков символов команды, которая предназначена для сборки Python-пакетов.
В ~/.bash_profile можно добавлять псевдонимы для любых часто используемых команд.
В этом материале мы рассмотрели 21 популярную команду Bash и поговорили о создании псевдонимов для команд. Если вам эта тема интересна — вот цикл публикаций, посвящённый Bash. Здесь можно найти pdf-версию этих публикаций. Кроме того, если вы хотите освоить Bash, помните о том, что тут, как и при изучении любой другой программной системы, важна практика.
Желание упростить и ускорить всевозможные расчеты присуще человеку с древних времен. Создавая различные приспособления для счета, человек прошел долгий путь. Сегодняшний компьютер способен выполнять сотни миллионов операций в секунду. Для решения вычислительных задач требуется сначала составить алгоритм их решения, а затем записать его в виде программы, используя какой-либо язык программирования.
Язык программирования устанавливает набор правил, определяющих внешний вид программы и действия, которые выполнит исполнитель под ее управлением.
Язык программирования Паскаль () используется для обучения программированию и является базой для ряда профессиональных языков программирования.
Существует большое количество сред программирования, поддерживающих язык Паскаль: , FreePascal, Delphi, GNU Pascal, —, и др. В учебном курсе используется среда (с ней вы работали, знакомясь с учебными компьютерными исполнителями).
Команда вывода
Демонстрировать работу любой программы имеет смысл только тогда, когда она выводит какую-либо информацию.
Программа на языке (тело программы) должна начинаться со слова , а заканчиваться словом и точкой. Программа, состоящая из этих команд, разделенных пробелом или переводом строки, может быть запущена на выполнение, но она ничего не делает. Добавим в нее команду вывода приветствия:
Результат работы программы отражается в нижней части окна программы в окне вывода (пример 14.1).
Команда ( ) предназначена для вывода данных.
Текст, который нужно вывести на экран, заключают в апострофы (одинарные кавычки). Этот текст не анализируется и выводится на экран в том виде, в котором он записан. Текст можно записать как на русском, так и на любом другом языке. Текстом может быть произвольный набор символов.
В программе может быть несколько команд вывода. Если необходимо вывести текст, записанный в несколько строк, то используют команду ( ). Буквосочетание «» (сокращение от англ. — линия, строка), записанное в конце команды, означает, что после вывода нужно перевести курсор в новую строку.
Пример 14.2. Выведем на экран компьютера следующий текст: «Привет! Я компьютер!!! Я умею выполнять программы! Сегодня ты написал свою первую программу, а я ее выполнил. Сейчас на экране – результат этой программы».
Используя сочетание команд и , текст можно расположить по-разному.
Как вы уже знаете, текст в команде ( ), записанный в кавычках, не анализируется. Если кавычки опустить, то производится анализ тех данных, которые записаны в скобках. Например, если в скобках написать арифметическое выражение, то сначала вычисляется его значение, а затем выводится результат.
Пример 14.3. Посчитаем значение выражения 2 + 2 ∙ 2.
Если записать выражение в кавычках, то будет выведено само выражение. При отсутствии кавычек на экран будет выведено значение данного выражения.
Понятие типа данных
На практике редко приходится писать программы, которые решают только одну задачу. Обычно программы пишутся для решения целого класса задач, которые можно сформулировать в общем виде.
С такими задачами вы уже сталкивались в курсе математики. Например, решение задачи «Найдите площадь прямоугольника» можно записать так: = ∙ , где переменные и обозначают соответственно длину и ширину прямоугольника, а — площадь. Зная эту формулу, можно найти площадь любого прямоугольника.
В программировании для решения задач в общем виде также используют переменные. Поскольку с такими переменными будет работать компьютер, то они должны храниться в его памяти.
Информацию, представленную в пригодном для обработки на компьютере виде, называют данными.
Переменная в программировании — это именованная ячейка памяти, хранящая значение переменной.
Компьютер может обрабатывать данные разных типов: целые и действительные числа, символы, тексты и др.
Тип данных определяет способ хранения данных в памяти компьютера, диапазон возможных значений данных и операции, которые с этим типом данных можно выполнять.
Для того чтобы использовать какую-либо переменную, ее необходимо описать. Описание переменных выполняется до начала программы (команды ) (пример 14.4). При описании переменной выделяется память для хранения значения этой переменной. В процессе выполнения программы значение переменной может изменяться.
Для описания переменных используется команда (сокращение от англ. variable — переменная).
Формат записи команды следующий:
Для обозначения имени переменной используются буквы латинского алфавита, цифры и знак «_». Первым символом должна быть буква или знак подчеркивания.
Тип данных в языке программирования позволяет работать с числами и выполнять над ними арифметические действия: сложение, вычитание, умножение и деление.
Оператор присваивания
Одной из основных команд для обработки данных в программе является оператор присваивания.
Оператор присваивания предназначен для того, чтобы:
- задавать значения переменным;
- вычислять значения арифметического выражения (результат вычисления будет записан как значение переменной).
Формат записи оператора присваивания:
В записи арифметического выражения используются знаки математических действий — сложения, вычитания, умножения, деления:
Приоритет выполнения операций соответствует принятому в математике: сначала выполняются умножение и деление, а затем сложение и вычитание. Для изменения порядка действий в выражениях можно использовать скобки.
Для записи обыкновенной дроби используется знак деления. Знак умножения опускать нельзя. Целая часть дробного числа отделяется от дробной части точкой.
(Рассмотрите пример 14.6 и пример 14.7)
Ввод данных
Начальные значения переменным можно задавать не только с помощью оператора присваивания, но и путем ввода с клавиатуры. В этом случае, если необходимы вычисления с новым набором значений исходных данных, текст программы не нужно изменять.
Команда ( ) предназначена для ввода данных. В скобках через запятую перечисляются имена переменных, значения которых необходимо ввести.
Ввод данных происходит в нижней части окна программы . Для этого используется окно «Ввод данных». После нажатия кнопки «Ввести» или клавиши «» введенные значения переносятся в окно вывода. После завершения работы программы в этом же окне будет выведен результат (пример 14.8).
Структура программы
Все программы на языке программирования имеют общую структуру.
В программе можно выделить следующие разделы:
- заголовок программы (является необязательным);
- подключаемые библиотеки (модули) (если подключать дополнительные библиотеки не нужно, раздел отсутствует; известные библиотеки: Drawman, Robot, RobTasks);
- описание переменных с указанием их типа;
- описание вспомогательных алгоритмов (если использовать вспомогательные алгоритмы не нужно, раздел отсутствует);
Таким образом, в минимально возможном наборе программа состоит только из пустого тела программы: . Программа, содержащая все разделы, представлена в примере 14.9.
Для каждого раздела определено ключевое служебное слово, которым начинается данный раздел программы. При написании программы ключевые слова выделяются полужирным шрифтом.
Электронно-вычислительная машина (ЭВМ) — комплекс технических средств, где основные функциональные элементы (логические, запоминающие, индикационные и др.) выполнены на электронных приборах, предназначенных для автоматической обработки информации в процессе решения вычислительных задач.
Никлаус Вирт (род. в 1934 г.) — швейцарский ученый, специалист по информатике, один из известнейших теоретиков в области разработки языков программирования, профессор компьютерных наук. Создатель и ведущий проектировщик языков программирования Паскаль, Модула-2, Оберон.
По традиции, начавшейся в 1978 г. с примера из книги Брайана Кернигана и Денниса Ритчи «Язык программирования Си», первая программа на любом языке программирования должна выводить на экран приветствие миру:
Окно среды PascalABC с результатом работы программы:
Пример 14.2. Текст программы:
Результат работы программы:
Пример 14.3. Текст программы:
Две команды write в программе можно объединить в одну, отделив текст от выражения запятой:
До начала 1950-х гг. ХХ в. программисты ЭВМ при создании программ пользовались машинным кодом. Запись программы на машинном коде состояла из единиц и нулей. Машинный код принято считать языком программирования первого поколения. Типы данных не использовались.
Первым языком программирования, в котором появилась возможность создавать переменные, считается Ассемблер. В этом языке вместо машинных кодов стали использовать команды, записанные текстом. Ассемблер относится к языкам программирования второго поколения.
В 1957 г. появился язык Фортан, открывший эру языков программирования третьего поколения. Он позволил использовать разные числовые типы данных, необходимые для сложных расчетов: целые, вещественные (действительные) и комплексные.
Дальнейшее развитие языков программирования позволило добавить возможность работы с другими типами данных. Современные языки программирования позволяют работать с большим количеством типов данных.
В PascalABC реализовано более 30 различных типов данных.
Пример 14.4. Примеры описания переменных:
Диапазон возможных значений типа real задается числами в стандартном представлении от – 1.8 ∙ 10308 до 1.8 ∙ 10308 . Самое маленькое положительное число типа real приблизительно равно 5.0 ∙ 10–324 . При вычислениях в числе хранится до 16 цифр.
x:= 7;
x1:= 3.5;
a_1 := 20 * (x + x1) — 32;
y := y + 7;
Пример 14.6. Запишем оператор присваивания на Pascal для математических выражений:
Пример 14.7. Запишем оператор присваивания, после выполнения которого значение переменной a увеличится в два раза, а переменной b уменьшится на 3.
В Pascal допустимы команды присваивания следующего вида:
Смысл такой команды следующий: из ячейки памяти извлекается значение переменной a , затем оно умножается на 2, результат записывается в ту же ячейку памяти. Старое значение переменной a будет потеряно.
Запись оператора присваивания для изменения значения переменной b следующая:
Пример 14.8. Ввести два числа, найти и вывести их сумму.
Текст программы :
Пример 14.9. Программа, содержащая все разделы (подсчитывается количество закрашенных клеток в поле Робота размером 10 x 10):
1 Какая команда языка программирования Pascal предназначена для вывода данных?
- Write.
- Read.
- Рrocedure.
- Вegin.
2 Что определяет тип данных?
- Способ хранения данных в памяти компьютера.
- Структуру программы.
- Диапазон возможных значений данных.
- Приоритет выполнения арифметических действий.
- Операции, которые с этим типом данных можно выполнять.
- Имя переменной.
3 Для чего используется команда присваивания?
- Для того чтобы определять диапазон возможных значений данных.
- Для того чтобы вывести значение переменной.
- Для того чтобы вычислять значения арифметического выражения, результат вычисления которого будет записан как значение переменной.
- для того чтобы ввести значение переменной.
- Для того чтобы задавать значения переменным.
4 Какая команда языка программирования Pascal предназначена для ввода данных?
- Begin.
- Procedure.
- Write.
- Read.
5 Из каких разделов состоит программа на языке программирования Pascal?
- Ответвление.
- Команда вывода.
- Подключаемые библиотеки ( модули ).
- Описание вспомогательных алгоритмов.
- Заголовок программы.
- Повторение.
- Команда ввода.
- Описание переменных с указанием их типа.
1. Замените все команды на команды и выполните программу. Что произошло? Объясните почему.
2. Как изменится результат работы программы, если в исходном тексте заменить все команды на ?
3. Измените программу так, чтобы текст на экране выглядел следующим образом:
Ты сегодня написал свою первую программу!!!
Я выполнил твою программу. Посмотри на экране результат!
2 Внесите необходимые изменения в программу из примера 14.3, чтобы действия выполнялись в том порядке, в котором записаны, т. е. сначала сложение, а потом умножение.
3 Вводится возраст пользователя в годах. Определите возраст пользователя через 5 лет.
4 Напишите программу, в которой вводятся два числа и . Затем первое число уменьшается в 2 раза, а второе увеличивается на 30. Выведите измененные значения переменных.
5 Напишите программу для вычисления значения числового выражения:
23 + 45 ∙ 11 – 15.
Назначение процедуры
writeln– выводить информацию на экран монитора.
Ее синтаксис:
В процессе выполнения
процедуры writeln
на экран монитора последовательно в
одну и ту же строку будут выведены
значения элементов списка вывода, после
чего произойдет переход на
новую строку.
Кроме элементов,
перечисленных выше, в список вывода
можно помещать текст, заключенный в
апострофы (символьные конставны). Таким
способом выводимые результаты можно
сопровождать пояснениями.
writeln
(‘Результат счета: y
= ‘,y);
Сначала
на экран будет выведена комбинация
символов, заключенных в апострофы,
т.е. “Результат счета: y
=”,
затем численное значение переменнойy,
после чего курсор будет установлен в
начало следующей строки.
Если необходимо
оставить курсор на
прежней строке
после вывода последнего элемента
списка, то используется процедура write.
Синтаксис обеих процедур одинаков.
При выводе элементов
списка они не
разделяются между собой пробелами
автоматически. Если же такая необходимость
возникла, то их нужно расположить в тех
местах списка вывода, где это требуется.
Пример 3.3. Пусть
имеем три переменных целого типа a
=1; b
= 2; c
=3.
Тогда процедура
Writeln(a,b,c);
выведет значение
переменных a,
b
и c
в виде 123; процедура
Writeln(a,’ ‘,b,’ ‘,c)
– в виде 1 2 3, а
процедура
– в виде a=1
b=2
c=3.
Данные вещественного
типа хранятся в памяти в нормализованном
виде, независимо от того, в какой форме
они в память вводились. Так, например,
значение переменной b,
введенное как 1234.5678, будет храниться в
виде 1.2345678000000E+0003. В нормализованной
форме будет осуществляться и вывод
этих данных, если в программе не оговорена
другая форма их представления. Если же
возникла необходимость вывести
вещественные данные в форме с фиксированной
точкой, то каждое выводимое данное нужно
снабдить спецификацией формата
вида m:n,
где
m,
n
– константы или переменные целого типа.
Величина m,
называемая длиной
формата,
задает общее
количество
позиций на экране под выводимое число,
включая его знак, целую и дробную части,
а также десятичную точку; n
задает число позиций, отводимых под его
дробную
часть.
Формат располагают
вслед за именем выводимой переменной,
разделяя их двоеточием.
const
m = 6; n = 2;
Var omega, q
Конкретные значения
выводимых данных в большинстве случаев
программисту не известны, поэтому при
назначении длин форматов легко допустить
ошибку. При этом может возникнуть одна
из двух ситуаций: либо длина формата
назначена больше, чем это необходимо,
либо она недостаточна для вывода данного.
В первом случае
лишние позиции заполняются пробелами
перед целой частью числа, а во втором
длина формата автоматически увеличивается
до минимально необходимой.
Если количество
цифр в дробной части выводимого числа
превышает величину n,
указанную в формате, то дробная часть
округляется до n-ного
знака. Если же количество цифр в дробной
части меньше величины n
то дробная часть дополняется нулями в
соответствии с величиной n.
Пример 3.5. Пусть
x
=
1.23456780000000E+0003, тогда:
а) оператор
writeln(x:9:4)
выведет 1234.5678 – формат полностью
соответствует выводимому данному;
)
операторwriteln(x:12:2)
выведет 1234.57 – под дробную часть
данного отведено две позиции вместо
необходимых четырех, поэтому она
округлена до двух знаков после десятичной
точки; пять лишних позиций перед целой
частью заполнены пробелами;
г) оператор
writeln(x:8:4)
выведет
1234.5678 – длина формата увеличена до
минимально необходимой;
)
операторwriteln(x:12:6)
выведет 1234.567800 – дробная часть числа
справа дополнена двумя нулями, целая
часть слева одним пробелом.
Для
вывода данных целого, символьного и
булевского типов используют
спецификацию формата, состоящую из
одной целой константы, которая задает
его длину.
Пример 3.6. Пусть
z
=
5656. Тогда:
б) оператор
writeln(z:3)
выведет 5656, причем длина формата будет
автоматически увеличена на одну позицию.
При указании только
длины формата вещественные числа
распечатываются в нормализованной
форме.
Пример 3.7. Пусть
x
= 421.53. Тогда:
а) оператор
writeln(x)
выведет 4.215300000000000E+0002, а
б)
операторwriteln(x:8);
выведет 4.2E+02
Время на прочтение
9 мин
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит
В прошлый раз, в третьей части этой серии материалов по bash-скриптам, мы говорили о параметрах командной строки и ключах. Наша сегодняшняя тема — ввод, вывод, и всё, что с этим связано.
Вы уже знакомы с двумя методами работы с тем, что выводят сценарии командной строки:
- Отображение выводимых данных на экране.
- Перенаправление вывода в файл.
Иногда что-то надо показать на экране, а что-то — записать в файл, поэтому нужно разобраться с тем, как в Linux обрабатывается ввод и вывод, а значит — научиться отправлять результаты работы сценариев туда, куда нужно. Начнём с разговора о стандартных дескрипторах файлов.
Стандартные дескрипторы файлов
Всё в Linux — это файлы, в том числе — ввод и вывод. Операционная система идентифицирует файлы с использованием дескрипторов.
Каждому процессу позволено иметь до девяти открытых дескрипторов файлов. Оболочка bash резервирует первые три дескриптора с идентификаторами 0, 1 и 2. Вот что они означают.
- 0, STDIN — стандартный поток ввода.
- 1, STDOUT — стандартный поток вывода.
- 2, STDERR — стандартный поток ошибок.
Эти три специальных дескриптора обрабатывают ввод и вывод данных в сценарии.
Вам нужно как следует разобраться в стандартных потоках. Их можно сравнить с фундаментом, на котором строится взаимодействие скриптов с внешним миром. Рассмотрим подробности о них.
STDIN
STDIN — это стандартный поток ввода оболочки. Для терминала стандартный ввод — это клавиатура. Когда в сценариях используют символ перенаправления ввода — <, Linux заменяет дескриптор файла стандартного ввода на тот, который указан в команде. Система читает файл и обрабатывает данные так, будто они введены с клавиатуры.
Многие команды bash принимают ввод из STDIN, если в командной строке не указан файл, из которого надо брать данные. Например, это справедливо для команды cat.
Когда вы вводите команду cat в командной строке, не задавая параметров, она принимает ввод из STDIN. После того, как вы вводите очередную строку, cat просто выводит её на экран.