Перейти к содержимому

Type a bash что это

  • автор:

Команда type в Linux

Команда type используется для отображения информации о типе команды. Он покажет вам, как данная команда будет интерпретироваться, если ввести ее в командной строке.

В этой статье мы объясним, как использовать команду type Linux.

Как использовать команду типа

type — это оболочка, встроенная в Bash и другие оболочки, такие как Zsh и Ksh. Его поведение может немного отличаться от оболочки к оболочке. Мы рассмотрим встроенную в Bash версию type .

Синтаксис команды type следующий:

type [OPTIONS] FILE_NAME. 

Например, чтобы найти тип команды wc , вы должны ввести следующее:

type wc

Результат будет примерно таким:

wc is /usr/bin/wc 

Вы также можете предоставить более одного аргумента команде type :

type sleep head

Вывод будет включать информацию о командах sleep и head :

sleep is /bin/sleep head is /usr/bin/head 

Типы команд

Параметр -t указывает type напечатать одно слово, описывающее тип команды, которое может быть одним из следующих:

  • псевдоним (псевдоним оболочки)
  • функция (функция оболочки)
  • встроенный (встроенный в оболочку)
  • файл (файл на диске)
  • ключевое слово (зарезервированное слово оболочки)

Вот несколько примеров:

type -t grep

В моей системе grep имеет псевдоним grep —color=auto :

alias
type -t rvm

rvm — это инструмент (функция) для установки, управления и работы с несколькими средами Ruby :

function
type -t echo

echo — это оболочка, встроенная в Bash и другие оболочки, такие как Zsh и Ksh:

builtin
type -t cut

cut — это исполняемый файл:

builtin
type -t for

for — зарезервированное слово в Bash:

keyword

Показать все местоположения, содержащие команду

Чтобы распечатать все совпадения, используйте параметр -a :

type -a pwd

Вывод покажет вам, что pwd — это встроенная оболочка, но она также доступна как автономный исполняемый файл /bin/pwd :

pwd is a shell builtin pwd is /bin/pwd 

Когда используется опция -a , команда type будет включать псевдонимы и функции, только если опция -p не используется.

Опции команд другого типа

Параметр -p заставит type вернуть путь к команде, только если команда является исполняемым файлом на диске:

Например, следующая команда не будет отображать никаких выходных данных, потому что команда pwd является встроенной оболочкой.

type -p pwd

В отличие от -p , опция -P в верхнем регистре указывает type искать по PATH исполняемого файла на диске, даже если команда не является файлом.

type -P pwd
pwd is /bin/pwd 

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

Выводы

Команда type покажет вам, как будет интерпретироваться конкретная команда, если она используется в командной строке.

Если у вас есть вопросы или отзывы, оставьте комментарий ниже.

Команда Type в Linux

MSI отдает дань уважения Monster Hunter, предлагая тематическую графику, материнскую плату и монитор

Favorite

Добавить в избранное

Bash Heredoc

В этой статье мы рассмотрим команду type в Linux.

Команда type используется для отображения информации о типе команды. Он покажет вам, как команда будет интерпретироваться, если вводится в командной строке.

Как использовать команду type

Синтаксис команды type следующий:

type [OPTIONS] FILE_NAME.

Например, чтобы найти тип команды wc , вы должны ввести следующее:

type wc

Результат будет примерно таким:

wc is /usr/bin/wc

Вы также можете указать несколько аргументов команды type:

type sleep head

Вывод будет содержать информацию о командах sleep и head:

sleep is /bin/sleep head is /usr/bin/head

Типы команд

Опция -t указывает type печатать одно слово, описывающее тип команды, которое может быть одним из следующих:

  • псевдоним (псевдоним оболочки)
  • функция (функция оболочки)
  • встроенный (встроенный в оболочку)
  • файл (файл на диске)
  • ключевое слово (зарезервированное слово оболочки)

Вот несколько примеров:

type -t grep

В нашей системе grep есть псевдоним grep —color=auto:

alias
type -t rvm

rvm это инструмент (функция) для установки, управления и работы с несколькими средами Ruby:

function
type -t echo

echo это оболочка, встроенная в Bash и другие оболочки, такие как Zsh и Ksh:

builtin
type -t cut

cut это исполняемый файл:

builtin
type -t for

for это зарезервированное слово в Bash:

keyword

Показать все места, которые содержат команду

Чтобы распечатать все совпадения, используйте опцию -a:

type -a pwd

Вывод покажет вам, что pwd это встроенная оболочка, но она также является переменной как отдельный исполняемый файл /bin/pwd:

pwd is a shell builtin pwd is /bin/pwd

Когда используется опция -a, команда type будет включать псевдонимы и функции, только если опция -p не используется.

Другие параметры команды type

Опция -p заставит type вернуть путь к команде только если команда является исполняемым файлом на диске:

Например, следующая команда не будет отображать никаких выходных данных, потому что команда pwd является встроенной оболочкой.

type -p pwd

В отличие от этого -p, опция -P в верхнем регистре указывает type искать ПУТЬ исполняемого файла на диске, даже если команда не является файлом.

type -P pwd
pwd is /bin/pwd

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

Заключение

Команда type покажет вам, как будет интерпретироваться определенная команда, если она используется в командной строке.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Type a bash что это

В отличие от большинства других языков программирования, Bash не производит разделения переменных по «типам» . По сути, переменные Bash являются строковыми переменными, но, в зависимости от контекста, Bash допускает целочисленную арифметику с переменными. Определяющим фактором здесь служит содержимое переменных.

Пример 4-4. Целое число или строка?

#!/bin/bash # int-or-string.sh: Целое число или строка? a=2334 # Целое число. let "a += 1" echo "a = $a " # a = 2335 echo # Все еще целое число. b=$ # замена "23" на "BB". # Происходит трансформация числа в строку. echo "b = $b" # b = BB35 declare -i b # Явное указание типа здесь не поможет. echo "b = $b" # b = BB35 let "b += 1" # BB35 + 1 = echo "b = $b" # b = 1 echo c=BB34 echo "c = $c" # c = BB34 d=$ # замена "BB" на "23". # Переменная $d становится целочисленной. echo "d = $d" # d = 2334 let "d += 1" # 2334 + 1 = echo "d = $d" # d = 2335 echo # А что происходит с "пустыми" переменными? e="" echo "e = $e" # e = let "e += 1" # Арифметические операции допускают использование "пустых" переменных? echo "e = $e" # e = 1 echo # "Пустая" переменная становится целочисленной. # А что происходит с необъявленными переменными? echo "f = $f" # f = let "f += 1" # Арифметические операции допустимы? echo "f = $f" # f = 1 echo # Необъявленная переменная трансформируется в целочисленную. # Переменные Bash не имеют типов. exit 0

Отсутствие типов — это и благословение и проклятие. С одной стороны — отсутствие типов делает сценарии более гибкими (чтобы повеситься — достаточно иметь веревку!) и облегчает чтение кода. С другой — является источником потенциальных ошибок и поощряет привычку к «неряшливому» программированию.

Бремя отслеживания типа той или иной переменной полностью лежит на плечах программиста. Bash не будет делать это за вас!

Назад К началу Вперед
Присваивание значений переменным Наверх Специальные типы переменных

Оболочка Bash — шпаргалка для начинающих

Обложка поста Оболочка Bash — шпаргалка для начинающих

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

Оболочка Bash: введение

Оболочка, или шелл (shell) — это программа, в нашем случае названная «bash», что является сокращением от Bourne Again Shell. Оболочка принимает ваши команды и передаёт их операционной системе. Для взаимодействия с системой используются терминалы, такие как gnome-terminal, eterm, nxterm и т. п.

Навигация

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

pwd

Команда pwd , сокращение от print working directory, отображает текущее местоположение в структуре каталогов.

cd

Команда cd позволяет перейти в новый каталог.

Оболочка Bash — шпаргалка для начинающих 1

mkdir

Команда mkdir создаёт новый каталог в текущем каталоге.

Основные команды

man

Команда man отображает руководства по командам. Например, следующая команда выдаст всю информацию о команде cat :

$ man cat 
cat

Команда cat считывает файл, переданный как аргумент, и выводит его содержимое по стандартному каналу вывода. Передача нескольких файлов в виде аргумента приведёт к выводу конкатенированного содержимого всех файлов.

echo

Команда echo выводит свои аргументы по стандартному каналу вывода.

$ echo Hello World Hello World 

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

head

Команда head читает первые 10 строк любого переданного текста и выводит их по стандартному каналу. Число выводимых строк можно изменить:

$ head -50 test.txt 
tail

Команда tail работает аналогично команде head , но читает строки с конца:

$ tail -50 test.txt 

Также можно просматривать добавляемые к файлу строки в режиме реального времени при помощи флага -f :

$ tail -f test.txt 
less

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

$ less test.txt $ ps aux | less 

Подробнее о назначении символа | будет рассказано ниже в разделе команды history .

Оболочка Bash — шпаргалка для начинающих 2

true

Команда true всегда возвращает ноль в качестве выходного статуса для индикации успеха.

false

Команда false всегда возвращает не-ноль в качестве выходного статуса для индикации неудачи.

$? — это переменная, которая содержит выходной статус последней запущенной команды. Под статусом обычно понимается код возврата программы. 0 означает успешное выполнение программы, любое значение большее 0 отражает тот факт, что в процессе выполнения возникли некоторые ошибки. Кстати, именно поэтому в bash истинной (true) считается 0, а все, что не 0 — ложью (false):

$ true $ echo $? 0 $ false $ echo $? 1 
grep

Команда grep занимается поиском переданной строки в указанном файле:

$ cat users.txt user:student password:123 user:teacher password:321 $ grep 'student` file1.txt user:student password:123 

grep также может принимать несколько файлов и регулярных выражений для уточнения формата текста.

Оболочка Bash — шпаргалка для начинающих 3

Также можно ознакомиться с руководством по regex. У нас на сайте тоже есть руководство по «регуляркам» в Python для новичков.

sed

Команда sed — это потоковый редактор, преобразующий входные текстовые данные. Обычно её используют для замены выражений так: s/regexp/replacement/g . Например, следующий код заменит все слова «Hello» на «Hi»:

$ cat test.txt Hello World $ sed 's/Hello/Hi/g' test.txt Hi World 

Также вы можете ознакомиться с руководством по sed.

history

Команда history выводит историю командной строки. Обычно её используют вместе с командой grep для поиска конкретной команды. Например, следующий код найдёт все команды, содержащие строку g++ :

$ history | grep g++ 155 g++ file1.txt 159 g++ file2.txt 

Здесь также используется символ | — это так называемый конвейер (pipe). Благодаря ему можно перенаправлять вывод одной команды на вход другой — таким образом в примере выше вся история, которая в обычном режиме выводится командой history прямо в вывод терминала, будет перенаправлена в grep в качестве входных данных. Мы не увидим вывода команды history , но увидим вывод команды grep .

Это может быть довольно сложно для понимания без практики, поэтому поэкспериментируйте самостоятельно, например с командами ls , history , ps (описана ниже), перенаправляя их вывод в grep , sed или less , например.

export

Команда export устанавливает переменные окружения для передачи дочерним процессам. Например, так можно передать переменную name со значением student :

$ export name=student 
ps

Команда ps выводит информацию о запущенных процессах.

$ ps PID TTY TIME CMD 35346 pts/2 00:00:00 bash 

Выводится четыре элемента:

  • ID процесса (PID),
  • тип терминала (TTY),
  • время работы процесса (TIME),
  • имя команды, запустившей процесс (CMD).
awk

Команда awk находит и заменяет текст в файлах по заданному шаблону: awk ‘pattern ‘ test.txt

wget

Команда wget скачивает файлы из Сети и помещает их в текущий каталог.

$ wget https://github.com/mikeizbicki/ucr-cs100 
nc

Команда nc — это утилита для отладки сети. Также можно ознакомиться с руководством по nc.

ping

Команда ping тестирует сетевое подключение.

$ ping google.com PING google.com (74.125.224.34) 56(84) bytes of data. 64 bytes from lax17s01-in-f2.1e100.net (74.125.224.34): icmp_req=1 ttl=57 time=7.82 ms --- google.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 8ms rtt min/avg/max/mdev = 7.794/8.422/10.792/0.699 ms 

Статистика в конце показывает количество подключений, совершённых до завершения команды, и время их выполнения.

git

Git — это популярная система контроля версий. Также можно ознакомиться с руководством по git и нашими материалами.

Переменные окружения

Переменные окружения — это именованные переменные, содержащие значения, используемые одним или несколькими приложениями.

Переменная PATH содержит список каталогов, в которых система ищет исполняемые файлы.

Переменная HOME содержит путь к домашнему каталогу текущего пользователя.

Коннекторы

Коннекторы позволяют запускать несколько команд одновременно.

Оболочка Bash — шпаргалка для начинающих 4

$ true && echo Hello Hello $ false || echo Hello Hello $ echo Hello ; ls Hello test.txt file1.txt file2.txt 

Конвейеры

Конвейеры, или пайпы, позволяют соединять входные и выходные каналы различных команд. В следующем примере вывод команды ls будет передан в head , и в результате будет напечатано лишь 10 первых элементов.

$ ls -l | head 

Перенаправление ввода/вывода

Перенаправление вывода

Для стандартного перенаправления вывода используются символы > и >> .

Например, этот код передаст вывод ls в файл, а не на экран:

$ ls > files.txt $ cat files.txt file1.cpp sample.txt 

Если файл не существует, он создаётся, а если существует, то перезаписывается. Во избежание перезаписи стоит использовать команду >> — она дописывает данные в конец файла.

Перенаправление ввода
$ cat files.txt c b $ sort < files.txt b c

Команда sort выводит содержимое файла на экран, поскольку мы не перенаправили выход. Это можно сделать так:

$ sort < files.txt >files_sorted.txt 
Продвинутое перенаправление

Добавление & к > приводит к перенаправлению как стандартного потока выхода, так и потока ошибок. Например, файл test.cpp выведет строку stdout в cout и строку stderr в cerr .

$ g++ test.cpp $ ./a.out >& test.txt $ cat test.txt stdout stderr 

Если вы хотите вывести конкретный файловый дескриптор, вы можете приписать его номер к > .

Оболочка Bash — шпаргалка для начинающих 5

Например, для перенаправления stderr в test.txt нужно сделать следующее:

$ g++ test.cpp $ ./a.out 2> test.txt stdout $ cat test.txt stderr 

Права доступа

Команда ls -l выводит много информации о правах доступа к каждому файлу:

$ ls -l test.txt -rw-rw-r-- 1 user group 1097374 January 26 2:48 test.txt 

Оболочка Bash — шпаргалка для начинающих 6

chmod

Команда chmod изменяет права доступа файла. Вот типичные сочетания флагов для изменения прав конкретных пользователей:

Оболочка Bash — шпаргалка для начинающих 7

Вы можете вызвать chmod с описанием действий над конкретным файлом. Символ - обозначает удаление прав, символ + — добавление. Следующий пример сделает файл доступным для чтения и записи владельцу и группе:

$ chmod ug+rw test.txt $ ls -l test.txt -rw-rw---- 1 user group 1097374 January 26 2:48 test.txt 

Кроме того, chmod можно использовать с восьмеричными числами, где 1 — это наличие прав, а 0 — отсутствие:

rwx = 111 = 7 rw- = 110 = 6 r-x = 101 = 5 r-- = 100 = 4 

Следующая команда сработает так же, как и предыдущая:

$ chmod 660 test.txt 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *