Bash: Каково использование типа (Bash builtins)?

Не делает простого пути работа:

sed -r 's/ {4}/  /g'

В противном случае отправьте некоторый вход, где он перестал работать.

16
19.11.2013, 10:14
5 ответов

В этом случае type не имеет никакого отношения к встроенному удару type, но больше на этом позже.

Немного о "типе"

Встроенный Bash type команда дает Вам информацию о командах. Таким образом:

$ type type
type is a shell builtin

Синтаксис:

type [-tap] [name ...]
  • -t: распечатайте только тип, если найдено
  • -a: распечатайте все случаи команды, и встроенной и другой.
  • -p: распечатайте дисковый файл, который был бы выполнен по требованию для управления, или ничто.

Если мы смотрим на time, kill и cat как пример:

$ type time kill cat
time is a shell keyword
kill is a shell builtin
cat is /bin/cat

$ type -t time kill cat
keyword
builtin
file

$ type -a time kill cat
time is a shell keyword
time is /usr/bin/time
kill is a shell builtin
kill is /bin/kill
cat is /bin/cat

$ type -ta time kill cat
keyword
file
builtin
file
file

Теперь, это указывает это, если Вы находитесь в оболочке Bash и типе time some_cmd, встроенный удар time используется. Использовать систему time можно сделать /usr/bin/time some_cmd.

Один путь часто раньше гарантировал, что система, и не встроенная, команда используется, при помощи which.

tt=$(which time)

и затем используйте $tt назвать систему time.


Рассматриваемая команда

В этом случае -type опция к команде find. Опция берет один аргумент, которым указывают тип объекта. Пример

find . -type f  # File
find . -type d  # Directory

Существуют больше, проверяют man find для остальных.

Для поиска определенной опции, можно сделать (пока в человеке):

/^\s*-typeEnter

Затем используйте n для затем, пока Вы не находите его.


Немного о команде оболочки

Это - определенная персональная интерпретация.

Некоторыми вещами, которые стоит упомянуть, в этом конкретном случае, являются команды, опции, аргументы и каналы.

Это несколько свободно используется, но в моем словаре мы имеем короче говоря:

  • команда: программа или встроенный.
  • параметр: объект после командного слова.
  • опция: дополнительный параметр.
  • аргумент: обязательный параметр.

В команде квадратные скобки спецификации используются для определения опций и, дополнительно меньше/больше затем, используются для определения аргументов. Таким образом:

foo [-abs] [-t <bar>] <file> ...
foo [-abs] [-t bar] file ...

Дает -a -b и -s как дополнительные параметры, и file необходимый. -t является дополнительным, но, если указано берет обязательный аргумент bar. Точки представляют это, может потребоваться несколько файлов.

Это не точная спецификация, и часто man или help требуется, чтобы быть уверенным.

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

chmod -R nick 722 foo
chmod nick 722 foo -R

Обе работы над некоторыми системами, пока последний не делает на другом.


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

find . $(some command)
find . `some command`
find . $some_var
find . -type f -exec some_command {} \;
find . -type f | some_command
...

-exec специальный где -exec some_command {} \; все параметры, данные find, но some_command {} \; часть расширена, в find кому: some_command string_of_found_entity.


Далее на

  • заключение в кавычки
  • расширение
  • замена команды
  • и настолько больше

Вы могли бы найти это полезным.

21
27.01.2020, 19:48

Вы shoul заглядываете man find, не в help type или man bash. type в find укажет, в каком типе файла Вы нуждаетесь:

   -type c
          File is of type c:

          b      block (buffered) special

          c      character (unbuffered) special

          d      directory

          p      named pipe (FIFO)

          f      regular file

          l      symbolic link; this is never true if the -L option or the
                 -follow option is in effect, unless the symbolic link  is
                 broken.  If you want to search for symbolic links when -L
                 is in effect, use -xtype.

          s      socket

          D      door (Solaris)

И встроенный type совершенно другая вещь, и это не то, используется внутри find.

8
27.01.2020, 19:48

Вы обратились к неправильной странице руководства, это не type -f команда, но find -type f опция, которая очень отличается, взглянула к find руководство для надлежащих объяснений.

0
27.01.2020, 19:48

-type f говорит находят, чтобы только распечатать файлы типа f т.е. простые файлы, не каталоги, не символьные ссылки и не файлы устройств. man find затем поиск -f опция.

0
27.01.2020, 19:48

Это не правильная страница руководства, на которую Вы смотрите. Необходимо использовать

man find

это скажет Вам это с -type f -type предикат выбирает только регулярные файлы.

0
27.01.2020, 19:48

Теги

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