Команда ctags не рекурсивно вызывает высказывание, “это не регулярный файл”

Когда я работаю ctags -R *, Я получаю ошибки, говоря, что все каталоги не являются регулярными файлами, и это пропускает их вместо того, чтобы рекурсивно генерировать теги для них.

ctags: skipping arpa: it is not a regular file.
ctags: skipping asm: it is not a regular file.
ctags: skipping asm-generic: it is not a regular file.
ctags: skipping bits: it is not a regular file.
ctags: skipping blkid: it is not a regular file.
ctags: skipping boost: it is not a regular file.

В чем проблема?

33
задан Kevin Christopher Henry 21 August 2016 в 00:30
поделиться

1 ответ

Подобно this и this, проблема в том, что вы используете не Exuberant Ctags, а GNU Emacs etags, который также предоставляет ctags исполняемый файл. Запустите ctags --version и вы увидите что-то вроде этого:

ctags (GNU Emacs 23.1)
Copyright (C) 2009 Free Software Foundation, Inc.
This program is distributed under the terms in ETAGS.README

А если вы посмотрите в man-страницу, то увидите, что -R фактически эквивалентно --no-regex. На самом деле, на странице руководства даже не упоминается рекурсия как опция.

   -R, --no-regex
          Don't  do  any more regexp matching on the following files.  May
          be freely intermixed with filenames and the --regex option.

Вероятно, вы можете генерировать теги рекурсивно, используя магию shell, но вы можете столкнуться с проблемами на пути, если вы ожидаете Exuberant Ctags. Поэтому лучшим решением будет установить нужные вам ctags:

sudo apt-get install exuberant-ctags

Exuberant Ctags также можно установить из исходников:

http://ctags.sourceforge.net/
67
ответ дан 27 November 2019 в 17:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: