Служебные символы – Глава 3. Служебные символы. Искусство программирования на языке сценариев командной оболочки

Служебные символы, имеющие особое значение в шелл скриптах

Все что следует за этим символом, является комментарием, исключением является только комбинация #! стоящая в первой строке. Любые команды, следующие за этим символом в одной строке, будут считаться комментариями и выполнены не будут.

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

  1. echo "Здесь символ # не является началом комментария."
  2. echo 'Здесь символ # тоже не является началом комментария.'
  3. echo Здесь экранированный символ \# тоже не является началом комментария.
  4. echo А здесь # означает комментарий.
  5.  
  6. echo ${PATH#*:}       # Подстановка параметров -- символ # не является началом комментария.
  7. echo $(( 2#101011 ))  # База системы счисления -- символ # не является началом комментария.

Экранируется символ #, символом \.

Кроме вышеописанных ситуаций, символ

# не интерпретируется как начало комментария в операциях поиска по шаблону.

; -- Разделитель команд ( точка с запятой )
Позволяет записывать более одной команды в строке.

В некоторых ситуациях, данный служебный символ необходимо экранировать, как и знак начала комментария.
;; -- Разделитель в операторе case ( двойная точка с запятой )
  1. case "$variable" in
  2. abc)  echo "$variable = abc" ;;
  3. xyz)  echo "$variable = xyz" ;;
  4. esac

. -- Точка, аналог встроенной в оболочку bash, команды source.
При использовании внутри сценария, позволяет подгружать внешний файл, например с данными или функциями.<
Например, есть файл test.sh содержащий следующий сценарий:
  1. #!/bin/bash
  2.  
  3. . var.file  # загружаем переменные из внешнего файла 
  4. echo $var  # выводим значение переменной

файл var.file содержит всего одну строку, где переменной $var присваивается значение

Hello world !

Запускаем сценарий test.sh

freebsd /# ./test.sh
Hello world !

Так-же "точка" может быть частью имени файла. Если имя файла начинается с точки, как правило, такой файл будет скрытым для просмотра командой ls ( зависит от оболочки ).

Если речь идет о каталогах, одна точка означает текущий каталог, две точки каталог уровнем выше, то есть родительский.

Команду точка, удобно использовать при копировании или перемещении объектов файловой системы. Например так:

freebsd /# cp /path/to/dir/* . # Копировать все файлы из директории /path/to/dir/ в текущую директорию

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

" -- Двойные кавычки
В строке, заключенной в двойные кавычки, не интерпретируются ( экранируются ) большинство служебных символов.
' -- Одинарные кавычки
Более строгий вариант экранирования. В строке, заключенной в одинарные кавычки, не будут интерпретированы любые служебные символы.
, -- Запятая
Команда запятая, используется для вычисления нескольких арифметических выражений. Несмотря на то, что вычислены будут все выражения, результат будет выведен только из последней операции. Например, такой скрипт:
  1. #!/bin/bash
  2.  
  3. let "result = ((a= 5 + 3, b= 7 - 1, c= 15 - 4))"
  4.  
  5. echo $a
  6. echo $b
  7. echo $c
  8. echo $result

выведет следующие результаты:

freebsd /# ./test.sh
8  # результат первой операции, присвоенный переменной $a
6  # результат второй операции, присвоенный переменной $b
11 # результат третьей операции, присвоенный переменной $c
11 # результат опять-же третьей операции, поскольку она последняя в последовательности выражений, присвоенный переменной $result
\ -- Escape ( обратный слэш )
Используется для экранирования отдельных служебных символов в строке. По эффекту действия данный символ аналогичен одинарным кавычкам:
  1. echo '$'  # напечатает символ $
  2. echo \$ # так-же напечатает символ $

/ -- Слэш
Используется в качестве разделителя в путях директорий и файлов, в операционных системах Unix.

При использовании в арифметических операциях, означает - деление.

` -- Подстановка команд ( обратные кавычки )
Могут используются для присвоения переменной, результатов выражения системной команды. Скрипт:
  1. #!/bin/bash
  2.  
  3. result= `hostname` # результат команды hostname присваиваем переменной 
  4. echo $result

выведет

freebsd /# ./test.sh
freebsd.host     # результат выполнения команды hostname
: -- Пустая операция ( двоеточие )
Является аналогом операции "NOP" ( нет операции ). Данную команду можно считать эквивалентом встроенной команды true. Как и true, команда двоеточие, всегда возвращает 0 ( ноль ), то есть значение истина ( true ).

Практически все команды в операционных системах unix, возвращают "0" в случае успешного завершения работы.

Возможны следующие варианты использования.
Бесконечный цикл:

  1. while :
  2. do
  3. echo "test"
  4. done
  5.  
  6. # то-же самое но с использованием <em>true</em>
  7. # while true
  8. # do
  9. # echo "test"
  10. # done

Символ заполнитель в условном операторе if/then.

  1. a=1
  2. b=2
  3. if [ $a = $b ]
  4. then :      # Не производить никаких действий
  5. else
  6. echo "test"  # поскольку условие возвращает false ( $a не равно $b ), будет выполнена эта строка
  7. fi

Символ заполнитель в операциях, предполагающих наличие двух операндов.

  1. : ${username=`whoami`} # без символа двоеточия будет выдано сообщение об ошибке

Символ заполнитель в конструкциях вложенный документ.

В операциях с подстановкой параметров.

  1. : ${HOSTNAME?} ${USER?} ${MAIL?}
  2. # если одна или несколько переменных не определены, будет выведено сообщение об ошибке

В операциях замены подстроки с подстановкой переменных.

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

При использовании с оператором >, обнуляет содержимое файла, если файла не существует, он создается:

  1. : > data.file  # этой командой файл <em>data.file</em> будет очищен до нуля.

Того-же можно добиться с помощью команды cat /dev/null > data.file, только в этом случае создается новый процесс.

В сочетании с оператором >> перенаправление с добавлением в конец файла и изменением времени последнего доступа.

При задании имени не существующего файла, он будет создан, аналогично вышеописанному варианту или действию команды touch.

Два предыдущих варианта неприменимы к символическим ссылкам, конвейерам и другим специальным файлам.

Кроме перечисленного, символ двоеточие можно использовать для создания комментариев, но это не рекомендуется, поскольку при использовании символа #, интерпретатор не проверяет данную строку на предмет ошибок, при использовании двоеточия это не так:

  1. : такой комментарий, приведет к сообщению об ошибке, ( if [ $x -eq 3] ).

Так-же символ двоеточие используется в качестве разделителя полей в файле /etc/passwd и переменной окружения $PATH.

freebsd /# echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin
! -- Логическое отрицание в условных операторах
Символ восклицательный знак используется для инвертирования кода возврата операции к которой он применяется. Так-же применяется для логического отрицания в операциях сравнения:
  1. if [ $a = $b ] # истина, если $a равно $b
  2. if [ $a != $b ] # данное условие истинно если $a НЕ РАВНО $b

Восклицательный знак является зарезервированным словом оболочки bash.

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

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

* -- Символ группового шаблона ( звездочка )
Используется в качестве шаблона для постановки в имени файла. В случае использования одиночного символа шаблона, означает совпадение с любым именем файла.
freebsd /# echo * file1.sh file2.sh file3.sh arch2.tar arch3.tar

В следующем варианте выведет файлы с любым именем, но только с расширением tar

freebsd /# echo *.tar
arch2.tar arch3.tar

В регулярном выражении, означает 0 или больше, любых символов.

В арифметических операциях знак * - означает умножение, а в варианте ** - возведение в степень.

? -- Проверка условия
В некоторых случаях используется для проверки выполнения условия.

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

  1. (( t = a<6?10:20 ))   # Тернарный оператор
  2. echo "If a < 6, then t = 10, else t = 20." # то-же самое, традиционный вариант

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

  1. : ${HOSTNAME?} ${USER?} ${MAIL?}
  2. # если одна или несколько переменных не определены, будет выведено сообщение об ошибке

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

одиночный символ.

$ -- Подстановка переменной
  1. a=5
  2. b=10
  3.  
  4. echo $a     # выведет 5
  5. echo $b     # выведет 10

Установка символа $ перед именем переменной, означает что будет получено значение данной переменной.

В регулярных выражениях, означает конец строки.

${} -- Подстановка переменной
Выполняет то-же действие, что и предыдущий вариант, но в некоторых случаях при возникновении неоднозначности интерпретации, будет работать только этот вариант. Кроме того может быть использован для конкатенации строковых переменных в одну строку.
  1. id=${USER}-on-${HOSTNAME}
  2. echo "$id"

выведет

freebsd /# ./test.sh
root-on-freebsd.grt
$*, [email protected] -- Аргументы командной строки
Переменная $* содержит все параметры командной строки в виде строки.

Переменная [email protected] тоже содержит все параметры командной строки, но строку из себя представляет каждый параметр, то есть они не интерпретируются.

$? -- Код завершения операции
Данная переменная получает код, возвращаемый последней выполненной командой, функцией или сценарием.
$$ -- PID процесса
Переменная содержит process id текущего сценария.
() -- Группа команд
Команды размещенные в скобках, выполняются в дочернем процессе ( subshell ). При этом переменные, определяемые в дочернем процессе, не видны в родительском.
  1. var=12345
  2. ( var=54321;  )  # переменная определяется в дочернем процессе
  3. echo "var = $var"

выведет

freebsd /# ./test.sh
a = 12345

Другой вариант использования конструкции с одинарными скобками, инициализация массивов.

  1. array=(element1 element2 element3)

{xxx,yyy,zzz,...} -- Фигурные скобки
Интерпретируется как список возможных вариантов. Например, следующая команда сценария, производит поиск строки test в файлах data.1, data.2, data.3.

и выводит найденные варианты

freebsd /# ./test.sh
data.1:test
data.3:test

Использовать в фигурных скобках пробелы можно, либо заключив их в одинарные или двойные кавычки, либо экранировав их с помощью символа \.

  1. echo {test1,test2}\ :{\ A," B",' C'}

выведет

freebsd /# ./test.sh
test1 : A test1 : B test1 : C test2 : A test2 : B test2 : C
{} -- Блок кода ( вложенный блок )
По сути такая конструкция создает анонимную функцию. В отличии от традиционно создаваемых функций, переменные вложенного блока, доступны всему сценарию.
  1. a="test"
  2. { a=1111; }
  3. echo "a = $a"

будет выведено:

freebsd /# ./test.sh
a = 1111

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

Перенаправление ввода/вывода из вложенного блока:

  1. #!/bin/bash
  2.  
  3. file=/etc/fstab
  4. {
  5. read line1
  6. read line2
  7. } < $file # считываем строки из файла fstab
  8.  
  9. echo "$line1"
  10. echo "$line2"
  11. exit 0

в результате выполнения этого сценария, будут выведены две первые строки файла /etc/fstab

freebsd /# ./test.sh
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/da0s1b             none            swap    sw              0       0

Сохранить результат работы вложенного блока в файл

  1. #!/bin/bash
  2. # rpm-check.sh
  3.  
  4. # Этот сценарий получает описание rpm-пакета, список файлов, и проверяет возможность установки.
  5. # Результат работы сохраняется в отдельном файле.
  6.  
  7. SUCCESS=0
  8. E_NOARGS=65
  9.  
  10. if [ -z "$1" ]
  11. then
  12.   echo "Порядок использования: `basename $0` rpm-file"
  13.   exit $E_NOARGS
  14. fi
  15.  
  16. {
  17.   echo
  18.   echo "Описание архива:"
  19.   rpm -qpi $1       # Получаем описание rpm пакета
  20.   echo
  21.   echo "Список файлов:"
  22.   rpm -qpl $1       # Получаем список файлов пакета
  23.   echo
  24.   rpm -i --test $1  # Проверяем, возможно-ли установить данный пакет
  25.   if [ "$?" -eq $SUCCESS ]
  26.   then
  27.     echo "$1 установка возможна"
  28.   else
  29.     echo "$1 -- установка не возможна"
  30.   fi
  31.   echo
  32. } > "$1.test"       # Перенаправление результатов во внешний файл.
  33.  
  34. exit 0

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

{} \; -- Путь к файлу и его имя
Чаще всего применяется с командой find

Обратите внимание что символ точка с запятой, завершающий опцию --ezec, команды find, должен быть экранирован, что-бы избежать его интерпретации.

[ ] -- test
В конструкции с квадратными скобками, проверяется истинность включенного в него выражения.
  1. var=1
  2. if [ $var = 1 ]
  3. then
  4. echo "var= $var"
  5. else :
  6. fi

При работе с массивами, в квадратных скобках указывается индекс элемента к которому нужно обратиться.

  1. array=(a b c)  # создаем массив
  2. echo ${array[1]} # выводим второй элемент массива

Нумерация элементов массива начинается с 0 ( ноль ), поэтому в элементе с индексом 1, находится символ b .

При использовании в регулярных выражения, в квадратных скобках, пишутся так называемые классы символов или диапазоны.

[xyz] - соответствует любому из этих трех символов
[0-9] - соответствует любому числовому символу от 0 до 9
[a-zA-Z] - соответствует любой, прописной или строчной букве, английского алфавита

[[]] -- Двойные квадратные скобки
Это расширенный вариант конструкция с одинарными квадратными скобками, в двойных квадратных скобках также проверяется истинность, заключенного в данную конструкцию, выражения, но этот вариант более предпочтителен, поскольку позволяет избежать некоторых логических ошибок. Например в конструкции с двойными квадратными скобками, допустимо использовать операторы &&, ||, < и >, в то время как в одинарных скобках они приведут к ошибке.

При использовании с условным оператором if, наличие квадратных скобок, как одинарных так и двойных, не обязательно.

(( )) -- Двойные круглые скобки
Между двойными круглыми скобками, вычисляется целочисленное арифметическое выражение. Кроме того двойные скобки позволяют работать с переменными в стиле языка C:
  1. #!/bin/bash
  2. echo
  3. (( a = 23 ))  # присваиваем значение переменной
  4. echo "a ( ) = $a"
  5. (( a++ ))  # пост-инкремент значения переменной $a, в стиле языка C
  6. echo "a ( a++) = $a"
  7. (( a-- ))  # пост-декремент значения переменной $a, в стиле языка C
  8. echo "a ( a--) = $a"
  9. (( ++a )) # пред-инкремент значения переменной $a, в стиле языка C
  10. echo "a ( ++a) = $a"
  11. (( --a ))  # пред-декремент значения переменной $a, в стиле языка C
  12. echo "a ( --a) = $a"

так-же можно использовать тернарные операторы, упомянутые ранее:


>, &>, >&, >>, < -- Перенаправление ввода/вывода
В любой unix системе, по умолчанию открыто три файла stdin ( стандартный поток ввода - клавиатура ), stdout ( стандартный потов вывода - экран ) и stderr ( стандартный поток вывода ошибок ), дескрипторы 0,1 и 2, соответственно.

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

freebsd /# ./test.sh > outfile  # перенаправление вывода сценария stdout в файл outfile
freebsd /# command &> outfile # перенаправление выводов stdout и stderr команды в файл outfile
freebsd /# command >&2 # перенаправление вывода stdout команды в поток stderr
freebsd /# ./test.sh >> outfile # перенаправление вывода сценария stdout в файл, в режиме добавления в конец файла

Операция подстановки процесса, передает вывод одного процесса на ввод другого.

между символами <, > и круглой скобкой не должно быть пробела.

Кроме того символы < и > используются в операциях сравнения символов и целых чисел.

<< -- Перенаправление на встроенный документ
Встроенный документ, специальный вид перенаправления, позволяющий передать интерактивной команде или программе, список команд. Например, сценарий с выводом многострочного текста с помощью программы cat, может выглядеть так:
  1. #!/bin/bash
  2.  
  3. cat <<End-of-message
  4. -------------------------------------
  5. line one
  6. line two
  7. line three
  8. -------------------------------------
  9. End-of-message
  10. exit 0

на выходе получим следующее:

freebsd /# ./test.sh
-------------------------------------
line one
line two
line three
-------------------------------------

Символ-ограничитель, в нашем примере End-of-message, не должен повторяться в теле самого встроенного документа.

<, > -- Посимвольное ASCII-сравнение
Сравниваются ASCII коды символов
  1. if [[ "$a" < "$b" ]]
  2. if [ "$a" \< "$b" ]
  3. if [[ "$a" > "$b" ]]
  4. if [ "$a" \> "$b" ]

Обратите внимание, при использовании операций сравнения в одинарных квадратных скобках, символы больше и меньше, необходимо экранировать обратным слэшем

\<, \> -- Граница слова
Данные символы используются для обозначения границ слова в регулярных выражениях, например в операциях поиска.
grep '\' textfile  # найти все вхождения отдельного слова the, такие слова как them или other, учтены не будут
| -- Конвейер
Конвейер ( канал, pipe ), это классический способ межпроцессного взаимодействия, stdout одного процесса, передается на stdin другого. Часто используется для связывания нескольких команд между собой. Одна команда, передает результат обработки данных через конвейер на ввод другой команды. Например, вывод команды ps ( process status - список процессов ), передается на ввод команде grep ( поиск по шаблону ), которая в свою очередь, сделав выборку, выводит результат в stdout.
freebsd /# ps aux | grep sshd
root    1274  0.0  0.2 25108  4460  ??  Is   Mon03PM   0:00.01 /usr/sbin/sshd
root    1349  0.0  0.2 37040  5164  ??  Ss   Mon03PM   0:06.84 sshd: [email protected]/0 (sshd)
root   22977  0.0  0.1  8060  1396   1  RL+   9:18PM   0:00.00 grep sshd

или еще пример, команда cat выводит содержимое файла на вход команды wc, которая посчитает количество строк и выведет результат.

freebsd /# cat test.sh | wc -l
9

В конвейеры можно объединять как команды, так и сценарии. Например, перенаправим вывод команды ls на вход сценария, преобразующего символы в верхний регистр:

  1. #!/bin/bash
  2.  
  3. tr 'a-z' 'A-Z'
  4. exit 0
freebsd /# ls -l | ./test.sh # делаем перенаправление
TOTAL 6688
-RWXR--R--   1 ROOT  WHEEL       28 JUL 25 18:34 1.PHP
-RWXR--R--   1 ROOT  WHEEL       75 APR  4 09:57 1.PL
-RWXR--R--   1 ROOT  WHEEL       60 APR  4 16:47 1.SH

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

Stdout каждого процесса в конвейере, должен читаться в stdin другого процесса, иначе конвейер оборвется:

cat file | ls -l | sort # здесь вывод содержимого файла командой cat уйдет в никуда, в результате на выходе мы получим не то, что ожидаем

Конвейер выполняется в отдельном процессе, поэтому не может получить доступ к переменным сценария.

Если какая-то из команд конвейера завершается аварийно, весь конвейер аварийно завершает работу.

>| -- Принудительное перенаправление
Перенаправление происходит даже если bash, используется с ключом -C ( noclobber ).
|| -- Логическое ИЛИ
В операциях сравнения, ||, возвращает значение true, если хотя-бы одно условие возвращает true:
  1. #!/bin/bash
  2.  
  3. a=1
  4. b=2
  5. if [ $a -eq 10 ] || [ $b -eq 2 ]
  6. then
  7. echo "true"
  8. else
  9. echo "false"
  10. fi

этот небольшой сценарий выведет true, поскольку второе условие вернет true, то и вся проверка вернет true.

Вышеприведенное условие можно записать в следующей форме:

  1. if [[ $a -eq 10 || $b -eq 2 ]]

ну или аналог

  1. if [ $a -eq 10 -o $b -eq 2 ]

Оператор ||, не может использоваться в одинарных квадратных скобках.

& -- Выполнить процесс в фоновом режиме
Команда, за которой стоит символ & ( амперсанд ), будет выполняться в фоновом режиме.

При использовании в сценариях, в фоновом режиме можно выполнять не только команды, но и циклы, например так:

  1. #!/bin/bash
  2.  
  3. for i in 1 2 3 4 5 6 7 8 9 10
  4. do
  5. echo -n "$i "
  6. done &
  7. echo
  8.  
  9. for i in 11 12 13 14 15 16 17 18 19 20
  10. do
  11. echo -n "$i "
  12. done
  13. echo
  14.  
  15. exit 0

Обратите внимание, команда, запущенная из сценария в фоновом режиме, может съесть вывод фоновой команды. Например, следующий сценарий:

  1. #!/bin/bash
  2.  
  3. ls -l & # команда ls запускается в фоне
  4. echo "Done."

выведет такой результат:

freebsd /# ./test.sh
Done.

как видите, результат выполнения команды ls, отсутствует.
Что-бы исправить поведение сценария, достаточно использовать оператор wait, который приостанавливает выполнение сценария, до тех пока, пока не будут завершены все фоновые задания. Приводим сценарий к следующему виду:

  1. #!/bin/bash
  2.  
  3. ls -l &
  4. echo "Done."
  5. wait

теперь мы получим ожидаемый вывод:

freebsd /# ./test.sh
Done.
total 6688
-rwxr--r--   1 root  wheel       28 Jul 25 18:34 1.php
-rwxr--r--   1 root  wheel       75 Apr  4 09:57 1.pl
-rwxr--r--   1 root  wheel       60 Apr  4 16:47 1.sh
&& -- Логическое И
В условных операциях, &&, возвращает true только в том случае, если ОБА операнда имеют значение true.
Формат использования аналогичен оператору || ( логическое ИЛИ ).
  1. if [ $a -eq 1 ] && [ $b -eq 2 ]

или

  1. if [[ $a -eq 10 && $b -eq 2 ]]

или

  1. if [ $a -eq 10 -a $b -eq 2 ]

- -- Дефис
Часто дефис предшествует опциям команд.
ls -l

Для многих команд наличие дефиса перед ключами опция не обязательно, например у команды ps, тем не менее бывают ситуации когда его использование необходимо, что-бы опции интерпретировались именно как опции а не как их значения.

Перенаправление из/в stdin или stdout

Пример перемещения дерева каталогов и файлов с помощью архиватора tar:

  1. (cd ./ss && tar cf - . ) | (cd ./test && tar xpvf -)

что делает данный сценарий

  • cd ./ss - перейти в каталог, расположенный в текущем каталоге, содержимое которого будем переносить
  • && - все последующие команды будут выполнены только после выполнения перехода в исходный каталог
  • tar cf - . -ключ c говорит архиватору tar создать новый архив, ключ f ( file ) с последующим - задается файл архива -- stdout, в архив помещается текущий каталог ( . ) со всем содержимым.
  • | ( ... ) - конвейер в дочерний процесс
  • cd ./test - Перейти в каталог назначения
  • && - как и выше
  • tar xpvf - - распаковать tar архив ( ключ x ), сохранить принадлежность и права доступа к файлам ( ключ p ), выдавая подробные данные во время выполнения ( ключ v ), файл архива stdin ( ключ f с последующим - )

Еще один пример:

freebsd /# echo "hello" | cat -
hello

В таком контексте - ( дефис ), скорее не отдельный оператор bash, а опция, распознаваемая Unix утилитами ( tar, cat и т.д. ), выводящими результаты в stdout.

Если предполагается имя файла, -, перенаправляет вывод в stdout или принимает ввод с stdin.

При запуске программы file без параметров, будет выдано сообщение об ошибке:

freebsd /# file
Usage: file [-bcikLhnNrsvz0] [-e test] [-f namefile] [-F separator] [-m magicfiles] file...

если передать в качестве параметра - ( дефис ), file будет ожидать пользовательского ввода:

freebsd /# file -
aaaaa
/dev/stdin: ASCII text

freebsd /# file -
#!/bin/bash
/dev/stdin: POSIX shell script text executable

как видите, программа file проанализировала стандартный поток ввода stdin и определила тип его содержимого.

Передача stdout по конвейеру на вход других команд, позволяет выполнять различные трюки, например, вставка строки в начало файла:

  1. #!/bin/bash
  2.  
  3. file="./text.txt"
  4. title="this is first line"
  5. echo $title | cat - $file >$file.new

на выходе получаем файл text.txt.new, содержащий все предыдущие данные, плюс первую строку "this is first line".

Теперь более полный пример использования архиватора tar с символом -. Небольшой скрипт для архивирования файлов, подвергшихся изменениям в течение последних суток:

  1. #!/bin/bash
  2.  
  3. BACKUPFILE=backup
  4. archive=${1:-$BACKUPFILE} # если имя для архива не задано в командной строке, будет назначено имя по умолчанию <em>backup.tar.gz</em>
  5.  
  6. tar cvf - `find . -mtime -1 -type f -print0 | xargs -0 tar rvf "$archive.tar"`
  7. gzip $archive.tar
  8. echo "done"
  9. exit 0

Оператор перенаправления - может конфликтовать с именами файлов, начинающихся с дефиса -filename, что-бы этого избежать, в сценариях необходимо проверять имена файлов и предварять их префиксом пути, например: ./-filename или $PWD/-filename.
Кроме того не забывайте о значениях переменных, простой пример:

этот сценарий ничего не выведет, поскольку итоговая команда получится echo -n, то есть значение переменной, "-n", будет интерпретировано как опция команды echo, просто подавляющая вывод символов новой строки.

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

В арифметических выражениях, означает операцию вычитания.

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

= -- Символ равно
В зависимости от контекста применения, выступает в роли операции присваивания значений переменных:
  1. a=100
  2. b="test"
  3. echo $a # выведет 100
  4. echo $b # выведет test  

или как знак равенства в операциях сравнения.

+ -- Плюс
В зависимости от контекста использования, оператор сложения в арифметических операциях или квантификатор в регулярном выражении.
В регулярных выражениях означает, одно или несколько совпадений предыдущего символа.
% -- Модуль
В зависимости от контекста использования, остаток от деления в арифметических операциях или выступает в качестве шаблона.

В шаблонах, удаляет из переменной большую или меньшую подстроку, совпадающую с шаблоном. Поиск ведется с конца строки.

~ -- Домашний каталог ( тильда )
Соответствует переменной окружения $HOME, содержащей путь к домашнему каталогу текущего пользователя.
freebsd /# echo ~
/root

freebsd /# ls -l ~  # листинг домашнего каталога текущего пользователя
total 47030
-rw-------  1 root        wheel            120 Aug 28 23:56 .bash_history
drwxr-xr-x  5 root        wheel            512 Jul 16 16:54 .cpan
-rw-r--r--  1 root        wheel            940 Jul  5 12:16 .cshrc
drwxr-xr-x  3 root        wheel            512 Jun 24 02:41 .gem
~+ -- Текущий рабочий каталог
Соответствует переменной окружения $PWD, содержащей имя текущего рабочего каталога.
~- -- Предыдущий рабочий каталог
Соответствует переменной окружения $OLDPWD, содержащей имя предыдущего рабочего каталога.
^ -- Начало строки
При использовании в регулярных выражениях, обозначает начало строки текста.
Управляющий символ

В качестве управляющего символа, управляет выводом текста или поведением терминала. Набирается на клавиатуре как сочетание Ctrl+клавиша.

Ctrl+C - Прервать выполнение процесса.
Ctrl+D - Выход из системной оболочки, аналог команды exit или EOF- конец файла, так-же выступает завершающим символом при вводе с stdin.
Ctrl+G - BEL, звуковой сигнал.
Ctrl+H - Backspace, удалить предыдущий символ.
Ctrl+J - Возврат каретки.
Ctrl+L - Аналог команды clear, очистка окна терминала.
Ctrl+M - Перевод строки.
Ctrl+U - Очистить строку ввода.
Ctrl+X - Приостановить выполнение процесса.

Символ пробела
Пробелом считается сам символ пробела, символ табуляции, перевод строки, возврат каретки или комбинация из перечисленных символов. Используется как разделитель команд и переменных.
Поскольку bash довольно привередлив в отношении пробелов, есть строгие ограничения на использование пробельных символов в операциях присвоения значений переменным. Например:
  1. var = 123 # не правильный вариант, переменная будет интерпретирована как команда м аргументами = и 123
  2. var=123 # правильный вариант
  3.  
  4. let c = $a - $b # не правильный вариант
  5. let c=$a-$b # правильный
  6. let "c = $a - $b" # тоже допустимо
  7.  
  8. if [ $a -le 5] # не правильный вариант
  9. if [ $a -le 5 ] # правильный
  10. if [ "$a" -le 5 ] # тоже правильный
  11. [[ $a -le 5 ]] # тоже правильный

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

Переменная $IFS содержит разделитель полей, используемый некоторыми программами, по-молчанию, пробел.

1.3. Символ

Само название «текстовый документ» говорит о том, что его основой является собственно текст. Текст представляет собой совокупность символов. Из символов составляются слова. Слова располагаются по строкам, образуя абзацы и страницы. Все перечисленные объекты имеют свои параметры, и для них используются соответствующие технологические приемы форматирования.

При подготовке текста очень важно понимать, с каким объектом вы работаете, и какие параметры имеет этот объект. Тогда можно более продуктивно использовать приемы автоматизации подготовки документа.

Среда Word распознает отдельные элементы текста – символ, слово, строка, абзац, список. Из них символ, абзац и список являются объектами, которые имеют определенный набор параметров форматирования.

Символ – элементарная неделимая единица текста. Для ввода символов используется клавиатура.

Символы разделяются на следующие группы:

  • строчные буквы (а, б, в, г, д, е …)

  • прописные буквы (А, Б, В, Г, Д, Е …)

  • цифры (1, 2, 3 …)

  • знаки (@, «, #, №, $ …)

  • специальные символы

  • непечатаемые символы, в том числе пробел – пустой символ, используемый для отделения слов друг от друга.

Символы набираются либо простым нажатием соответствующей клавиши, либо при одновременном с ней нажатии клавиши Shift. Так, например, строчные символы и цифры, а также некоторые знаки набираются простым нажатием соответствующей клавиши клавиатуры. А для набора прописных букв и знаков, расположенных на цифровых клавишах, надо дополнительно нажать клавишуShift.

На клавишах клавиатуры обозначено по два (и даже по три) символа. Одни символы набираются при переключении раскладки клавиатуры на режим «Русский», другие – при переключении на английскую раскладку клавиатуры. Некоторые символы (например, цифры и некоторые знаки) имеют одну и ту же клавишу в обеих раскладках.

На клавиатуре располагается также отдельная группа цифровых клавиш и арифметических знаков. Эти клавиши дублируют назначение соответствующих клавиш основной клавиатуры. Чтобы использовать клавиши этой группы, надо включить режим NumLock, нажав на одноименную клавишу, расположенную в этой группе.

Специальные символы

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

Например, в тексте могут встречаться слова немецкого, шведского, финского и других языков, содержащие буквы с надстрочными (или подстрочными) знаками, которые используются в национальных алфавитах – Ϋ, U, G, Ã и др. Надстрочные и подстрочные знаки, используемые у некоторых символов национальных алфавитов, называются диакритическими знаками.

Есть символы, обозначающие денежные единицы других государств – £ (английский фунт), ¥ (японская иена), € (евро), ₤ (итальянская лира) и др.

Есть экономические, юридические символы – © (авторское право), ™ (торговая марка), ® (охраняемый знак) и др.

Есть грамматические символы, которые в тексте имеют специальное назначение. Рассмотрим грамматические знаки «дефис» и «тире». Дефис– символ, связывающий две части слова или два слова, которые читаются как одно, например, «кто-то», «темно-синий», «из-за» и др. Дефис не отделяется от соседних букв пробелами. Если слово с дефисом не будет полностью помещаться на одной строке, то среда текстового процессора разобьет его по дефису на две части. И тогда при чтении дефис будет восприниматься как перенос. Годы, разделенные чертой, например, 1941-1945, также плохо будут восприниматься при чтении, если окажутся на разных строках. Чтобы исключить нежелательный перенос в словах используется специальный символ «неразрывный дефис».

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

То, что слова отделяются друг от друга пробелом, знают все. Среда текстового процессора распределяет слова по строкам. Если слово полностью не помещается на одной строке, то оно переносится на следующую строку. Однако существуют текстовые фразы, для которых нежелательно, чтобы слова располагались на разных строках. Например, плохо воспринимается текст, если буквы имени и отчества останутся на одной строке, а фамилия перейдет на следующую (А.С. Пушкин). Так же плохо будет смотреться фраза «2004 г.», если буква «г» окажется на новой строке. Чтобы избежать таких ситуаций существует специальный символ «неразрывный пробел».

Для того чтобы ввести в текст эти и другие специальные символы, которые не отображены на клавишах, используется группа Символына вкладкеВставка. Если выбрать командуДругие символы (Рис. 5), откроется окноСимвол(Рис. 6).

Рис. 5. Инструменты вставки символов

На вкладке Символыможно просмотреть все символы, допускаемые для ввода в среде Word. В раскрывающемся спискеШрифтможно выбрать конкретный тип шрифта символа. Если в списке выбрать пунктОбычный текст, то символ будет набран тем шрифтом, которым набирается текст. В центральном окне находится 1170 различных символов. Они распределены по группам, которые можно просмотреть в раскрывающемся спискеНабор, например: Основная латиница, Денежные единицы, Математические операторы, Греческие и коптские символы и т.д.

На вкладке Специальные знакиприведены некоторые символы, о которых говорилось выше: неразрывный пробел, неразрывный дефис, длинное тире, авторское право, торговая марка и другие. Справа от перечня знаков приведены сочетания клавиш, которые приводят к быстрой вставке символа. Если сочетания клавиш для некоторого символа не установлено, а он используется в тексте довольно часто, можно ввести новое сочетание клавиш для выделенного символа (Рис. 7). Для этого следует:

Рис. 6. Окно Символ

Рис. 7. Назначение сочетания клавиш для вставки символа

  • щелкнуть по кнопке Сочетание клавиш;

  • в окне Настройка клавиатурыщелкнуть в полеНовое сочетание клавиш;

  • нажать клавиши, которые будут клавиатурным эквивалентом вставки данного символа;

  • щелкнуть по кнопке Назначить.

Некоторые виды шрифтов, могут не поддерживать все 1170 знаков.

Большинство шрифтов являются символьными. Иначе говоря, представляют собой разработанные дизайнерами в едином стиле изображения символов. Шрифт подобен почерку у людей. Красивый почерк легко читается. Просмотрите наборы символов различных шрифтов, и вы увидите, что в каждом шрифте между символами существует нечто общее, их объединяющее. У всех символов есть элементы (закругления, выступы, утолщения) выполненные одинаково. Если слово написано одним шрифтом, то и читать его удобнее чем, если бы буквы были написаны разными шрифтами.

Кроме символьных шрифтов, существуют также декоративные шрифты. Они содержат наборы различных графических изображений. Эти шрифты называются дингбатсы. К ним относятся шрифты Webdings, Wingdings , Wingdings2, Wingdings3. На Рис. 8 приведены образцы декоративных символов.

Рис. 8. Декоративные шрифты

Кроме видимых символов, существуют также непечатаемые знаки. Это служебные символы, по которым среда текстового процессора отличает информационные объекты. Например, пробел – непечатаемый символ, служит для отделения слов друг от друга. В дальнейшем мы узнаем назначение многих непечатаемых символов.

Непечатаемые символы несут в себе важную информацию, необходимую для правильного форматирования документа. Поэтому при работе желательно включить режим отображения непечатаемых символов. Для этого на вкладке Главнаяв группеАбзацнайдите кнопку (Непечатаемые знаки) и нажмите ее. При включении этого режима пробелы между словами будут изображаться точками. И сразу можно увидеть, сколько пробелов стоит между словами. Хорошим стилем считается применение однократного нажатия пробела для разделения слов.

служебные символы - это... Что такое служебные символы?


служебные символы
  1. service digits

Русско-английский словарь нормативно-технической терминологии. academic.ru. 2015.

  • служебные сигналы или данные
  • служебные телексные вызовы

Смотреть что такое "служебные символы" в других словарях:

  • служебные символы — — [http://www.iks media.ru/glossary/index.html?glossid=2400324] Тематики электросвязь, основные понятия EN service digits …   Справочник технического переводчика

  • Символы районов Вологодской области — …   Википедия

  • FAT — (англ. File Allocation Table  «таблица размещения файлов»)  классическая архитектура файловой системы, которая из за своей простоты всё ещё широко используется для флеш накопителей. В недавнем прошлом использовалась в дискетах, на… …   Википедия

  • Псевдографика — Псевдографика, псевдографические символы  совокупность символов, включенных в набор символов компьютерного шрифта, отображающих графические примитивы (линии, прямоугольники, треугольники, кресты, различная заливка и т. п.).… …   Википедия

  • Логика второго порядка — в математической логике  формальная система, расширяющая логику первого порядка[1] возможностью квантификации общности и существования не только над атомами, но и над предикатами. Логика второго порядка несводима к логике первого порядка. В… …   Википедия

  • Логика первого порядка — (исчисление предикатов)  формальное исчисление, допускающее высказывания относительно переменных, фиксированных функций и предикатов. Расширяет логику высказываний. В свою очередь является частным случаем логики высшего порядка. Содержание 1 …   Википедия

  • Исчисление предикатов — Логика первого порядка (исчисление предикатов)  формальное исчисление, допускающее высказывания относительно переменных, фиксированных функций, и предикатов. Расширяет логику высказываний. В свою очередь является частным случаем логики высшего… …   Википедия

  • Исчисления предикатов — Логика первого порядка (исчисление предикатов)  формальное исчисление, допускающее высказывания относительно переменных, фиксированных функций, и предикатов. Расширяет логику высказываний. В свою очередь является частным случаем логики высшего… …   Википедия

  • Логика предикатов — Логика первого порядка (исчисление предикатов)  формальное исчисление, допускающее высказывания относительно переменных, фиксированных функций, и предикатов. Расширяет логику высказываний. В свою очередь является частным случаем логики высшего… …   Википедия

  • Предикатная логика — Логика первого порядка (исчисление предикатов)  формальное исчисление, допускающее высказывания относительно переменных, фиксированных функций, и предикатов. Расширяет логику высказываний. В свою очередь является частным случаем логики высшего… …   Википедия

  • ZX81 — Тип Домашний компьютер Выпущен 1981 …   Википедия

Специальные символы — Википедия

Материал из Википедии — свободной энциклопедии

Специальные символы
англ. Specials
Диапазон FFF0—FFFF
(16 кодовых позиций)
Плоскость BMP
Письменности Общие знаки
Основные стандарты ISO 8859, ISO 646
Задействовано 5 кодовых позиций
4
Зарезервировано 9 кодовых позиций
2 несимвольных знака
1.0.0 1 (+1)
2.1 2 (+1)
3.0 5 (+3)
Примечания: [1][2]
Официальный документ Юникода (PDF)

Специальные символы (англ. Specials) — 161-й блок стандарта «Юникод» и последний в Основной многоязычной плоскости. Занимает кодовые позиции с U+FFF0 по U+FFFF. Из содержащихся в блоке шестнадцати кодовых позиций задействованы лишь пять. Блок примечателен символом-заполнителем (�), относящимся к двум самым часто используемым символам в Юникоде, который в большинстве операционных систем (преимущественно в браузерах) отображаются, когда какой-либо символ Юникода не поддерживается самой системой пользователя или не включён в набор шрифта. В иных случаях вместо символа-заполнителя отображается белый вертикальный прямоугольник (▯).

Легенда
Цвет Буква добавлена
в версии
2.1
3.0
зарезервировано
не символ
Код Символ Название HTML
16-чный 10-чный
U+FFF0 <reserved-FFF0> &#xFFF0; &#65520;
U+FFF1 <reserved-FFF1> &#xFFF1; &#65521;
U+FFF2 <reserved-FFF2> &#xFFF2; &#65522;
U+FFF3 <reserved-FFF3> &#xFFF3; &#65523;
U+FFF4 <reserved-FFF4> &#xFFF4; &#65524;
U+FFF5 <reserved-FFF5> &#xFFF5; &#65525;
U+FFF6 <reserved-FFF6> &#xFFF6; &#65526;
U+FFF7 <reserved-FFF7> &#xFFF7; &#65527;
U+FFF8 <reserved-FFF8> &#xFFF8; &#65528;
U+FFF9 interlinear annotation anchor &#xFFF9; &#65529;
U+FFFA interlinear annotation separator &#xFFFA; &#65530;
U+FFFB interlinear annotation terminator &#xFFFB; &#65531;
U+FFFC object replacement character &#xFFFC; &#65532;
U+FFFD replacement character &#xFFFD; &#65533;
U+FFFE <noncharacter-FFFE> &#xFFFE; &#65534;
U+FFFF <noncharacter-FFFF> &#xFFFF; &#65535;
⛭

Третичная идеографическая плоскость (плоскость 3, TIP) [U+30000…U+3FFFF]; плоскости 4-13 [U+40000…U+DFFFF]

Не задействованы

Специализированная дополнительная плоскость (плоскость 14, SSP) [U+E0000…U+EFFFF]

Википедия:Специальные символы — Википедия

Материал из Википедии — свободной энциклопедии

↱
Запрос «ВП:СС» перенаправляется сюда; если вы искали списки сокращений, см. ВП:СОКР. Запрос «ВП:СС» перенаправляется сюда; если вы искали статьи-сироты, см. ВП:ССС.

Википедия записывает статьи в кодировке Юникод, поэтому для удобства чтения исходного текста следует все символы вставлять непосредственно, без использования кодов HTML, например, α вместо &alpha;.

Символ HTML-мнемоника
¿ ¡ &iquest; &iexcl;
« » ‹ › &laquo; &raquo; &lsaquo; &rsaquo;
" ‘ ’ “ ” ‚ „ &quot; &lsquo; &rsquo; &ldquo; &rdquo; &sbquo; &bdquo;
§ ¶ &sect; &para;
† ‡ &dagger; &Dagger;
&bull;
— – &mdash; &ndash;
&hellip;
<неразрывный пробел> &nbsp;

Математические символы[править код]

√ ∫ ∂ ∑ ∏ & &radic; &int; &part; &sum; &prod; &amp;
операторы: − ± × ⋅ ∗ ÷ &minus; &plusmn; &times; &sdot; &lowast; &divide;
векторное умножение: ⨯ &#10799;
операции умножения и прямой суммы: ⊗ ⊕ &otimes; &oplus;
условия: ≅ ≈ ∝ ≡ ≠ ≤ ≥ < > &cong; &asymp; &prop; &equiv; &ne; &le; &ge; &lt; &gt;
множества: ∈ ∉ ∩ ∪ ⊂ ⊃ ⊆ ⊇ ∅ &isin; &notin; &cap; &cup; &sub; &sup; &sube; &supe; &empty;
логические: ¬ ∧ ∨ &not; &and; &or;
кванторы: ∃ ∀ &exist; &forall;
двойные стрелки: ⇐ ⇒ ⇑ ⇓ ⇔ &lArr; &rArr; &uArr; &dArr; &hArr;
одинарные стрелки: ← → ↑ ↓ ↔ ↕ ↵ &larr; &rarr; &uarr; &darr; &harr; &#8597; &crarr;
верхние индексы: ¹ ² ³ &sup1; &sup2; &sup3;
дроби: ¼ ½ ¾ &frac14; &frac12; &frac34;
градусы: ° &deg;
минуты, футы: ′ &prime;
секунды, дюймы: ″ &Prime;
бесконечность: ∞ &infin;
промилле: ‰ &permil;
от букв: ∇ ℵ ℑ ℘ ℜ &nabla; &alefsym; &image; &weierp; &real;
&there4;
Белые фигуры: ♔♕♖♗♘♙ &#x2654; &#x2655; &#x2656; &#x2657; &#x2658; &#x2659;
Чёрные фигуры: ♚♛♜♝♞♟ &#x265A; &#x265B; &#x265C; &#x265D; &#x265E; &#x265F;

С помощью символов «нижняя половина блока» и «верхняя половина блока» можно изобразить шахматное поле:

▄▀▄▀ &#x2584;&#x2580;&#x2584;&#x2580;
&#01414;
&#01415;
™ © ® &trade; &copy; &reg;
¢ € ¥ £ ¤ &cent; &euro; &yen; &pound; &curren;
♠ ♣ ♥ ♦ &spades; &clubs; &hearts; &diams;
⊕ ⊗ &oplus; &otimes;
ª º &ordf; &ordm;
´ ¨ ˜ ‾ ¦ ◊ &acute; &uml; &tilde; &oline; &brvbar; &loz;
∠ ⊥ ƒ ⁄ ˆ &ang; &perp; &fnof; &frasl; &circ;
★ ☭ ♪ ☂ ☠ ☛ &#9733; &#9773; &#9834; &#9730; &#9760; &#9755;
&#8646;
█ ░ ▒ ▓ &#x2588; &#x2591; &#x2592; &#x2593;
► ◄ ▼ ▲ &#9658; &#9668; &#9660; &#9650;
▌ ▄ ■ ▀ ▐ &#9612; &#9604; &#9632; &#9600; &#9616;
 � &#65532; &#65533;
Α Β Γ Δ Ε Ζ

α β γ δ ε ζ

&Alpha; &Beta; &Gamma; &Delta; &Epsilon; &Zeta;

&alpha; &beta; &gamma; &delta; &epsilon; &zeta;

Η Θ Ι Κ Λ Μ Ν

η θ ι κ λ μ ν

&Eta; &Theta; &Iota; &Kappa; &Lambda; &Mu; &Nu;

&eta; &theta; &iota; &kappa; &lambda; &mu; &nu;

Ξ Ο Π Ρ Σ

ξ ο π ρ σ ς

&Xi; &Omicron; &Pi; &Rho; &Sigma;

&xi; &omicron; &pi; &rho; &sigma; &sigmaf;

Τ Υ Φ Χ Ψ Ω

τ υ φ χ ψ ω

&Tau; &Upsilon; &Phi; &Chi; &Psi; &Omega;

&tau; &upsilon; &phi; &chi; &psi; &omega;

Комбинируемые диакритические символы[править код]

Ниже показаны диакритические модификаторы букв на примере буквы «а»:

&#768;
&#769;
&#770;
&#771;
&#776;
&#777;
&#779;
&#780;
a⃗ &#8407;

Фиксированные диакритические символы[править код]

Используйте диакритические символы только для иностранных слов! Для того чтобы поставить ударение в русском слове, поставьте после ударной гласной символ  ́ (&#769;), получится, например, а́ (чтобы не иметь дело с хитрыми знаковыми последовательностями, можно просто написать {{подст:ударение}}).

À Á Â Ã Ä Å Æ Ą
à á â ã ä å æ ą
&Agrave; &Aacute; &Acirc; &Atilde; &Auml; &Aring; &AElig; &#260;
&agrave; &aacute; &acirc; &atilde; &auml; &aring; &aelig; &#261;
Ç Ć Ĉ Č
ç ć ĉ č
&Ccedil; &#262; &#264; &#268;
&ccedil; &#263; &#265; &#269;
È É Ê Ë Ę Ě
è é ê ë ę ě
&Egrave; &Eacute; &Ecirc; &Euml; &#280; &#282;
&egrave; &eacute; &ecirc; &euml; &#281; &#283;
̠͠ΠÏ
ì í î ï
&Igrave; &Iacute; &Icirc; &Iuml;
&igrave; &iacute; &icirc; &iuml;
Ð
ð
&ETH;
&eth;
Ñ
ñ
&Ntilde;
&ntilde;
Ò Ó Ô Œ Õ Ö Ø
ò ó ô œ õ ö ø
&Ograve; &Oacute; &Ocirc; &OElig; &Otilde; &Ouml; &Oslash;
&ograve; &oacute; &ocirc; &oelig; &otilde; &ouml; &oslash;
Ù Ú Û Ü
ù ú û ü
&Ugrave; &Uacute; &Ucirc; &Uuml;
&ugrave; &uacute; &ucirc; &uuml;
Ý Ÿ
ý ÿ
&Yacute; &Yuml;
&yacute; &yuml;
Þ
þ
&THORN;
&thorn;
ß &szlig;

Эти символы используются в фонетических транскрипциях слов.

ʈ ɖ  ɟ ɢ ʔ ɡ &#648; &#598; &#607; &#610; &#660; &#261;
ɱ ɳ   ɲ ŋ ɴ &#625; &#627; &#626; &#331; &#628;
ʙ ʀ ɾ ɽ &#665; &#640; &#638; &#637;
ɸ β θ ð ʃ ʒ ʂ ʐ

ç ʝ ɣ γ ʁ ħ ʕ ɦ

&#632; &beta; &theta; &eth; &#643; &#658; &#642; &#656;

&ccedil; &#669; &#611; &gamma; &#641; &#295; &#661; &#614;

ʋ ɹ ɻ ɰ &#651; &#633; &#635; &#624;
ɨ ʉ ɯ ɪ ʏ ʊ &#616; &#649; &#623; &#618; &#655; &#650;
ø ɘ ɵ ɤ ə

ɛ œ ɜ ɞ ʌ ɔ

&oslash; &#600; &#629; &#612; &#601;

&#603; &oelig; &#604; &#606; &#652; &#596;

æ ɐ ɶ ɑ ɒ &aelig; &#592; &#630; &#593; &#594;
ʍ ɥ ʜ &#653; &#613; &#668;
ʦ ʧ ʨ ʣ ʤ ʥ &#678; &#679; &#680; &#675; &#676; &#677;
ʢ ʡ ɕ ʑ ɺ ɧ &#674; &#673; &#597; &#657; &#634; &#615;
ɓ ɗ ʄ ɠ ʛ &#595; &#599; &#644; &#608; &#667;
ɭ ʎ ʟ ɬ ɮ &#621; &#654; &#671; &#620; &#622;
ʘ ǀ ǃ ǂ ǁ &#664; &#448; &#451; &#450; &#449;
ʼ ˈ ˌ ː ˑ ˘ ‖ ‿ &#700; &#712; &#716; &#720; &#721; &#728; &#8214; &#8255;

Подстрочные и надстрочные индексы[править код]

Надстрочные индексы вставляются так: X<sup>2+3·4</sup> → X2+3·4 (либо с использованием шаблона {{sup}}: X{{sup|2+3·4}} → X2+3·4)

Подстрочные индексы вставляются так: X<sub>2+3·4</sub> → X2+3·4 (либо с использованием шаблона {{sub}}: X{{sub|2+3·4}} → X2+3·4)

Можно также использовать специальные надстрочные и подстрочные символы Юникода: X⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾ⁿ X₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎

Об использовании индексов в формулах см. также статью «Википедия:Формулы».

В статье «Кириллица в Юникоде» можно найти символы кириллицы (включая устаревшие и дополнительные) и языка коми.

2.6. Рассмотрим использование специальных символов оболочки

Продолжим рассмотрение правил использования командной строки. Поскольку оболочек много, то, естественно, что какие-то конкретные правила записи команд могут отличаться для разных версий программы. Но многие оболочки интерпретируют специально выделенный набор символов одинаково. За ними закреплены особые функции. Мы уже встретились с тем, как используются «/» и «$». В командной строке могут быть использованы и другие специальные символы. Рассмотрим их назначение, систематизировав такую информацию в одном месте. При этом для некоторых символов подробные примеры использования будут приведены и в других частях пособия. До начала рассмотрения использования некоторых специальных символов отметим, что их очень много. Рассматривать будем только небольшую часть. Описание всех из них содержится в страницах справочного руководства man страницы bash.

Символ \

Сначала изучим, как используется символ «\» – обратный слеш. Он может иметь разное применение. В имени файла он используется, когда за ним располагается пробел « » или другой символ, выполняющий служебную роль, но последнюю надо отменить. Следующая группа команд демонстрирует операции с каталогом, имеющим в имени пробел. В приведенном тексте применен символ (#), используемый в сценариях для записи комментариев.

# переход в домашний каталог пользователя

cd ~

# вывод его адреса

pwd

root

# создание каталога,

# имеющего в имени символ пробел

mkdir 1-th\ directory

# копирование файла в созданный каталог

cp .profile /root/1-th\ directory

# копирование второго файла в созданный каталог

cp .bashrc ./1-th\ directory

# вывод списка файлов текущего каталога

# и всех подчиненных ему

ls –R

.:

1-th directory

./1-th directory

Кавычки

Есть три типа кавычек: двойные ( " ), одиночные ( ’ ) и обратные ( ` ) (в литературе встречаются и другие названия третьих: одиночные апострофы, слабое ударение). Они всегда используются в паре.

Внутри двойных кавычек отменяется действие всех служебных символов кроме трех: $ (доллар), ` (обратные кавычки) и \ (обратный слеш). В некоторых вариантах оболочек пара таких символов отменяется еще и действие специальных символов «!» и «|».

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

Начнем с рассмотрения использования двойных кавычек. Используемая в нескольких следующих примерах команда echo выводят значения двух переменных HOME и BASH. Для двойных кавычек в первом и втором случаях вывод одинаков – двойные кавычки не отменяют действие символа $. Только в третьем случае его действие отменяется символом \, поэтому распечатывается не значение переменной, а набор символов $HOME.

echo “$HOME $BASH”

/root /bin/bash

echo “$HOME $BASH”

/root/bin /bash

echo “\$HOME $BASH”

$HOME /bin/bash

В следующих командах имена переменных заключены в одиночные кавычки. В первом и втором случаях действие символа $ отменяется, а в третьем – отменяется действие и \.

echo’$HOME $BASH’

$HOME $BASH

echo ’$HOME $BASH’

$HOME $BASH

echo ’\$HOME $BASH’

\$HOME $BASH

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

cal 12

то выводится информация о 12-м месяце текущего года.

Декабрь 2009

Пн

Вт

Ср

Чт

Пт

Сб

Вс

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

Команда

date “+%m %y“

даст такой результат

12 09

Такие две команды можно соединить обратными кавычками так

cal `date “+%m %y“`

Это даст результат как у команды cal с параметрами 12 09

Декабрь 2009

Пн

Вт

Ср

Чт

Пт

Сб

Вс

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

Продолжим рассматривать использование других специальных символов оболочек.

Символ &

Этот символ позволяет перевести выполнение команды в фоновый режим. Последний может одновременно реализовывать несколько процессов. В режиме многозадачности они будут попеременно получать системные ресурсы и, прежде всего, процессорное время. Мы подробнее поговорим о фоновых процессах в лабораторной работе 4.

Символ ;

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

cd / ; ls

то будут выполнены две команды. Первая сделает активным корневой каталог файловой системы, а вторая – распечатает на экране его содержимое.

bin dev home lost+found misc net proc sbin srv tmp var boot etc lib media mnt opt root selinux sys usr

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

Символ |

Этот случай использования специального символа оболочки мы уже рассматривали. Его применяют для связывания команд с перенаправлением результатов выполнения одной команды (стандартного вывода) на вход (стандартный ввод) следующей. Утилита ps выводит список активных процессов, а grep ищет и выводит в текстовом файле строки, содержащие фрагменты-образцы. Приведенная комбинация двух команд выводит на экран только те из активных процессов, которые начинаются с символа «[». Команда представляет интерес потому, что процессы ядра заключаются в квадратные скобки.

ps -ef | grep “\[“

Приведем еще примеры использования рассматриваемого специального символа. Команда wc подсчитывает характеристики файлов (количество символов, слов или строк). Такая комбинация команд позволяет подсчитать количество файлов текущего каталога

ls -l | wc -l

Отметим, что параметр -l команды wc выводит количество строк, а одноименный параметр первой команды выводит список файлов текущего каталога по одному в строке.

Если соединить знаком «|» утилиту printenv и команду сортировки содержимого файла sort, то получим список специальных переменных, который упорядочен по их имени

printenv | sort

Сделаем еще одно замечание о связывании команд. Для удобства просмотра на экране текстов большого размера используются команды more и less. Они позволяют выводить в постраничном режиме содержимое текстовых файлов. Связанные с другими командами символом «|», они обеспечивают постраничный вывод информации (при заполнении экрана вывод информации останавливается до нажатия определенной клавиши, например, пробел). Их отличие в том, что вторая (less) обеспечивает возврат к уже просмотренной информации, а первая – нет.

Символы && и ||

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

Если две команды соединены так

КОМАНДА1 && КОМАНДА2

то вторая из них выполняется тогда, когда первая команда завершилась успешно (принято, что код ее выполнения будет равен 0).

Если вторую команду надо выполнить в случае неудачного завершения первой используют символы «||». В таком случае код выполнения первой команды отличен от нуля, Приведем примеры использования этих символа.

date || cal

Выполняется только первая команда date

Вск Апр 9 08:49:17 MSD 2006

date && cal

Выполняются обе команды date и cal

Ноя Суб 4 08:49:17 MSD 2006

Ноябрь 2006

Пн Вт Ср Чт Пт Су Вс

1 2 3 4 5

6 7 8 9 10 11 12

13 14 15 16 17 18 19

20 21 22 23 24 25 26

27 28 29 30

Задание 17.

Опробуйте использование символов && и || на следующих примерах. Команда

mkdir dir1

создает новый каталог. Если она завершается успешно, то код возврата будет 0, в противном случае – 1. Создайте каталог с именем dir1 и в этой же строке выведите сообщение, используя &&

mkdir dir1 && echo “Well”

Теперь соедините команду создания каталога с именами dir2 и вывод сообщения символом ||.

mkdir dir2|| echo “Well”

Теперь замените команду создания каталогов другой

grep root /etc/passwd

Она проверяет, есть ли в файле /etc/passwd (файл паролей) строка root. Задайвайте имя существующих пользователей (asplinux, bin), а затем не существующих (например, noroot, asplonux1). Соедините выполнение такой командой с выводом сообщения сначала символами &&, а затем – ||

Символы > < >>

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

stdin 0

stdout 1

stderr 2

По умолчанию каждая программа получает эти три потока. При этом ввод данных она ожидает с клавиатуры, а выводить информацию, в том числе об ошибках, будет на терминал. Символ > позволяет перенаправить стандартный вывод в файл. К примеру

date > fpr

позволяет перенаправить стандартный вывод команды date в файл fpr. Таким образом, в этом файле фиксируется текущая дата и его содержимое можно использовать в других командах. Использование символа >> позволяет добавить результат в уже созданный файл.

ls >> fpr

Последняя команда добавляет вывод команды ls в уже созданный файл fpr. Теперь в нем будет записана дата, а затем содержимое текущего каталога. Далее fpr можно просмотреть, например, используя cat, перенаправляя его на ввод команды символом <

cat < fpr

Сделаем небольшое отступление, подробнее изучив использование команды cat. Она может выполнять разные операции. Мы уже приводили вариант использования команды, когда создавали текстовые файлы – сценарии.

cat > file

Приведем еще примеры

cat

Таким образом, начинается вывод информации с клавиатуры на экран. Напомним, что комбинация <Ctrl+D> – означает окончание ввода с клавиатуры.

Следующая команда

cat file > file1

выполняет копирование файла file в file1.

Исполнив это

cat >> file1

можно добавить текст, набираемый на клавиатуре в конец файла.

И, наконец, подобным образом

cat file file1 > file2

объединяют в файле file содержимое других файлов (не обязательно других) – file1 и file2 (или file1 и file1, соответственно).

Задание 18.

Сравните содержимое каталогов двух пользователей: asplinux и root. Определите, какой из них содержит больше файлов.

Задание 19.

В файле my запишите результат выполнения команды date.

date “+%m %y” > my

Перенаправьте содержимое файла my команде cal

cal < my

Приведем пример, когда стандартный поток, куда направляются ошибки, перенаправлен в файл. При правильном выполнении команд, это файл пуст. Дадим сначала правильную команду, а затем – неправильную.

ls –R 2>> errlist1

cat errlist1

Теперь у этой же команды уберем пробел, отделяющий имя команды от параметра, и выполним две такие команды

lsR > errlist2

cat errlist2

Результаты последней команды будут такими

-bash: ls-R: команда не найдена

Изучим использование шаблонов в именах файлов.

Символы * ? [ ]_

Они используются для замещения определенного набора символов в именах файлов. При этом фиксируются группы файлов с «похожими» именами. Символ * заменяет любой набор символов. К примеру, а* определяет все файлы, начинающиеся на букву а и имеющие в имени любое количество символов. В противоположность символ ? означает замещение только одного символа. Такой пример использования шаблона а? фиксирует все файлы из двух символов, начинающиеся на символ а. Квадратные скобки позволяют выводить список файлов, в имени которых содержится один из группы символов. Квадратные скобки часто используют с символом * или ?. Если в команде вместо имени указать [abс]??, то предполагается воздействовать на файлы, имеющие в имени три буквы, начинающиеся на а, b или с.

Для подробного рассмотрения использования шаблонов в именах файлов сделаем следующее. Создадим несколько текстовых файлов, используя команды cat и cp, а далее будем выводить на экран часть из них командой ls, используя разные шаблоны для формирования группы из имеющихся файлов. Шаблоны имен файлов являются частью средства UNIX/Linux. Они называются регулярными выражениями и используются со многим командами.

Для начала создадим файл a из другого - /root/.bashrc, выполнив следующие команды

cd ~

cat .bashrc > a

Сделать копию a в файле с именем A можно еще и так

cp a A

Получим файлы со следующими именами: a A1 B Ba b1 ad f fa fab.

Задание 20.

Проверьте результат выполнения следующих команд (параметр -C давайте для экономного вывода):

ls -C [a,B]

ls -C [aB]

ls -C [a-B]

ls -C [B-a]

ls -C *[a,A]

ls -C *[a,B]*

ls -C *a

ls -C *a*

ls -C [a-s]

ls -C [a-b]*

ls -C [a-f]

ls -C ?a

ls -C [a-b]*

ls -C fa

Специальные и служебные символы HTML

Многие символы являются служебными символами HTML и для того чтобы отобразить их на Web – странице нужно прописать специальный код. К тому же некоторые символы используются в самом коде html. Так, например,  между символами < и > мы заключаем сами теги html, а параметры атрибутов указываем в двойных кавычках ("). Другие же символы, такие как неразрывный пробел, вообще нельзя набрать в текстовом редакторе, а на html-странице иногда требуется его использовать, например чтобы сделать отступ между абзацами или написать абзац с "красной строки". Для этих целей и придумали вместо символов писать мнемонический код (именной код), который состоит из знака &(амперсанд), сокращения от английского названия символа и точки с запятой. Так неразрывному пробелу соответствует обозначение &nbsp; (код начинается с & и заканчивается (;), а сокращение nbsp расшифровывается как non-breaking space), двойным кавычкам соответствует код  &quot;, а знакам меньше < и больше > - значения &lt; и &gt; соответственно.

Рассмотрим небольшой пример:


<html>
  <head>
    <title>Урок 3. Специальные символы html</title>
  </head>
  <body>
    <p>Применим некоторые специальные символы на практике:</p>
    <p>&nbsp;</p>
    <p>Чтобы сравнить два числа нужно использовать знаки меньше &lt; и больше &gt;, например:</p>
    <p>5 &gt; 3, а 2 &lt; 4</p>
    <p>&nbsp;</p>
    <p>Все мы знаем, что названия различных учреждений, фирм или организаций берутся в кавычки, например:</p>
    <p>гостиница &quot;Россия&quot;</p>
    <p>издательство &quot;Роспечать&quot;</p>
  </body>
</html> 
              


Сохраним файл под любым именем и откроем его в браузере:

В первую очередь здесь мы использовали неразрывный пробел, чтобы сделать отступы между абзацами, а все мнемонические коды отобразились символами. Помимо мнемонического кода для отображения специальных символов используют ASCII-код (числовой код), перед которым стоят символы &#. К примеру, тем же знакам меньше < и больше > соответствуют следующие числовые-коды: &#60; и &#62;. Рассмотрим пример:


<html>
  <head>
    <title>Мнемонические и ASCII-коды символов</title>
  </head>
  <body>
    <p>&#160;</p>
    <p>10 &gt; 4, а 7 &#62; 5</p>
    <p>3 &lt; 8 и 5 &#60; 8</p>
  </body>
</html> 
              

Здесь мы использовали в первом абзаце неразрывный пробел, чтобы сделать отступ и использовали для этого его числовой-код, который соответствует мнемоническому коду &nbsp;. Так же мы поступили и со знаками меньше и больше во втором и третьем абзаце.

Но пользоваться числовым-кодом для обозначения символов не очень удобно, куда проще запомнить мнемонический код, поэтому чаще пользуются именно им. В этом уроке мы рассмотрели лишь мизерную часть специальных символов html. Полный список вы можете посмотреть в таблице кодов символов. Если вы запутались и у вас остались вопросы, советую посмотреть видео этого урока.

Отправить ответ

avatar
  Подписаться  
Уведомление о