Skip to content

Latest commit

 

History

History
86 lines (76 loc) · 3.85 KB

02-Shell.md

File metadata and controls

86 lines (76 loc) · 3.85 KB

Shell (Оболочка)

Консольное приложение, частично эмулирующее оболочку shell.

java Shell [COMMAND1 [; COMMAND2 ...]]

Если Shell запускается без параметров, то запускается интерактивный режим, в котором пользователь может ввести команду (или команды) прямо в консоли.

Список команд:

  • cd <absolute path|relative path> — change directory, смена текущей директории. Поддерживаются ., .., относительные и абсолютные пути
  • mkdir <dirname> — создание директории в текущей директории
  • pwd — print working directory, печатает абсолютный путь к текущей директории
  • rm <file|dir> — удаляет указанную в параметрах папку (рекурсивно) или файл
  • cp <source> <destination> — копирует указанную в параметра папку/файл в указанное место
  • mv <source> <destination> — переносит указанный файл/папку в новое место (файл на прежнем месте удаляется). В частности переименовывает файл/папку, если source и destination находятся в одной папке
  • dir — печатает содержимое текущей директории
  • exit — выход из приложения

За один раз можно написать несколько команд. Разделителем команд является ; (точка с запятой).

Интерактивный режим

В интерактивном режиме должно отображаться "приглашение" — $ (знак доллара и пробел), после которого производится ввод команд. Также в интерактивном режиме допускается вывод текущей директории перед "приглашением".

Пакетный режим

Если запустить консольное приложение с параметрами, то параметры должны интерпретироваться как команды (все команды должны склеиваться через пробел). Приложение должно выполнить последовательно все команды и завершиться.

В случае ошибки команды, приложение должно выводить ошибку в stderr.

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

Вывод команд

Вывод команд имеет строгий формат. Никакого дополнительного вывода в stdout быть не должно (в финальном коде вся debug-информация должна отсутствовать).

$ cd /noexistingdir
cd: '/noexistingdir': No such file or directory
$ cd /home/user
$ pwd
/home/user
$ dir
Folder
file.txt
$ mkdir MyFolder
$ dir
Folder
MyFolder
file.txt
$ cp file.txt MyFolder
$ cd MyFolder
$ dir
file.txt
$ mv file.txt file2.txt
$ dir
file2.txt
$ rm file.txt
rm: cannot remove 'file.txt': No such file or directory
$ rm file2.txt
$ dir
$ cd ..
$ dir
Folder
MyFolder
file.txt
$ mv Folder MyFolder
$ dir
MyFolder
file.txt
$ exit