Linux параметр командной строки это

Содержание
  1. HackWare.ru
  2. Этичный хакинг и тестирование на проникновение, информационная безопасность
  3. Азы работы в командной строке Linux (часть 1)
  4. Командная строка Linux
  5. TAB для автодополнения
  6. ENTER для запуска выполнения команд
  7. CTRL + c для прерывания выполнения программы
  8. ↑ (курсорная клавиша вверх) для просмотра истории команд
  9. Азы файловой системы Linux
  10. Базовые команды Linux
  11. pwd для показа текущей рабочей директории
  12. mkdir для создания новых директорий
  13. ls для просмотра содержимого каталогов
  14. cd для перехода по папкам (смены текущей рабочей директории)
  15. cp для копирования файлов
  16. mv для переименования и перемещения файлов.
  17. rm для удаления файлов и папок
  18. Как копировать текст в командной строке и как вставлять в командную строку Linux
  19. Ошибка «команда не найдена»
  20. Ещё несколько полезных сочетаний клавиш для командной строки Linux
  21. Разбор опций командной строки в UNIX-подобных системах
  22. Введение
  23. POSIX
  24. Длинные опции
  25. Откуда берутся параметры в программе
  26. Разбор опций
  27. getopt
  28. пример программы с использованием getopt()
  29. getopt_long()
  30. Пример программы с использованием getopt_long()
  31. Заключение

HackWare.ru

Этичный хакинг и тестирование на проникновение, информационная безопасность

Азы работы в командной строке Linux (часть 1)

Возникло желание написать мануал о консоли, базовых командах и азах файловой системы Linux. Когда я начинал своё знакомство с Linux именно такой инструкции мне не хватало. Надеюсь, абсолютным новичкам, которых пугают консольные команды, она поможет «влиться» в число умеющих использовать командную строку Linux.

Командная строка Linux

В зависимости от вашего Linux, ярлык для открытия консоли может быть вынесен на рабочий стол,

добавлен в избранные команды,

доступен в контекстном меню при клике правой кнопкой мыши в области рабочего стола.

Либо вы для вызова эмулятора терминала вы можете воспользоваться сочетанием клавиш CTRL + ALT + t.

В приглашении командной строки отображается имя пользователя и имя хоста. Перед областью ввода команд может быть символ решётки (#) или символ доллара ($). Символ доллара означает, что вы работаете под обычным пользователем, а символ решётки – что под суперпользователем (root).

На скриншоте видно, что я открыл консоль как обычный пользователь (символ $), а затем вошёл как root (символ сменился на #).

В некоторых инструкциях перед командами пишут $ или # и новички, пытаясь выполнить команды копированием-вставкой, получают разнообразные ошибки. Если перед командной вы видите $ или #, то их не нужно печатать – они написаны только для информирования вас о том, нужны ли дополнительные привилегии для выполнения данной команды.

TAB для автодополнения

При вводе команды или имени файла, обязательно используйте клавишу TAB – она автоматически допишет для вас команду или имя файла. Если при нажатии на TAB ничего не происходит, то быстро нажмите TAB два раза, чтобы увидеть все доступные варианты. Если варианты не выводятся, то это верный признак того, что: 1) вы неправильно начали вводить имя команды, 2) программа, которую вы намереваетесь запустить, ещё не установлена.

ENTER для запуска выполнения команд

Набрав команду, нажмите ENTER и после этого она запустится.

CTRL + c для прерывания выполнения программы

Если вы хотите оборвать выполнение команды, то используйте для этого сочетание клавиш CTRL + c. Если вы ввели команду, но передумали её запускать, то вместо удаления строки, можете также нажать CTRL + c.

(курсорная клавиша вверх) для просмотра истории команд

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

Азы файловой системы Linux

Если нужно прочитать какие-то данные или сохранить информацию в файл из консоли, нужно уметь указывать путь до файла. В файловой система Linux нет такого понятия как буквы дисков. Там используется понятие «корень». Обозначается корень символом /

После корня указываются папки (в Linux они называются директориями) и файлы. Одни папки могут быть вложены в другие – точно также как в Windows. Вложенные папки и файлы разделяются символом / (точно таким же как корень).

Читайте также:  Windows email password reset

Пример указания пути до файла:

Эта запись означает, что файл book.txt находится в папке mial, а папка mial находится в папке home.

Базовые команды Linux

pwd для показа текущей рабочей директории

Откройте консоль и введите туда

У меня вывелось:

Здесь / (первый слеш) – это корень, home – это название папки (директории), далее / (второй слеш) – отделяет название вложенной папки, mial – название второй вложенной папки.

Команда pwd показывает «текущую рабочую директорию». Текущую рабочую директорию нужно знать при указании относительных путей до файлов и папок, также некоторые программы сохраняют результаты своего выполнения в текущую директорию.

mkdir для создания новых директорий

После mkdir укажите название папки, которую вы хотите создать. Если вы укажите относительный путь, например, так:

То будет создана новая папка test1 в текущей рабочей директории, т.е. в моём случае путь до неё будет

Также можно указать абсолютный путь до папки:

ls для просмотра содержимого каталогов

Команда ls используется для вывода списка файлов и папок текущей рабочей директории:

Теперь мы можем убедиться, что папки test1 и test2 действительно были созданы.

Чтобы список выглядел лучше, можно использовать команду ls с опцией -l

После команды и опций можно указать путь до папки, содержимое которой вы хотим посмотреть. Чтобы увидеть содержимое директории /var/log нужно ввести:

Для просмотра содержимого корневой директории:

cd для перехода по папкам (смены текущей рабочей директории)

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

Символ . (одна точка) означает текущую директорию, а символ .. (две точки) означаете родительскую директорию. Следовательно, для перехода на один уровень вверх нужно набрать

cp для копирования файлов

Если вам нужно скопировать файл в другую директорию, то используется команда cp. После неё указывается файл, который нужно скопировать и затем через пробел директория, куда вы хотите поместить файл, например:

Этой командой я скопировал файл test.sh в директорию test1. Проверим

mv для переименования и перемещения файлов.

После команды mv указывается имя файла, который вы хотите переименовать или переместить. Затем через пробел пишется директория, куда вы хотите переместить файл (тогда файл будет перемещён в неё с исходным именем), или директория и новое имя файла (тогда файл будет перемещён и переименован), или только новое имя файла (тогда файл будет переименован).

Файл test.sh из каталога test1 я переместил в каталог test2:

Файл test.sh в каталоге test2 я переименовал в test2.sh:

Файл test2.sh в каталоге test2 я переместил в каталог test1 и присвоил ему имя new.txt:

rm для удаления файлов и папок

Чтобы удалить наши тестовые директории, воспользуемся командой rm. После этой команды укажите путь до файла или папки, которые нужно удалить. Если вы собираетесь удалить директорию, то используйте также опцию -r, она означает рекурсивно удалять каталоги и их содержимое. Можно указать сразу несколько файлов и (или) каталогов:

Для понимания иерархии файловой системы рекомендуется ещё одна статья для новичков «Структура директорий Linux. Важные файлы Linux».

Как копировать текст в командной строке и как вставлять в командную строку Linux

Привычные сочетания клавиш Ctrl+c и Ctrl+v в терминале имеют другое действие. Для копирования нужно использовать Ctrl+Insert, а для вставки Shift+Insert.

Ошибка «команда не найдена»

Причиной данной ошибки могут быть:

  • неправильно набрано имя команды
  • программа не установлена
  • данную команду может выполнять только root

Ещё несколько полезных сочетаний клавиш для командной строки Linux

  • Ctrl+l для очистки экрана
  • Ctrl+a для перехода в начало введённой команды
  • Ctrl+e для перехода в конец введённой команды
  • Ctrl+u для удаления всего, что стоит до курсора
  • Ctrl+k для удаления всего, что стоит после курсора
  • Ctrl+d для завершения текущего сеанса, закрытия консоли
Читайте также:  Windows 10 pro iso 1607 64x

Одна из самых часто используемых:

  • Ctrl+R: Поиск по ранее запущенным командам, начните писать искомую и вам будут предлагаться самые подходящие варианты. Для запуска нажмите ENTER.

Имеется функционал копи-пастинга:

  • Ctrl+W: Вырезать слово перед курсором, добавить его в буфер обмена.
  • Ctrl+K: Вырезать часть строки после курсора, добавить её в буфер обмена.
  • Ctrl+U: Вырезать часть строки перед курсором, добавить её в буфер обмена.
  • Ctrl+Y: Вставить из буфера обмена последнее, что вы вырезали.

Источник

Разбор опций командной строки в UNIX-подобных системах

Введение

POSIX

Стандарт POSIX описывает ожидаемое поведение программ в UNIX-подобных системах. При написание программы никто вас не заставит строго следовать стандарту, однако, это является хорошей идеей, так как это облегчит жизнь вашим пользователям. Вот основные правила касающиеся аргументов команды:

  • в имени программы должно быть не менее 2 и не более 9 символов;
  • имена программ должны быть написаны только строчными символами и цифрами;
  • имя опции должно быть простым буквенно-цифровым символом. Опции с множеством цифр запрещены;
  • все опции должны начинаться с символа «-«;
  • для опций без аргументов должны быть реализована возможность объединения опций (например foo -a -b -c и foo -abc);
  • аргумент опции должен отделятся от нее пробелом;
  • аргумент опции не может быть необязательным;
  • если опции требуется множество значений аргумента, они должны передаваться в виде строки, разделенные запятыми или разделителем;
  • опции должны идти перед операндами;
  • аргумент «—» указывает на окончание всех опций;
  • порядок опций не должен играть роли, кроме случаев когда опции взаимоисключающие, тогда побеждает последняя;
  • порядок аргументов может иметь значение;
  • программы читающие или записывающие именованные файлы, должны трактовать единственный аргумент «-» как стандартный ввод или стандартный вывод соответственно.

Длинные опции

В GNU программах также используются длинные опции, поведение которых не описано в POSIX, длинные опции начинаются с «—» Для этих опций в GNU также реализованы следующие соглашения:

  • каждая короткая опция должна иметь свой вариант длинной опции;
  • длинную опцию можно сократить до кратчайшей строки, обеспечивающей ее уникальность;
  • Аргументы длинной опции отделяются либо разделителем, либо знаком «=».

Откуда берутся параметры в программе

как известно функция main() в С определяется так:
int main(int argc, char *argv[])
Здесь присутствует два параметра: argc определяет количество аргументов в командной строке, а argv хранит массив указателей на эти аргументы.
Следует отметить, что argv[0] — всегда имя команды, а argv[argc] == NULL, эти два факта могут оказаться полезными при разработке.

Разбор опций

В 80-х годах группа поддержки Unix заметила, что каждая программа Unix использует собственные методы разбора опций. Что послужило толчком к разработке функции getopt(), чтобы упростить написание кода, придерживающегося стандартных соглашений.
Функция GNU getopt_long(), является совместимой с getopt(), а также упрощает разбор длинных опций.

getopt

Объявление:
#include
int getopt(int argc, char *argv[], const char *optstring);
extern char *optarg;
extern int optind, opterr, optopt;

Аргументы argc и argv передаются непосредственно от функции main(), а optstring является строкой символов опций. Если за какой либо буквой в строке следует двоеточие, значит эта опция принимает аргумент.
Для использования getopt() ее вызывают повторно в цикле, до тех пор, пока она не вернет -1. Каждый раз обнаружив действительный символ опции, функция возвращает этот символ. Если опция принимает аргумент, то указатель на него помещается в переменную optarg.
переменная optind хранит текущий индекс в argv. Когда переменная opterr не равна нулю (по умолчанию 0), getopt() сама выводит сообщения в случае недействительной опции или отсутствия аргумента. Если же opterr равен нулю, то в случае возникновения ошибки getopt() возвращает «?» или «:» в зависимости от того найдена недействительная опция или пропущен обязательный аргумент опции, в переменной optopt будет находится обнаруженный недействительный символ.
Следует заметить, что стандартная функция getopt() останавливается сразу как только найдет первый аргумент начинающийся не с символа «-«, GNU вариант функции просматривает в поисках опций, всю командную строку. Поведение GNU функции можно изменить (но это выходит за рамки статьи).

Читайте также:  Как узнать язык установленной windows

пример программы с использованием getopt()

  1. #include
  2. #include
  3. #include
  4. int main( int argc, char **argv) <
  5. if (argc == 1) < // если запускаем без аргументов, выводим справку
  6. printf( «getopt test\n» );
  7. printf( «usage:\n» );
  8. printf( » opts -a n -b m -o s\n» );
  9. printf( «example:\n» );
  10. printf( » $ opts -a 323 -b 23 -o ‘-‘\n» );
  11. printf( » 323 — 23 = 300\n» );
  12. return 0;
  13. >
  14. char *opts = «a:b:o:» ; // доступные опции, каждая принимает аргумент
  15. int a, b; // тут храним числа
  16. char op; // а тут оператор
  17. int opt; // каждая следующая опция попадает сюда
  18. while ((opt = getopt(argc, argv, opts)) != -1) < // вызываем getopt пока она не вернет -1
  19. switch (opt) <
  20. case ‘a’ : // если опция -a, преобразуем строку с аргументом в число
  21. a = atoi(optarg);
  22. break ;
  23. case ‘b’ : // тоже для -b
  24. b = atoi(optarg);
  25. break ;
  26. case ‘o’ : // в op сохраняем оператор
  27. op = optarg[0];
  28. break ;
  29. >
  30. >
  31. switch (op) <
  32. case ‘+’ : // если опаратор + складываем, и т.д.
  33. printf( «%d + %d = %d\n» , a, b, a + b);
  34. break ;
  35. case ‘-‘ :
  36. printf( «%d — %d = %d\n» , a, b, a — b);
  37. break ;
  38. case ‘*’ :
  39. printf( «%d * %d = %d\n» , a, b, a * b);
  40. break ;
  41. case ‘/’ :
  42. printf( «%d / %d = %d\n» , a, b, a / b);
  43. break ;
  44. >
  45. return 0;
  46. >

* This source code was highlighted with Source Code Highlighter .

getopt_long()

int getopt_long(int argc, char *argv[], const char *optstring, const struct option *longopts, int *longindex);

первые три аргумента те же, что и в getopt(), longopts является указателем на массив длинных опций, longindex указывает на переменную, в которую помещается индекс обнаруженной длинной опции в longopts, если в это нет необходимости может быть NULL.

Структура option определена следующим образом:
struct option
<
const char *name;
int has_arg;
int *flag;
int val;
>

name — имя опции без предшествующих черточек;
has_arg — как понятно из названия, переменная описывает имеет ли длинная опция аргумент, может принимать три значения:

  • 0 — не принимает аргумент;
  • 1 — обязательный аргумент;
  • 2 — необязательный аргумент.

flag — если этот указатель равен NULL, то getopt_long() возвращает значение поля val, иначе она возвращает 0, а переменная на которую указывает flag заполняется значением val;
val — обычно содержит некоторую символьную константу, если длинная опция соответствует короткой, то эта константа должна быть такой же как и та что появляется в аргументе optstring.
Важно заметить, что последний элемент массива longopts, должен быть заполнен нулями.

Пример программы с использованием getopt_long()

  1. #include
  2. #include
  3. #include
  4. #include
  5. void usage( char *name)
  6. <
  7. printf( «usage: %s\n \ \t-h this message\n \ \t-c [config file]\n \ \t—help this message\n \ \t—config=config_file\n», name);
  8. return ;
  9. >
  10. int main ( int argc, char *argv[])
  11. <
  12. int c;
  13. while (1) <
  14. static struct option long_opt[] = <
  15. < «help» , 0, 0, 'h' >,
  16. < «config» , 1, 0, 'c' >,
  17. >;
  18. int optIdx;
  19. if ((c = getopt_long(argc, argv, «c:h» , long_opt, &optIdx)) == -1)
  20. break ;
  21. switch ( c ) <
  22. case ‘h’ :
  23. usage(argv[0]);
  24. return (-1);
  25. case ‘c’ :
  26. printf( «option ‘c’ selected, filename: %s\n» , optarg);
  27. return (1);
  28. default :
  29. usage(argv[0]);
  30. return (-1);
  31. >
  32. >
  33. return (0);
  34. >

* This source code was highlighted with Source Code Highlighter .

Заключение

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

Статья подготовлена по материалам книги Арнольда Роббинса «Linux программирование в примерах» ISBN 5-9579-0059-1

Источник

Оцените статью