{"id":14275,"url":"\/distributions\/14275\/click?bit=1&hash=bccbaeb320d3784aa2d1badbee38ca8d11406e8938daaca7e74be177682eb28b","title":"\u041d\u0430 \u0447\u0451\u043c \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u044b \u0430\u0432\u0442\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f72066c6-8459-501b-aea6-770cd3ac60a6"}

Основы командной строки для Java-программиста (ч. 6)

Введение

В прошлой статье мы рассмотрели тему оформления (форматирования) кода в классе, сопроводив ее множеством примеров, которыми можно руководствоваться при написании программ.

В этой публикации мы погрузимся еще глубже в кроличью нору, изучив базовый набор команд, используемый при каждодневной работе в консоли. В основном это будут утилиты для взаимодействия с файловой системой (ФС): создать, удалить, переименовать, переместить файл (папку), перейти из одной папки в другую и т. д.

Напомним, что консоль (терминал, командная строка) — программа, которая позволяет пользоваться возможностями операционной системы (ОС) не в графическом режиме (UI), а в текстовом, с помощью вводимых с клавиатуры команд.

Умение работать в командной строке поможет:

  • избавиться от страха перед этим инструментом
  • использовать возможности ОС в ситуациях, когда отсутствует UI
  • выполнять ряд действий намного быстрее, чем через UI
  • повысить уровень экспертности

1. Вывод информации об ОС

Для разогрева рассмотрим самую простую команду, которая выводит информацию об ОС — ver (аналогом для Linux/macOS является команда uname). Для Windows 11 она отображает следующую информацию:

> ver Microsoft Windows [Version 10.0.22631.3447]

2. Перемещение по ФС

Для перемещения по ФС существует команда cd. Ознакомьтесь с ее возможностями с помощью справки cd /?:

D:\Java\StartJava > cd /? Выводит имя или изменяет текущий каталог. CHDIR [/D] [диск:][путь] CHDIR [..] CD [/D] [диск:][путь] CD [..] .. обозначает переход в родительский каталог.

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

С помощью cd перейдем в качестве примера на диск C:\, а затем обратно в папку StartJava (к файлам MyFirstApp.java и MyFirstApp.class), созданную ранее.

Чтобы перейти с одного диска в корень другого, достаточно написать, например, C:\ (без cd). А вот, чтобы перейти в какую-то конкретную папку на другом диске, необходимо воспользоваться специальным параметром cd /D D:\Java\StartJava:

Если указываемый путь до папки (файла) содержит пробелы, то его нужно с двух сторон обрамить кавычками (для последних версий Windows это требование уже не актуально). Например, cd /D "C:\Program Files\java"

При наборе пути, чтобы не писать его полностью (или когда вы его не помните), используйте клавишу Tab. Она обеспечит автодополнение имен.

Если требуется перейти из текущей папки в родительскую (на уровень вверх), то чтобы не писать до нее полный путь, например, D:\Java, можно использовать две точки .. Это что-то вроде ссылки на родительскую папку.

Кроме двух точек есть и одна точка. Она указывает на текущую папку.

D:\Java\StartJava > cd .. D:\Java >

Запись cd .. аналогична cd D:\Java\

3. Отображение содержимого папок

Как перемещаться по ФС мы узнали. Теперь научимся отображать содержимое папок. Для этого есть команда dir (ls).

Для вызова справки по ls существует другой параметр ls --help (/? используется только для Windows-команд). Отобразим содержимое папки StartJava:

D:\Java\StartJava > ls -a ./ ../ MyFirstApp.class MyFirstApp.java

Параметр -a (сокр. от all) отображает не только доступные файлы, но и скрытые, а также ссылки на текущую папку (одна точка) и родительскую (две точки). То, что . и .. являются папками, свидетельствует наличие у них /

Удобным способом отображения только необходимых файлов, является использование маски (шаблона) с помощью символа *:

D:\Java\StartJava > ls *.java MyFirstApp.java

Запись *.java означает, что нам неважно имя файла, главное чтобы он имел расширение java.

4. Перемещение файлов

Теперь попробуем переместить файл MyFirstApp.java в родительскую папку (в папку Java). Для это существует команда move (mv). Ее рекомендуется использовать с параметром -v, который отобразит результат ее работы (без него она выполнится без вывода каких-либо сообщений):

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

5. Удаление файлов

Для удаления файлов существует команда del (rm).

Удалим для примера MyFirstApp.class. При этом в начале перейдем в папку StartJava.

D:\Java > cd .\StartJava\ D:\Java\StartJava > rm -vi ..\MyFirstApp.class rm: remove regular file '..\MyFirstApp.class'? y removed '..\MyFirstApp.class'

Обратная косая черта с точкой у .\StartJava\ означает, что из текущей папки мы переходим в StartJava. При этом указывать . и оба \ необязательно. Запись cd StartJava также прекрасно будет работать.

Для удаления MyFirstApp.class из родительской папки, мы использовали .. , а также параметр -i, который отвечает за подтверждение удаления вводом пользователя yes (y) или no (n).

6. Копирование файлов

Создадим копию файла MyFirstApp.java с помощью команды copy (cp), сохранив ее в родительской папке, а затем отобразим ее содержимое:

D:\Java\StartJava > copy MyFirstApp.java .. Скопировано файлов: 1. D:\Java\StartJava > ls .. MyFirstApp.java StartJava/

7. Вывод содержимого файла

Отобразим в консоли содержимое файла с помощью команды type (cat):

D:\Java\StartJava > type ..\MyFirstApp.java public class MyFirstApp { public static void main(String[] args) { System.out.println("╨Э╨░╨┐╨╕╤Б╨░╨╜╨╛ ╨╛╨┤╨╜╨░╨╢╨┤╤Л, ╤А╨░╨▒╨╛╤В╨░╨╡╤В ╨▓╨╡╨╖╨┤╨╡"); } }

Чтобы в Windows русский текст отобразился корректно, нужно поменять кодовую страницу c DOS (866) на Unicode (65001) с помощью chcp:

D:\Java\StartJava > chcp Текущая кодовая страница: 866 > chcp 65001 Active code page: 65001 D:\Java\StartJava > type ..\MyFirstApp.java public class MyFirstApp { public static void main(String[] args) { System.out.println("Написано однажды, работает везде"); } }

8. Удаление папки

Теперь удалим папку StartJava с помощью команды rmdir (rm):

D:\Java\StartJava > cd .. D:\Java > rm -vr StartJava\ removed 'StartJava\/MyFirstApp.java' removed directory 'StartJava\'

Параметр -r позволяет рекурсивно удалять папки со всем их содержимым.

9. Создание папки

Без папки StartJava нам никак нельзя, т. к. в ней должен храниться весь наш код. Возродим ее из пепла, используя команду mkdir (md), а заодно создадим внутри нее еще одну папку под названием source.

Пишем в терминале команду mkdir StartJava\source, жмем Enter:

D:\Java > mkdir StartJava\source D:\Java > ls StartJava\ source/

Обе папки успешно созданы.

10. Переименование файлов

Переименуем папку source в src (общепринятое сокращение) с помощью команды ren (mv). В ней будет храниться исходный код.

Вводим ren, а затем старое (при этом нужно указать путь до файла) и новое имя файла:

D:\Java > ren .\StartJava\source src D:\Java > ls -a .\StartJava\ ./ ../ src/

Папка успешно переименовалась.

11. Создание текстового файла

Создадим новый текстовый файл под названием about.txt с помощью команды copy con (touch):

D:\Java > touch StartJava\about.txt D:\Java > ls StartJava\ about.txt src/

12. Запись текста в файл

Запишем в about.txt какой-нибудь текст (при этом кодовая страница должна быть 65001), а затем прочитаем его из файла и выведем в консоль:

D:\Java > echo Интенсив StartJava - программирование на Java для начинающих! > StartJava\about.txt D:\Java > cat StartJava\about.txt Интенсив StartJava - программирование на Java для начинающих!

Команда echo отвечает за вывод информации в консоль. Но если ее использовать с символом >, то текст из консоли или результат работы любой команды, будет сохранен в текстовый файл.

13. Вывод структуры файлов и папок

Команда dir (ls) отображает содержимое одной конкретной папки. Но если нам нужно отобразить содержимое всех вложенных папок, то для этих целей есть команда tree:

D:\Java > tree /F StartJava\ Folder PATH listing for volume Programming Volume serial number is CC8E-25BD D:\JAVA\STARTJAVA │ about.txt │ └───src

Параметр /F позволяет отображать не только папки, но и файлы.

Чтобы понять, на что по-настоящему способна эта команда, перейдите на диск C:\ и запустите tree. Вас ждет незабываемый водопад информации.

Если вы используете Linux/macOS, то вам необходимо установить утилиту tree (1, 2).

14. Цепочка команд

И напоследок попробуем выполнить множественные действия, записав разные команды в цепочку. Попробуйте самостоятельно понять, какие были выполнены шаги:

D:\Java > copy MyFirstApp.java StartJava\ & cd StartJava & rm -v ..\MyFirstApp.java & mv -v MyFirstApp.java src 1 file(s) copied. removed '..\MyFirstApp.java' renamed 'MyFirstApp.java' -> 'src/MyFirstApp.java'

Как видим, все команды отработали без ошибок. При этом они отделены друг от друга логическим оператором &. Он означает, что команда справа от него не выполнится, если предыдущая команда завершится неудачно.

И еще раз воспользуемся tree:

D:\Java > tree /F StartJava\ Folder PATH listing for volume Programming Volume serial number is CC8E-25BD D:\JAVA\STARTJAVA | about.txt | └───src MyFirstApp.java

15. Прочие мелкие команды

cls (clear) — очищает консоль

systeminfo — выводит информацию о вашей платформе (ОС + железо)

help — выводит список команд для Windows

exit — закрывает командную строку

Заключение

Мы рассмотрели самые ходовые и популярные команды на каждый день. Данная статья лишь приоткрывает завесу возможностей, которые может дать терминал в умелых руках. Вам же остается не останавливаться в познании этого инструмента и постепенно, самостоятельно углубляться во все его тонкости.

Автор: Чимаев Максим

Друзья, если вам понравилась статья, и вы изучаете Java, то приглашаем вас на курс для начинающих с нуля StartJava. Под руководством ментора Максима вы сможете с самых азов освоить язык Java. Курс очень насыщенный и постоянно развивается. Более сотни положительных отзывов.

Контакты:

0
Комментарии
-3 комментариев
Раскрывать всегда