UNIX: физическое расположение команды "wc".Это не "/ bin" - PullRequest
0 голосов
/ 12 октября 2010

Это должно быть пень.Я написал программу на языке C, которая позволяет пользователю выполнять несколько команд.Основываясь на моих исследованиях, все команды, такие как "ls" и "cat", расположены в "/ bin /".

"wc" не указан в этом каталоге - "/ bin".Если я запускаю терминал, я могу набрать "wc fileName", и это работает.Я запустил «find. Wc» из каталога «/» и все еще не могу найти команду «wc».

Кто-нибудь знает, где скрывается «wc»?

Ответы [ 4 ]

6 голосов
/ 12 октября 2010

Попробуйте набрать which wc в своей оболочке ... это должно сказать вам, где оно находится.

На моей машине это равно в /bin/.

Однако, если вы просто хотите, чтобы разрешение пути выполнялось само по себе, вы можете использовать функцию system() (см. man 3 system для получения дополнительной информации).Как вы можете прочитать в документации, это на самом деле то же самое, что вызов оболочки Bourne (или там, где указана символическая ссылка) для разрешения пути, поэтому, если вы не хотите использовать эти служебные данные, вы захотите придерживаться любого методавы используете в настоящее время.

1 голос
/ 12 октября 2010

Я пытался whereis wc, и я получаю его в /usr/bin/wc

0 голосов
/ 12 октября 2010

Вы можете попробовать whence, which или whereis, чтобы найти любую программу в вашем пути exec, в зависимости от того, какую оболочку вы используете.

Утилиты типа wc обычно находятся в /bin или /usr/bin, или в таких местах, как /usr/local/bin или /usr/site/bin.

0 голосов
/ 12 октября 2010

Если вы не хотите беспокоиться о том, где находятся отдельные утилиты, но хотите избежать накладных расходов, связанных с вызовом system, вам следует попробовать функцию среднего уровня execvp или один из его друзей (также указан на этой странице). К сожалению, нет execvpe.

...