LINUX.ORG.RU

Удобный запуск собственной программы из терминала

 , ,


0

1

Есть скомпилированная программа на C на raspberry pi (raspbian). Она убирает комментарии из файла .c. Сначала я ее запускаю в терминале, затем ввожу строку с 2-мя путями (затем она будет распарсена на 2 строки) - исходный файл и новый файл с кодом без комментариев.

Как сделать так, чтобы запуск программы из терминала был более удобным, как запуск системных утилит в консоли - хотелось бы дать псевдоним программе и сразу передавать ей параметры? Например $ rmcomm исходный_файл.c новый_файл.c.

Читаем Kernigan&Ritchie, а после изучения С читаем, скажем, Богатырева, чтобы понять, как работать с С в UNIX.

Когда придет просветление, станет понятно, что для этого используется анализ первых двух параметров main(). В простейшем случае для этого используется getopt_long, но лучше сделать свою обертку над ней.

Eddy_Em ☆☆☆☆☆
()

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

Можно просто в пайп отправить это. Тогда из баш-скрипта получится запускать (или сделать функцию в ~/.bashrc, чтобы удобней было из командной строки работать).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Спасибо, Керниган в процессе, но хотелось бы более развернутого ответа - например ссылок на статьи (загуглить не получилось). Когда домой вернусь, почитаю то, про что вы написали - попробую разобраться.

MaksimIT
() автор топика

дать псевдоним программе и сразу передавать ей параметры

Ну так есть же глава...

n1rdeks
()
Ответ на: комментарий от MaksimIT

Перенаправить в пайп (если программа берет данные с stdin):

 echo "parameter1 parameter2" | myprog
А про getopt надо долго и вдумчиво читать. Я себе обертку сделал, которая позволяет упростить работу с параметрами и справкой (кроме того, есть поддержка мультипараметров и параметров внутри параметров).

Eddy_Em ☆☆☆☆☆
()

какой-то феерический бред.
аффтырь то ли stdin не осилил, то ли $PATH

mos ★★☆☆☆
()

Зачем было писать программу на C для этого? Это то, с чем sed или awk бы справились, если я правильно понял задачу.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

очевидно же, чел начал C-ку изучать, вот открывает для себя передачу в программу через командную строку параметров

anonymous
()
Ответ на: комментарий от Vsevolod-linuxoid

Программа писалась для тренировки по книге Кернигана (конец 1 главы)

MaksimIT
() автор топика

Самый примитивный вариант - брать имена из argv[1] и argv[2].

legolegs ★★★★★
()

Сунуть в .bashrc это? Если я правильно понял

rmcomm()
{
  echo $@ | /путь_до_софтины/rmcomm 
}

А использовать так

rmcomm file_in.c file_out.c

Если я ничего не напутал, то должно работать, а вообще лучше vargs погляди как использовать и просто пусть твоя софтина принимает несколько параметров путей и всё, нафиг командный режим для неё нужен?

LINUX-ORG-RU ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.