Spec-Zone.ru › Fish 2.3

Справочник команд

fish поставляется с большим количеством встроенных команд, функций shellscript и внешних команд. Все они описаны ниже.

Практически все команды fish реагируют на параметры -h или --help для отображения соответствующей справки, также доступной с помощью команд help и man, например так:

echo -h
echo --help
# Prints help to the terminal window

man echo
# Displays the man page in the system pager
# (normally 'less', 'more' or 'most').

help echo
# Open a web browser to show the relevant documentation

abbr - управление сокращениями fish

Синтаксис

abbr -a word phrase...
abbr -s
abbr -l
abbr -e word

Описание

abbr манипулирует списком сокращений, которые fish будет расширять.

Сокращения — это определенные пользователем последовательности символов или слов, которые заменяются более длинными фразами после их ввода. Например, часто используемая команда, такая как git checkout может быть сокращена до gco. После ввода gco и нажатия Пробел или Ввод, полный текст git checkout появится в командной строке.

Сокращения хранятся с помощью универсальных переменных. Вы можете создавать сокращения непосредственно в командной строке, и они будут автоматически сохранены. Вызов abbr -a в config.fish приведет к несколько худшей производительности при запуске.

Доступны следующие параметры:

  • -a WORD PHRASE или --add WORD PHRASE Добавляет новое сокращение, где СЛОВО будет расширено до ФРАЗА.
  • -s или --show Показывает все сокращенные слова и их расширенные фразы таким образом, чтобы их можно было экспортировать и импортировать.
  • -l или --list Выводит список всех сокращенных слов.
  • -e WORD или --erase WORD Удаляет сокращение СЛОВО.

Примечание: версия fish 2.1 поддерживала -a WORD=PHRASE. Этот синтаксис теперь устарел, но все равно будет преобразован.

Примеры

abbr -a gco git checkout

Добавить новое сокращение, где gco будет заменено на git checkout.

abbr -e gco

Удалить сокращение gco.

ssh another_host abbr -s | source

Импортировать сокращения, определенные на другом_хосте по SSH.

Вернуться к списку команд.

alias - создание функции

Синтаксис

alias NAME DEFINITION
alias NAME=DEFINITION

Описание

alias — это простой оболочный скрипт для встроенной функции function. Он существует для обратной совместимости с оболочками Posix. Для других целей рекомендуется определять функцию.

fish не отслеживает, какие функции были определены с помощью alias. Их необходимо удалить с помощью functions -e.

  • NAME — имя псевдонима
  • DEFINITION — фактическая команда для выполнения. К строке $argv будет добавлено дополнение.

Вы не можете создать псевдоним для функции с тем же именем.

Обратите внимание, что пробелы должны быть экранированы в вызове alias так же, как и в командной строке даже внутри кавычек.

Пример

Следующий код создаст rmi, который выполняет rm с дополнительными аргументами при каждом вызове.

alias rmi "rm -i"

# This is equivalent to entering the following function:

function rmi
    rm -i $argv
end

# This needs to have the spaces escaped or "Chrome.app..." will be seen as an argument to "/Applications/Google":

alias chrome='/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome banana'

Вернуться к списку команд.

and - условное выполнение команды

Синтаксис

COMMAND1; and COMMAND2

Описание

and используется для выполнения команды, если текущий код завершения (установленный предыдущей командой) равен 0.

Инструкции and могут использоваться как часть условия в блоке and или while. См. документацию для if и while для примеров.

and не изменяет текущий код завершения. Код завершения последней завершившейся фоновой команды всегда можно получить, используя переменную $status.

Пример

Следующий код выполняет команду make для сборки программы. Если сборка выполняется успешно, код завершения make равен 0, и программа устанавливается. Если любой из шагов завершается неудачно, код завершения равен 1, и выполняется make clean, который удаляет файлы, созданные процессом сборки.

make; and make install; or make clean

Вернуться к списку команд.

begin - начало нового блока кода

Синтаксис

begin; [COMMANDS...;] end

Описание

begin используется для создания нового блока кода.

Блок выполняется безусловно. begin; ...; end эквивалентно if true; ...; end.

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

begin не изменяет текущий код завершения.

Пример

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

begin
    set -l PIRATE Yarrr
    ...
end

echo $PIRATE
# This will not output anything, since the PIRATE variable
# went out of scope at the end of the block

В следующем коде все выходные данные перенаправляются в файл out.html.

begin
    echo $xml_header
    echo $html_header
    if test -e $file
        ...
    end
    ...
end > out.html

Вернуться к списку команд.

bg - отправка задач на второй план

Синтаксис

bg [PID...]

Описание

bg отправляет задачи на второй план, возобновляя их, если они приостановлены. Задача на заднем плане выполняется одновременно с fish и не имеет доступа к клавиатуре. Если задача не указана, последняя используемая задача помещается на второй план. Если указан PID, задачи с указанными идентификаторами групп процессов помещаются на второй план.

Идентификатор процесса желаемой задачи обычно находится с помощью расширения процесса.

Пример

bg %1 поместит задачу с идентификатором задачи 1 на второй план.

Вернуться к списку команд.

bind - управление привязками клавиш fish

Синтаксис

bind [(-M | --mode) MODE] [(-m | --sets-mode) NEW_MODE]
     [(-k | --key)] SEQUENCE COMMAND [COMMAND...]
bind [(-M | --mode) MODE] [(-k | --key)] SEQUENCE
bind (-K | --key-names) [(-a | --all)]
bind (-f | --function-names)
bind (-e | --erase) [(-M | --mode) MODE]
     (-a | --all | [(-k | --key)] SEQUENCE [SEQUENCE...])

Описание

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

SEQUENCE — это последовательность символов, привязанная к команде. Эти символы должны быть записаны как последовательности экранирования fish. Например, поскольку нажатие клавиши Alt и другой символ отправляют этот символ с префиксом символа escape, привязки клавиш, основанные на Alt, можно записать с использованием escape \e. Например, Alt-w можно записать как \ew. Символ управления можно записать аналогичным образом, используя escape \c, например Control-X (^X) можно записать как \cx. Обратите внимание, что привязки клавиш, основанные на Alt, чувствительны к регистру, а привязки клавиш, основанные на Control, нечувствительны. Это ограничение текстовых терминалов, а не fish.

По умолчанию привязку клавиши можно задать, указав SEQUENCE пустую строку (то есть '' ). Она будет использоваться, когда ни одна другая привязка не соответствует. Для большинства привязок клавиш имеет смысл использовать функцию self-insert (т.е. bind '' self-insert) в качестве привязки по умолчанию. Это вставит любые нажатые клавиши, не связанные конкретно, в редактор. Непечатаемые символы игнорируются редактором, поэтому это не приведет к печати управляющих последовательностей.

Если используется переключатель -k, вместо последовательности используется имя клавиши (например, 'down', 'up' или 'backspace'). Используемые имена совпадают с соответствующими переменными curses, но без префикса 'key_'. (См. terminfo(5) для получения дополнительной информации или используйте bind --key-names для получения списка всех доступных имен клавиш.)

COMMAND может быть любой командой fish, но также может быть одной из набора специальных функций ввода. Они включают функции перемещения курсора, работы с кольцом обмена, выполнения автодополнения и т. д. Используйте bind --function-names для получения полного списка этих функций ввода.

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

Если такой скрипт генерирует вывод, скрипт должен завершаться вызовом commandline -f repaint для того, чтобы сообщить fish, что необходимо перерисовать экран.

Если предоставляется несколько COMMAND, они все выполняются в указанном порядке при нажатии клавиши.

Если SEQUENCE не указано, выводятся все привязки (или только привязки в указанном MODE). Если SEQUENCE указано без COMMAND, выводится только привязка, соответствующая этой последовательности.

Привязки клавиш по умолчанию не сохраняются между сеансами. Отдельные инструкции bind в config.fish не будут иметь никакого эффекта, потому что она выполняется перед настройкой привязок клавиш по умолчанию. Чтобы сохранить пользовательские привязки клавиш, поместите инструкции bind в функцию с именем fish_user_key_bindings, которая будет автозагружаться.

Привязки клавиш могут использовать «режимы», что имитирует поведенческий ввод Vi. Режим по умолчанию — «default», и каждая привязка применяется к одному режиму. Режим можно просмотреть/изменить с помощью переменной $fish_bind_mode.

Доступны следующие параметры:

  • -k или --key Укажите имя ключа, например, 'left' или 'backspace', вместо последовательности символов
  • -K или --key-names Отобразить список доступных имён ключей. Указание -a или --all включает ключи, для которых нет известного сопоставления
  • -f или --function-names Отобразить список доступных функций ввода
  • -M MODE или --mode MODE Укажите режим привязки, в котором используется привязка. По умолчанию "default"
  • -m NEW_MODE или --sets-mode NEW_MODE Изменить текущий режим на NEW_MODE после выполнения этой привязки
  • -e или --erase Удалить привязку с заданной последовательностью и режимом вместо определения новой. Несколько последовательностей могут быть указаны с этим флагом. Указание -a или --all с -M или --mode удаляет все привязки в данном режиме независимо от последовательности. Указание -a или --all без -M или --mode удаляет все привязки во всех режимах независимо от последовательности.
  • -a или --all См. --erase и --key-names

Доступны следующие специальные функции ввода:

  • accept-autosuggestion, принять текущее автопредложение полностью
  • backward-char, переместить курсор на один символ влево
  • backward-bigword, переместить на одно слово влево (разделенное пробелами)
  • backward-delete-char, удалить один символ слева от курсора
  • backward-kill-bigword, переместить слово слева от курсора в буфер обмена
  • backward-kill-line, переместить всё от начала строки до курсора в буфер обмена
  • backward-kill-path-component, переместить компонент пути слева от курсора (всё после последнего "/" или пробела, исключая его) в буфер обмена
  • backward-kill-word, переместить слово слева от курсора в буфер обмена
  • backward-word, переместить на одно слово влево
  • beginning-of-history, переместиться к началу истории
  • beginning-of-line, переместиться к началу строки
  • begin-selection, начать выделение текста
  • capitalize-word, сделать текущее слово заглавным
  • complete, предсказать оставшуюся часть текущего токена
  • complete-and-search, вызвать индексируемый просмотрщик вариантов завершения
  • delete-char, удалить один символ справа от курсора
  • downcase-word, перевести текущее слово в нижний регистр
  • end-of-history, переместиться к концу истории
  • end-of-line, переместиться к концу строки
  • end-selection, завершить выделение текста
  • forward-bigword, переместить на одно слово вправо (разделенное пробелами)
  • forward-char, переместить курсор на один символ вправо
  • forward-word, переместиться на одно слово вправо
  • history-search-backward, поиск в истории по предыдущему совпадению
  • history-search-forward, поиск в истории по следующему совпадению
  • kill-bigword, переместить следующее слово, разделенное пробелом, в буфер обмена
  • kill-line, переместить всё от курсора до конца строки в буфер обмена
  • kill-selection, переместить выделенный текст в буфер обмена
  • kill-whole-line, переместить строку в буфер обмена
  • kill-word, переместить следующее слово в буфер обмена
  • suppress-autosuggestion, удалить текущее автопредложение
  • swap-selection-start-stop, перейти к другому концу выделенного текста без изменения выделения
  • transpose-chars, переставить два символа слева от курсора
  • transpose-words, переставить два слова слева от курсора
  • upcase-word, перевести текущее слово в верхний регистр
  • yank, вставить последнее из буфера обмена в буфер
  • yank-pop, повернуть к предыдущему элементу буфера обмена

Примеры

bind \cd 'exit'

Приводит к завершению fish при нажатии Control-D.

bind -k ppage history-search-backward

Выполняет поиск в истории при нажатии клавиши Page Up.

set -g fish_key_bindings fish_vi_key_bindings
bind -M insert \cc kill-whole-line force-repaint

Включает привязки клавиш Vi и перепривязывает Control-C к очистке строки ввода.

Особо важным случай: символ Escape

Ключ Escape может использоваться самостоятельно, например, для переключения из режима вставки в обычный режим при использовании привязок клавиш Vi. Escape также может использоваться в качестве "мета"-ключа, чтобы указать начало последовательности escape, такой как функции или стрелки. Также могут быть определены пользовательские привязки, начинающиеся с символа Escape.

fish ожидает некоторое время после получения символа Escape, чтобы определить, является ли он самостоятельным или частью последовательности Escape. Во время ожидания дополнительные нажатия клавиш заставляют ключ Escape действовать как мета-ключ. Если другие нажатия клавиш не поступают, он обрабатывается как самостоятельный escape. Время ожидания установлено в 300 миллисекунд (0,3 секунды) в стандартных привязках клавиш и 10 миллисекунд в привязках клавиш vi. Его можно настроить, задав переменную fish_escape_delay_ms со значением от 10 до 5000 мс. Рекомендуется, чтобы это была универсальная переменная, которую вы устанавливаете один раз из интерактивной сессии.

Примечание: fish 2.2.0 и более ранние версии использовали значение по умолчанию 10 миллисекунд и не предоставляли способа его настройки. Это фактически делало невозможным использовать escape в качестве мета-ключа.

Вернуться к индексу.

block - временно заблокировать доставку событий

Краткое описание

block [OPTIONS...]

Описание

block предотвращает доставку и обработку событий, вызванных fish или командой emit, в то время как блокировка активна.

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

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

Блоки событий не следует путать с блоками кода, которые создаются с помощью begin, if, while или for

Доступны следующие параметры:

  • -l или --local Автоматически снять блокировку в конце текущего внутреннего блока кода
  • -g или --global Никогда автоматически не снимать блокировку
  • -e или --erase Снять глобальную блокировку

Пример

# Create a function that listens for events
function --on-event foo foo; echo 'foo fired'; end

# Block the delivery of events
block -g

emit foo
# No output will be produced

block -e
# 'foo fired' will now be printed

Вернуться к индексу.

break - остановить текущий внутренний цикл

Краткое описание

LOOP_CONSTRUCT; [COMMANDS...] break; [COMMANDS...] end

Описание

break останавливает выполняемый цикл, такой как цикл for или цикл while. Обычно добавляется внутри условного блока, например, оператора if или switch.

Для break параметров нет.

Пример

Следующий код ищет все файлы .c с "smurf" и останавливается при первом вхождении.

for i in *.c
    if grep smurf $i
        echo Smurfs are present in $i
        break
    end
end

Вернуться к индексу.

breakpoint - Запустить отладку

Краткое описание

breakpoint

Описание

breakpoint используется для остановки выполняемого скрипта и запуска интерактивного отладочного запроса.

Для получения дополнительной информации см. Отладка скриптов fish в fish руководстве.

Для breakpoint параметров нет.

Вернуться к индексу.

builtin - выполнить встроенную команду

Краткое описание

builtin BUILTINNAME [OPTIONS...]

Описание

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

Доступны следующие параметры:

  • -n или --names Вывести список всех определённых встроенных команд

Пример

builtin jobs
# executes the jobs builtin, even if a function named jobs exists

Вернуться к индексу.

case - условно выполнить блок команд

Краткое описание

switch VALUE; [case [WILDCARD...]; [COMMANDS...]; ...] end

Описание

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

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

Обратите внимание, что fish не выполняет проход по операторам case. Выполняется только первое соответствующее условие.

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

Пример

Если переменная $animal содержит название животного, следующий код попытается его классифицировать:

switch $animal
    case cat
        echo evil
    case wolf dog human moose dolphin whale
        echo mammal
    case duck goose albatross
        echo bird
    case shark trout stingray
        echo fish
    # Note that the next case has a wildcard which is quoted
    case '*'
        echo I have no idea what a $animal is
end

Если вышеуказанный код был запущен с $animal установленным в whale, вывод был бы mammal.

Вернуться к индексу.

cd - изменить директорию

Краткое описание

cd [DIRECTORY]

Описание

cd изменяет текущую рабочую директорию.

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

Если DIRECTORY — относительный путь, пути, найденные в массиве переменной среды CDPATH , будут использоваться в качестве префиксов для указанного пути.

Обратите внимание, что оболочка попытается изменить директорию без необходимости cd , если указано имя директории (начинающееся с ., / или ~, или заканчивающееся /).

Fish также предоставляет функцию-обёртку вокруг встроенной cd, которая понимает cd - как переход в предыдущий каталог. См. также prevd. Эта функция-обёртка сохраняет историю 25 последних посещённых каталогов в глобальных переменных $dirprev и $dirnext.

Примеры

cd
# changes the working directory to your home directory.

cd /usr/src/fish-shell
# changes the working directory to /usr/src/fish-shell

Назад к индексу.

команда - запуск программы

Краткое описание

command [OPTIONS] COMMANDNAME [ARGS...]

Описание

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

Доступны следующие опции:

  • -s или $PATH возвращает имя файла диска, который будет выполнен, или ничего, если файл с указанным именем не найден в каталоге $PATH.

С опцией -s command рассматривает каждый аргумент как отдельную команду для поиска и устанавливает код завершения в 0, если хотя бы одна из указанных команд найдена, или 1, если ни одна из команд не найдена.

Для обеспечения базовой совместимости с POSIX command, флаг -v распознаётся как псевдоним для -s.

Примеры

command ls заставляет fish выполнить программу ls, даже если существует функция ls.

command -s ls возвращает путь к программе ls.

Назад к индексу.

commandline - установка или получение текущего буфера командной строки

Краткое описание

commandline [OPTIONS] [CMD]

Описание

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

Без параметров, commandline возвращает текущее значение командной строки.

С указанным параметром CMD, буфер командной строки очищается и заменяется содержимым CMD.

Доступны следующие опции:

  • -C или --cursor устанавливают или получают текущую позицию курсора, а не содержимое буфера. Если аргумент не указан, выводится текущая позиция курсора, в противном случае аргумент интерпретируется как новая позиция курсора.
  • -f или --function вставляет функции readline в читатель. Эта опция не может быть использована совместно с другими опциями. Она приведет к интерпретации любых дополнительных аргументов как функций readline, которые будут вставлены в читатель, чтобы они возвращались читателю перед чтением любых дополнительных нажатий клавиш.

Следующие опции изменяют способ, которым commandline обновляет буфер командной строки:

  • -a или --append не удаляет текущую командную строку, добавляет указанную строку в конец
  • -i или --insert не удаляет текущую командную строку, вставляет указанную строку в текущую позицию курсора
  • -r или --replace удаляет текущую командную строку и заменяет её указанной строкой (по умолчанию)

Следующие опции изменяют, какая часть командной строки печатается или обновляется:

  • -b или --current-buffer выбирает весь буфер (по умолчанию)
  • -j или --current-job выбирает текущую задачу
  • -p или --current-process выбирает текущий процесс
  • -t или --current-token выбирает текущий токен.

Следующие опции изменяют способ, которым commandline выводит текущий буфер командной строки:

  • -c или --cut-at-cursor выводит только выделение до текущей позиции курсора
  • -o или --tokenize разбиение выделения на токены и вывод одного токена типа строка в строке

Если commandline вызывается во время вызова для завершения заданной строки с помощью complete -C STRING, commandline будет рассматривать указанную строку как текущее содержимое командной строки.

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

  • -L или --line выводит строку, на которой находится курсор, причём самая верхняя строка начинается с 1
  • -S или --search-mode возвращает true, если командная строка выполняет поиск по истории
  • -P или --paging-mode возвращает true, если командная строка отображает содержимое пейджера, такое как дополнения по табуляции

Пример

commandline -j $history[3] заменяет задачу под курсором третьим элементом из истории командной строки.

Если командная строка содержит

> echo $flounder >&2 | less; and echo $catfish

(с курсором на "o" в "flounder")

Тогда следующие вызовы ведут себя так:

> commandline -t
$flounder
> commandline -ct
$fl
> commandline -b ## or just commandline
echo $flounder >&2 | less; and echo $catfish
> commandline -p
echo $flounder >&2
> commandline -j
echo $flounder >&2 | less

Назад к индексу.

complete - редактирование командных дополнений по табуляции

Краткое описание

complete ( -c | --command | -p | --path ) COMMAND
        [( -c | --command | -p | --path ) COMMAND]...
        [( -e | --erase )]
        [( -s | --short-option ) SHORT_OPTION]...
        [( -l | --long-option | -o | --old-option ) LONG_OPTION]...
        [( -a | --arguments ) OPTION_ARGUMENTS]
        [( -f | --no-files )]
        [( -r | --require-parameter )]
        [( -x | --exclusive )]
        [( -w | --wraps ) WRAPPED_COMMAND]...
        [( -n | --condition ) CONDITION]
        [( -d | --description ) DESCRIPTION]
complete ( -C[STRING] | --do-complete[=STRING] )

Описание

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

  • COMMAND — имя команды, для которой нужно добавить дополнение.
  • SHORT_OPTION — односимвольная опция для команды.
  • LONG_OPTION — многосимвольная опция для команды.
  • OPTION_ARGUMENTS — параметр, содержащий список возможных аргументов опции, разделённых пробелами, который может содержать подстановки команд.
  • DESCRIPTION — описание того, что делает опция и/или аргументы опции.
  • -c COMMAND или --command COMMAND указывает, что COMMAND — имя команды.
  • -p COMMAND или --path COMMAND указывает, что COMMAND — абсолютный путь к программе (возможно, содержащий подстановки).
  • -e или --erase удаляет указанное дополнение.
  • -s SHORT_OPTION или --short-option=SHORT_OPTION добавляет короткую опцию в список дополнений.
  • -l LONG_OPTION или --long-option=LONG_OPTION добавляет опцию GNU-стиля в список дополнений.
  • -o LONG_OPTION или --old-option=LONG_OPTION добавляет опцию старого стиля в список дополнений (см. подробности ниже).
  • -a OPTION_ARGUMENTS или --arguments=OPTION_ARGUMENTS добавляет указанные аргументы опции в список дополнений.
  • -f или --no-files указывает, что опции, указанные этим дополнением, не могут следовать за именем файла.
  • -r или --require-parameter указывает, что опции, указанные этим дополнением, всегда должны иметь аргумент опции, т.е. не могут следовать за другой опцией.
  • -x или --exclusive подразумевает как -r, так и -f.
  • -w WRAPPED_COMMAND или --wraps=WRAPPED_COMMAND заставляет указанную команду наследовать дополнения от обернутой команды (см. подробности ниже).
  • -n или --condition указывает командную строку оболочки, которая должна возвращать 0, если дополнение должно использоваться. Это позволяет указывать дополнения, которые должны использоваться только в определённых случаях.
  • -CSTRING или --do-complete=STRING заставляет complete попытаться найти все возможные дополнения для указанной строки.
  • -C или --do-complete без аргумента заставляет complete попытаться найти все возможные дополнения для текущего буфера командной строки. Если оболочка не находится в интерактивном режиме, возвращается ошибка.

Командные специфичные дополнения по табуляции в fish основаны на понятии опций и аргументов. Опция — это параметр, который начинается с дефиса, например, '-h', '-help' или '--help'. Аргументы — это параметры, которые не начинаются с дефиса. Fish распознает три стиля опций, такие же стили, как и в GNU-версии библиотеки getopt. Эти стили:

  • Короткие опции, как '-a'. Короткие опции имеют длину в один символ, предваряются одним дефисом и могут быть объединены (как '-la', что эквивалентно '-l -a'). Аргументы опций могут быть указаны в следующем параметре ('-w 32') или путём добавления значения к опции ('-w32').
  • Опции старого стиля, как '-Wall'. Опции старого стиля могут иметь длину более одного символа, предваряются одним дефисом и не могут быть объединены. Аргументы опций указываются в следующем параметре ('-ao null').
  • Опции GNU-стиля, как '--colors'. Опции GNU-стиля могут иметь длину более одного символа, предваряются двумя дефисами и не могут быть объединены. Аргументы опций могут быть указаны в следующем параметре ('--quoting-style shell') или путём добавления к опции '=' и значения ('--quoting-style=shell'). Опции GNU-стиля могут быть сокращены, до тех пор, пока сокращение уникально ('--h' эквивалентно '--help', если help — единственная опция, начинающаяся с 'h').

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

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

Вызов complete несколько раз для одной и той же команды добавляет новые определения поверх любых существующих дополнений, определённых для этой команды.

Когда -a или --arguments используется совместно с длинными, короткими или опциями старого стиля, указанные аргументы используются только как дополнения при попытке дополнить аргумент любой из указанных опций. Если -a или --arguments указаны без каких-либо длинных, коротких или опций старого стиля, указанные аргументы используются при дополнении любого аргумента команды (кроме дополнения аргумента опции, указанного с -r или --require-parameter).

END_OF_DOCUMENT_MARKER

Подстановки команд, найденные в OPTION_ARGUMENTS, не должны возвращать список аргументов, разделенных пробелами. Вместо этого они должны возвращать список аргументов, разделенных новой строкой, и каждый аргумент может необязательно содержать символ табуляции, за которым следует описание аргумента. Любое описание, заданное таким образом, переопределяет описание, заданное с помощью -d или --description.

Опции -w или --wraps заставляют указанную команду наследовать дополнения от другой команды. Наследующая команда считается «обернутой» унаследованной командой. Оборачивающая команда может иметь свои собственные дополнения в дополнение к унаследованным. Команда может обернуть несколько команд, и обертывание является транзитивным: если A оборачивает B, а B оборачивает C, то A автоматически наследует все дополнения C. Обертывание может быть удалено с помощью опций -e или --erase. Обратите внимание, что обертывание работает только для дополнений, указанных с помощью -c или --command, и игнорируется при указании дополнений с помощью -p или --path.

При удалении дополнений можно либо стереть все дополнения для определенной команды, указав complete -c COMMAND -e, или указав конкретную опцию дополнения для удаления, указав опцию в длинном, коротком или старом формате.

Пример

Короткая опция -o для команды gcc требует, чтобы за ней следовала файловая запись. Это можно сделать, написав:

complete -c gcc -s o -r

Короткая опция -d для команды grep требует использования одной из строк 'read', 'skip' или 'recurse'. Это можно указать, написав:

complete -c grep -s d -x -a "read skip recurse"

Команда su принимает любой имя пользователя в качестве аргумента. Имена пользователей задаются как первое поле, разделенное двоеточием, в файле /etc/passwd. Это можно указать следующим образом:

complete -x -c su -d "Username" -a "(cat /etc/passwd | cut -d : -f 1)"

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

Это можно записать как:

complete -c rpm -n "__fish_contains_opt -s e erase" -d nodeps "Don't check dependencies"

где __fish_contains_opt — функция, которая проверяет буфер командной строки на наличие указанного набора опций.

Для реализации псевдонима используйте опцию -w или --wraps:

complete -c hub -w git

Теперь hub наследует все дополнения из git. Обратите внимание, что это также можно указать в объявлении функции.

Вернуться к индексу.

contains - проверка наличия слова в списке

Синтаксис

contains [OPTIONS] KEY [VALUES...]

Описание

contains проверяет, содержит ли набор VALUES строку KEY. Если да, contains завершается со статусом 0; если нет, то со статусом 1.

Доступны следующие опции:

  • -i или --index вывод индекса слова

Обратите внимание, что, как и утилиты GNU, contains интерпретирует все аргументы, начинающиеся с -, как опции для contains, пока не достигнет аргумента, который является -- (два дефиса). См. примеры ниже.

Пример

for i in ~/bin /usr/local/bin
    if not contains $i $PATH
        set PATH $PATH $i
    end
end

Вышеприведенный код проверяет, присутствуют ли ~/bin и /usr/local/bin в пути, и добавляет их, если нет.

function hasargs
    if contains -- -q $argv
        echo '$argv contains a -q option'
    end
end

Вышеприведенный код проверяет наличие -q в списке аргументов, используя аргумент -- для разграничения опций для contains от ключа для поиска.

Вернуться к индексу.

continue - пропустить остальную часть текущей итерации текущего внутреннего цикла

Синтаксис

LOOP_CONSTRUCT; [COMMANDS...;] continue; [COMMANDS...;] end

Описание

continue пропускает остальную часть текущей итерации текущего внутреннего цикла, такого как цикл for или цикл while. Обычно добавляется внутри блока условного оператора, например, оператора if или switch.

Пример

Следующий код удаляет все временные файлы, которые не содержат слово smurf.

for i in *.tmp
    if grep smurf $i
        continue
    end
    rm $i
end

Вернуться к индексу.

count - подсчет элементов массива

Синтаксис

count $VARIABLE

Описание

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

count не принимает никаких опций, включая -h или --help.

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

Пример

count $PATH
# Returns the number of directories in the users PATH variable.

count *.txt
# Returns the number of files in the current working directory ending with the suffix '.txt'.

Вернуться к индексу.

dirh - вывод истории каталогов

Синтаксис

dirh

Описание

dirh выводит текущую историю каталогов. Текущее положение в истории выделяется цветом, определенным в переменной окружения fish_color_history_current.

dirh не принимает никаких параметров.

Обратите внимание, что команда cd ограничивает историю каталогов 25 наиболее недавно посещенными каталогами. История хранится в переменных $dirprev и $dirnext.

Вернуться к индексу.

dirs - вывод стека каталогов

Синтаксис

dirs
dirs -c

Описание

dirs выводит текущий стек каталогов, созданный командой pushd.

С "-c" он очищает стек каталогов вместо этого.

dirs не принимает никаких параметров.

Вернуться к индексу.

echo - вывод строки текста

Синтаксис

echo [OPTIONS] [STRING]

Описание

echo выводит строку текста.

Доступны следующие опции:

  • -n, Не выводить перенос строки
  • -s, Не разделять аргументы пробелами
  • -E, Отключить интерпретацию обратных слэшей (по умолчанию)
  • -e, Включить интерпретацию обратных слэшей

Последовательности экранирования

Если используется -e, распознаются следующие последовательности:

  • \ обратный слэш
  • \a сигнал (BEL)
  • \b возврат на один символ
  • \c не выводить больше данных
  • \e escape
  • \f перевод страницы
  • \n новая строка
  • \r возврат каретки
  • \t горизонтальная табуляция
  • \v вертикальная табуляция
  • \0NNN байт с восьмеричным значением NNN (1-3 цифры)
  • \xHH байт с шестнадцатеричным значением HH (1-2 цифры)

Пример

echo 'Hello World'

Вывод hello world в стандартный вывод

echo -e 'Top\nBottom'

Вывод Top и Bottom на отдельных строках, используя последовательность экранирования

Вернуться к индексу.

else - выполнение команды, если условие не выполнено

Синтаксис

if CONDITION; COMMANDS_TRUE...; [else; COMMANDS_FALSE...;] end

Описание

if выполнит команду CONDITION. Если код выхода условия равен 0, будут выполнены команды COMMANDS_TRUE. Если он не равен 0 и задан else, будет выполнена COMMANDS_FALSE.

Пример

Следующий код проверяет, является ли файл foo.txt обычным файлом.

if test -f foo.txt
    echo foo.txt exists
else
    echo foo.txt does not exist
end

Вернуться к индексу.

emit - Выпустить общее событие

Синтаксис

emit EVENT_NAME [ARGUMENTS...]

Описание

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

Пример

Следующий код сначала определяет обработчик событий для общего события с именем 'test_event', а затем генерирует событие этого типа.

function event_test --on-event test_event
    echo event test: $argv
end

emit test_event something

Вернуться к индексу.

end - завершение блока команд.

Синтаксис

begin; [COMMANDS...] end
if CONDITION; COMMANDS_TRUE...; [else; COMMANDS_FALSE...;] end
while CONDITION; COMMANDS...; end
for VARNAME in [VALUES...]; COMMANDS...; end
switch VALUE; [case [WILDCARD...]; [COMMANDS...]; ...] end

Описание

end завершает блок команд.

Для получения дополнительной информации обратитесь к документации по блокам конструкций, таким как if, for и while.

Команда end не изменяет текущий код выхода.

Вернуться к индексу.

eval - оценка указанных команд

Синтаксис

eval [COMMANDS...]

Описание

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

Пример

Следующий код вызовет команду ls. Обратите внимание, что fish не поддерживает использование переменных оболочки как прямых команд; eval может использоваться для решения этой проблемы.

set cmd ls
eval $cmd

Вернуться к индексу.

exec - выполнение команды в текущем процессе

Синтаксис

exec COMMAND [OPTIONS...]

Описание

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

Пример

exec emacs запускает текстовый редактор emacs и завершает fish. При завершении emacs сессия завершится.

Вернуться к индексу.

exit - выход из оболочки

Синтаксис

exit [STATUS]

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

Если exit вызывается во время подстановки файла (используя встроенную команду source), остальная часть файла будет пропущена, но сам оболочка не выйдет.

Назад к индексу.

false - вернуть неудачный результат

Синтаксис

false

Описание

false устанавливает код возврата в 1.

Назад к индексу.

fg - перевести задачу в фоновый режим

Синтаксис

fg [PID]

Описание

fg переводит указанную задачу в фоновый режим, возобновляя её, если она приостановлена. Пока фоновая задача выполняется, fish приостановлен. Если задача не указана, последняя используемая задача переводится в фоновый режим. Если указан PID, задача с указанным идентификатором группы переводится в фоновый режим.

PID нужного процесса обычно находится с помощью расширения процесса.

Пример

fg %1 переведёт задачу с идентификатором 1 в фоновый режим.

Назад к индексу.

fish - дружелюбная интерактивная оболочка

Синтаксис

fish [OPTIONS] [-c command] [FILE [ARGUMENTS...]]

Описание

fish это командная оболочка, написанная в основном с учётом интерактивного использования. Полное руководство доступно в HTML, используя команду help внутри fish.

Доступны следующие опции:

  • -c или --command=COMMANDS вычислить указанные команды вместо чтения из командной строки
  • -d или --debug-level=DEBUG_LEVEL указать уровень детализации fish. Более высокое число означает более высокую детализацию. По умолчанию уровень равен 1.
  • -i или --interactive указать, что fish должен работать в интерактивном режиме
  • -l или --login указать, что fish должен работать как оболочка входа
  • -n или --no-execute не выполнять никаких команд, только проверять синтаксис
  • -p или --profile=PROFILE_FILE при выходе fish выводить информацию о времени выполнения всех выполненных команд в указанный файл
  • -v или --version отобразить версию и выйти

Код возврата fish, как правило, равен коду возврата последней команды в фоновом режиме. Если fish завершается из-за синтаксической ошибки, код возврата равен 127.

Назад к индексу.

fish_config - запустить веб-интерфейс конфигурации

Описание

fish_config запускает веб-интерфейс конфигурации.

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

fish_config запускает локальный веб-сервер и открывает окно веб-браузера; после завершения работы закройте окно браузера, а затем нажмите клавишу Enter, чтобы завершить сеанс конфигурации.

fish_config необязательно принимает имя начальной вкладки конфигурации. Например, fish_config history запустит интерфейс конфигурации с вкладкой истории.

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

Пример

fish_config открывает новое окно веб-браузера и позволяет настроить определённые настройки fish.

Назад к индексу.

fish_indent - отступы и форматирование кода

Синтаксис

fish_indent [OPTIONS]

Описание

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

Доступны следующие опции:

  • -d или --dump выводит информацию об обработанных командах fish в стандартный поток ошибок
  • -i или --no-indent не отступать команды; только переформатировать, по одной задаче на строку
  • -v или --version отображает текущую версию fish и затем завершается
  • --ansi форматирует вывод с помощью ANSI escape-последовательностей, подходящих для текущего $TERM, используя цвета, определённые в среде (такие как $fish_color_command).
  • --html выводит HTML, который поддерживает подсветку синтаксиса, если определён соответствующий CSS. Имена классов CSS совпадают с именами переменных, таких как fish_color_command

Назад к индексу.

fish_prompt - определение внешнего вида приглашения командной строки

Синтаксис

function fish_prompt
    ...
end

Описание

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

Код возврата команд внутри fish_prompt не изменяет значение $status за пределами функции fish_prompt.

fish поставляется с несколькими примерами приглашений, которые можно выбрать с помощью команды fish_config.

Пример

Простое приглашение:

function fish_prompt -d "Write out the prompt"
    printf '%s@%s%s%s%s> ' (whoami) (hostname | cut -d . -f 1) \ 
            (set_color $fish_color_cwd) (prompt_pwd) (set_color normal)
end

Назад к индексу.

fish_realpath - Преобразование пути в абсолютный путь без символических ссылок

Синтаксис

fish_realpath path

Описание

Это реализация внешней команды realpath, которая не поддерживает никаких опций. Она предназначена только для использования скриптами, которые должны быть переносимыми. В общем, скрипты не должны вызывать её напрямую. Они должны использовать realpath, которое будет обращаться к этому встроенному элементу, если внешнюю команду не удаётся найти.

Если путь некорректен, переведённый путь не будет записан в стандартный вывод, и будет сообщено об ошибке. Эта реализация ведёт себя как GNU команда, вызванная с --canonicalize-existing.

Назад к индексу.

fish_right_prompt - определение внешнего вида правого приглашения командной строки

Синтаксис

function fish_right_prompt
    ...
end

Описание

fish_right_prompt похож на fish_prompt, за исключением того, что он отображается в правой части окна терминала.

Несколько строк не поддерживаются в fish_right_prompt.

Пример

Простое правое приглашение:

function fish_right_prompt -d "Write out the right prompt"
    date '+%m/%d/%y'
end

Назад к индексу.

fish_update_completions - Обновление автодополнений с помощью руководств

Описание

fish_update_completions анализирует руководства, установленные в системе, и пытается создать файлы автодополнения в каталоге конфигурации fish.

Это не перезаписывает пользовательские автодополнения.

Для fish_update_completions нет параметров.

Назад к индексу.

fish_vi_mode - Включение режима vi

Синтаксис

fish_vi_mode

Описание

fish_vi_mode входит в режим редактирования команд, подобный vi. Чтобы всегда начинать в режиме vi, добавьте fish_vi_mode в ваш файл config.fish.

Назад к индексу.

for - выполнение набора команд несколько раз.

Синтаксис

for VARNAME in [VALUES...]; COMMANDS...; end

Описание

for это конструкция цикла. Она выполнит указанные команды COMMANDS несколько раз. На каждой итерации локальная переменная, указанная в VARNAME присваивает новое значение из VALUES. Если VALUES пуста, COMMANDS не будет выполняться вообще.

Пример

for i in foo bar baz; echo $i; end

# would output:
foo
bar
baz

Назад к индексу.

funced - редактирование функции интерактивно

Синтаксис

funced [OPTIONS] NAME

Описание

funced предоставляет интерфейс для редактирования определения функции NAME.

Если переменная окружения $VISUAL установлена, она будет использоваться в качестве программы для редактирования функции. Если $VISUAL не установлена, но $EDITOR установлена, она будет использоваться. В противном случае будет использоваться встроенный редактор.

Если нет функции с именем NAME будет создана новая функция с указанным именем

  • -e command или --editor command Откройте тело функции внутри текстового редактора, заданного командой (например, "vi"). Команда 'fish' будет использовать встроенный редактор.
  • -i или --interactive Открыть тело функции в встроенном редакторе.

Назад к индексу.

funcsave - сохранение определения функции в каталог загрузки пользователя

Синтаксис

funcsave FUNCTION_NAME

Описание

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

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

Назад к индексу.

function - создание функции

Синтаксис

function NAME [OPTIONS]; BODY; end

Описание

function создаёт новую функцию NAME с телом BODY.

Функция — это список команд, которые будут выполнены, когда имя функции будет задано как команда.

Доступны следующие опции:

  • -a NAMES или --argument-names NAMES присваивает значение последовательных аргументов командной строки именам, указанным в NAMES.
  • -d DESCRIPTION или --description=DESCRIPTION — описание того, что делает функция, подходящее для описания завершения.
  • -w WRAPPED_COMMAND или --wraps=WRAPPED_COMMAND заставляет функцию наследоваться от завершений указанной обернутой команды. См. документацию по complete для получения дополнительной информации.
  • -e или --on-event EVENT_NAME сообщает Fish о запуске этой функции при выводе указанного именованного события. Fish генерирует именованные события, например, при отображении приглашения.
  • -v или --on-variable VARIABLE_NAME сообщает Fish о запуске этой функции при изменении значения переменной VARIABLE_NAME.
  • -j PGID или --on-job-exit PGID сообщает Fish о запуске этой функции при завершении задачи с идентификатором группы PGID. Вместо PGID можно указать строку «caller». Это допустимо только в подстановке команд и приведет к срабатыванию обработчика при завершении задачи, которая создала эту подстановку команд.
  • -p PID или --on-process-exit PID сообщает Fish о запуске этой функции при завершении дочернего процесса Fish с идентификатором процесса PID.
  • -s или --on-signal SIGSPEC сообщает Fish о запуске этой функции при поступлении сигнала SIGSPEC. SIGSPEC может быть номером сигнала или именем сигнала, например, SIGHUP (или просто HUP).
  • -S или --no-scope-shadowing позволяет функции обращаться к переменным вызывающих функций. Обычно любые переменные внутри функции, имеющие то же имя, что и переменные из вызывающей функции, «затеняются», и их содержимое независимо от вызывающей функции.
  • -V или --inherit-variable NAME делает снимок значения переменной NAME и определяет локальную переменную с тем же именем и значением при выполнении функции.

Если пользователь вводит дополнительные аргументы после функции, они вставляются в массив переменных среды массив переменных $argv. Если предоставлен параметр --argument-names, аргументы также присваиваются именам, указанным в этом параметре.

Используя один из переключателей обработчиков событий, функцию можно запустить автоматически в определённые моменты. Пользователь может создавать новые события с помощью встроенной команды emit. Fish генерирует следующие именованные события:

  • fish_prompt, которое выводится всякий раз, когда готово отобразить новое приглашение Fish.
  • fish_command_not_found, которое выводится всякий раз, когда поиск команды завершился неудачей.
  • fish_preexec, которое выводится непосредственно перед выполнением интерактивной команды. Командная строка передаётся в качестве первого параметра.

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

  • fish_postexec, которое выводится сразу после выполнения интерактивной команды. Командная строка передаётся в качестве первого параметра.

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

Пример

function ll
    ls -l $argv
end

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

function mkdir -d "Create a directory and set CWD"
    command mkdir $argv
    if test $status = 0
        switch $argv[(count $argv)]
            case '-*'

            case '*'
                cd $argv[(count $argv)]
                return
        end
    end
end

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

function notify
    set -l job (jobs -l -g)
    or begin; echo "There are no jobs" >&2; return 1; end

    function _notify_job_$job --on-job-exit $job --inherit-variable job
        echo -n \a ## beep
        functions -e _notify_job_$job
    end
end

Это воспроизведёт звуковой сигнал при завершении последней задачи.

Возврат к индексу.

functions - вывод или удаление функций

Краткое описание

functions [ -a | --all ] [ -n | --names ]
functions -c OLDNAME NEWNAME
functions -d DESCRIPTION FUNCTION
functions [ -e | -q ] FUNCTIONS...

Описание

functions выводит или удаляет функции.

Доступны следующие параметры:

  • -a или --all перечисляет все функции, включая те, имена которых начинаются с подчёркивания.
  • -c OLDNAME NEWNAME или --copy OLDNAME NEWNAME создаёт новую функцию с именем NEWNAME, используя определение функции OLDNAME.
  • -d DESCRIPTION или --description=DESCRIPTION изменяет описание этой функции.
  • -e или --erase приводит к удалению указанных функций.
  • -n или --names перечисляет имена всех определённых функций.
  • -q или --query проверяет, существуют ли указанные функции.

По умолчанию functions, если вызвана без аргументов, выводит имена всех определённых функций. Если не указан параметр -a, функции, имена которых начинаются с подчёркивания, не включаются в вывод.

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

Автозагружаемые функции не могут быть удалены с помощью functions -e. Чтобы удалить автозагружаемые функции, необходимо удалить файл определения или изменить переменную $fish_function_path.

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

В одном вызове functions -d можно изменить описание только одной функции.

Код выхода functions — количество указанных в списке аргументов функций, которые не существуют. Это можно использовать совместно с параметром -q.

Примеры

functions -n
# Displays a list of currently-defined functions

functions -c foo bar
# Copies the 'foo' function to a new function called 'bar'

functions -e bar
# Erases the function `bar`

Возврат к индексу.

help - вывод документации Fish

Краткое описание

help [SECTION]

Описание

help выводит документацию Fish.

Если указана команда SECTION, отображается справка по этой команде.

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

Обратите внимание, что большинство встроенных команд отображают справку в терминале при использовании параметра --help.

Пример

help fg отображает документацию для встроенной команды fg.

Возврат к индексу.

history - отображение и управление историей команд

Краткое описание

history ( --merge | --save | --clear )
history ( --search | --delete ) [ --prefix "prefix string" | --contains "search string" ]

Описание

history используется для вывода, поиска и удаления истории использованных команд.

Доступны следующие параметры:

  • --merge немедленно включает изменения истории из других сессий. Обычно fish игнорирует изменения истории из сессий, запущенных после текущей. Эта команда применяет эти изменения немедленно.
  • --save сохраняет все изменения в файле истории. Оболочка автоматически сохраняет файл истории; этот параметр предоставляется для внутреннего использования.
  • --clear очищает файл истории. Перед удалением истории выводится приглашение.
  • --search возвращает элементы истории в соответствии с параметрами --prefix или --contains.
  • --delete удаляет элементы истории.
  • --prefix ищет или удаляет элементы истории, начинающиеся с указанной строки.
  • --contains ищет или удаляет элементы истории, содержащие указанную строку.

Если --search указан без --contains или --prefix, предполагается --contains.

Если --delete указан без --contains или --prefix, будет удалён только элемент истории, который точно соответствует параметру. Приглашение не будет выведено. Если --delete указан с одним из этих параметров, будет отображено интерактивное приглашение перед удалением любых элементов.

Примеры

history --clear
# Deletes all history items

history --search --contains "foo"
# Outputs a list of all previous commands containing the string "foo".

history --delete --prefix "foo"
# Interactively deletes the record of previous commands which start with "foo".

Возврат к индексу.

if - условное выполнение команды

Краткое описание

if CONDITION; COMMANDS_TRUE...;
[else if CONDITION2; COMMANDS_TRUE2...;]
[else; COMMANDS_FALSE...;]
end

Описание

if выполнит команду CONDITION. Если код возврата условия равен 0, будут выполнены команды COMMANDS_TRUE . Если код возврата не равен 0 и задан else, выполнится COMMANDS_FALSE.

В условии можно использовать and или or. См. второй пример ниже.

Код возврата последней завершившейся фоновой команды всегда доступен через переменную $status.

Пример

Следующий код выведет foo.txt exists если файл foo.txt существует и является обычным файлом, иначе выведет bar.txt exists если файл bar.txt существует и является обычным файлом, иначе выведет

if test -f foo.txt
    echo foo.txt exists
else if test -f bar.txt
    echo bar.txt exists
else
    echo foo.txt and bar.txt do not exist
end
.

if test -f foo.txt
   and test -r foo.txt
   echo "foo.txt exists and is readable"
end

Следующий код выведет «foo.txt существует и доступен для чтения» если foo.txt является обычным файлом и доступен для чтения.

if test -f foo.txt
   and test -r foo.txt
   echo "foo.txt exists and is readable"
end

Возврат к индексу.

isatty - проверка, является ли дескриптор файла терминалом.

Краткое описание

isatty [FILE DESCRIPTOR]

Описание

isatty проверяет, является ли дескриптор файла терминалом.

FILE DESCRIPTOR может быть либо номером дескриптора файла, либо одной из строк stdin, stdout, или stderr.

Если указанный дескриптор файла является терминалом, код возврата команды равен нулю. В противном случае код возврата — ненулевое значение. Сообщения не выводятся в стандартную ошибку.

Примеры

В интерактивной оболочке команды ниже возвращают нулевой код выхода:

isatty
isatty stdout
isatty 2
echo | isatty 1

А эти — ненулевой:

echo | isatty
isatty 9
isatty stdout > file
isatty 2 2> file

Возврат к индексу.

jobs - вывод текущих задач

Краткое описание

jobs [OPTIONS] [PID]

Описание

jobs выводит список текущих задач и их статус.

jobs принимает следующие переключатели:

  • -c или --command выводит имя команды для каждого процесса в задачах.
  • -g или --group выводит только идентификатор группы каждой задачи.
  • -l или --last выводит только последнюю начатую задачу.
  • -p или --pid выводит идентификатор процесса для каждого процесса во всех задачах.

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

Пример

jobs выводит сводку текущих задач.

Вернуться к индексу.

math - Выполнение математических вычислений

Синтаксис

math EXPRESSION

Описание

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

Для описания синтаксиса, поддерживаемого math, см. руководство для программы bc. Имейте в виду, что расширение параметров происходит для любых выражений перед их оценкой. Это может быть очень полезно для выполнения вычислений, связанных с переменными оболочки или выводом подстановки команд, но это также означает, что скобки необходимо экранировать.

Примеры

math 1+1 выводит 2.

math $status-128 выводит числовой код возврата последней команды минус 128.

Вернуться к индексу.

nextd - перемещение вперёд по истории каталогов

Синтаксис

nextd [ -l | --list ] [POS]

Описание

nextd перемещает вперёд на POS позиций в истории посещённых каталогов; если достигнут конец истории, выводится сообщение об ошибке.

Если указан флаг -l или --list, отображается текущая история каталогов.

Обратите внимание, что команда cd ограничивает историю каталогов 25 наиболее недавно посещёнными каталогами. История сохраняется в переменных $dirprev и $dirnext, которые эта команда обрабатывает.

Пример

cd /usr/src
# Working directory is now /usr/src

cd /usr/src/fish-shell
# Working directory is now /usr/src/fish-shell

prevd
# Working directory is now /usr/src

nextd
# Working directory is now /usr/src/fish-shell

Вернуться к индексу.

not - инвертирование кода возврата задачи

Синтаксис

not COMMAND [OPTIONS...]

Описание

not инвертирует код возврата другой команды. Если код возврата равен нулю, not возвращает 1. В противном случае, not возвращает 0.

Пример

Следующий код сообщает об ошибке и завершает работу, если не найден файл с именем spoon.

if not test -f spoon
    echo There is no spoon
    exit 1
end

Вернуться к индексу.

open - открыть файл в его стандартном приложении

Синтаксис

open FILES...

Описание

open открывает файл в его стандартном приложении, используя соответствующий инструмент для операционной системы. В GNU/Linux это требует общедоступную, но необязательную, утилиту xdg-open из пакета xdg-utils.

Пример

open *.txt открывает все текстовые файлы в текущем каталоге с помощью стандартного текстового редактора системы.

Вернуться к индексу.

or - условное выполнение команды

Синтаксис

COMMAND1; or COMMAND2

Описание

or используется для выполнения команды, если текущий код возврата (установленный предыдущей командой) не равен 0.

Выражения or могут быть использованы в качестве части условия в блоке and или while. См. документацию для if и while для примеров.

or не изменяет текущий код возврата. Код возврата последней завершившейся фоновой команды всегда доступен через переменную $status.

Пример

Следующий код выполняет команду make для сборки программы. Если сборка прошла успешно, программа устанавливается. Если любой из шагов завершился неудачно, выполняется make clean, который удаляет файлы, созданные процессом сборки.

make; and make install; or make clean

Вернуться к индексу.

popd - перемещение по стеку каталогов

Синтаксис

popd

Описание

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

Пример

pushd /usr/src
# Working directory is now /usr/src
# Directory stack contains /usr/src

pushd /usr/src/fish-shell
# Working directory is now /usr/src/fish-shell
# Directory stack contains /usr/src /usr/src/fish-shell

popd
# Working directory is now /usr/src
# Directory stack contains /usr/src

Вернуться к индексу.

prevd - перемещение назад по истории каталогов

Синтаксис

prevd [ -l | --list ] [POS]

Описание

prevd перемещает назад на POS позиций в истории посещённых каталогов; если достигнут начало истории, выводится предупреждение.

Если указан флаг -l или --list, отображается текущая история.

Обратите внимание, что команда cd ограничивает историю каталогов 25 наиболее недавно посещёнными каталогами. История сохраняется в переменных $dirprev и $dirnext, которые эта команда обрабатывает.

Пример

cd /usr/src
# Working directory is now /usr/src

cd /usr/src/fish-shell
# Working directory is now /usr/src/fish-shell

prevd
# Working directory is now /usr/src

nextd
# Working directory is now /usr/src/fish-shell

Вернуться к индексу.

printf - отображение текста согласно строке формата

Синтаксис

printf format [argument...]

Описание

printf форматирует строку FORMAT с аргументом ARGUMENT и отображает результат.

Строка FORMAT должна содержать спецификаторы формата, каждый из которых заменяется последующим аргументом в соответствии со спецификатором. Спецификаторы подробно описаны ниже и взяты из функции C-библиотеки printf(3).

В отличие от echo, printf не добавляет новую строку, если она не указана в строке.

Допустимые спецификаторы формата:

  • %d: Аргумент будет использован как целое десятичное число (со знаком или без знака)
  • %i: Аргумент будет использован как целое число со знаком
  • %o: Восьмеричное целое число без знака
  • %u: Десятичное целое число без знака
  • %x или %X: Шестнадцатеричное целое число без знака
  • %f, %g или %G: Число с плавающей точкой
  • %e или %E: Число с плавающей точкой в научной (XXXeYY) записи
  • %s: Строка
  • %b: Строка, интерпретирующая обратные слеши, за исключением того, что восьмеричные эскейпы имеют вид \0 или \0ooo.

%% обозначает лителальный "%".

Обратите внимание, что преобразование может завершиться ошибкой, например, "102.234" не будет без потерь преобразован в целое число, что приведет к ошибке printf.

printf также знает ряд обратных слешей:

  • \" двойная кавычка
  • \\ обратный слэш
  • \a сигнал (звонок)
  • \b возврат на одну позицию
  • \c прекратить дальнейший вывод
  • \e escape
  • \f подача страницы
  • \n перевод строки
  • \r возврат каретки
  • \t горизонтальная табуляция
  • \v вертикальная табуляция
  • \ooo восьмеричное число (ooo от 1 до 3 цифр)
  • \xhh шестнадцатеричное число (hhh от 1 до 2 цифр)
  • \uhhhh 16-битное Юникод-символ (hhhh 4 цифры)
  • \Uhhhhhhhh 32-битное Юникод-символ (hhhhhhhh 8 цифр)

Аргумент `format` используется столько раз, сколько нужно для преобразования всех аргументов. Если спецификатор формата не подходит для данного аргумента, выводится сообщение об ошибке. Например, `printf 'd' "102.234"` выводит сообщение об ошибке, так как "102.234" нельзя отформатировать как целое число.

Этот файл импортирован из printf в GNU Coreutils версии 6.9. Если вы хотите использовать более новую версию printf, например, ту, которая поставляется с вашей ОС, попробуйте command printf.

Пример

printf '%s\t%s\n' flounder fish

Выведет "flounder fish" (разделенные символом табуляции), а затем символ перевода строки. Это полезно для написания дополнений, так как fish ожидает, что скрипты дополнения выведут опцию, за которой следует описание, разделённые символом табуляции.

printf '%s:%d' "Number of bananas in my pocket" 42

Выведет "Количество бананов в моём кармане: 42", без перевода строки.

Вернуться к индексу.

prompt_pwd - Вывод pwd, подходящего для подсказки

Синтаксис

prompt_pwd

Описание

prompt_pwd — это функция для вывода текущего рабочего каталога в формате, подходящем для подсказок. Она заменит домашний каталог на "~" и сократит каждый компонент пути, кроме последнего, до значения по умолчанию в один символ.

Чтобы изменить количество символов на каждый компонент пути, установите $fish_prompt_pwd_dir_length в нужное число символов. Установка значения 0 или недопустимого значения отключит сокращение полностью.

Примеры

> cd ~/
> echo $PWD
/home/alfa

> prompt_pwd
~

> cd /tmp/banana/sausage/with/mustard
> prompt_pwd
/t/b/s/w/mustard

> set -g fish_prompt_pwd_dir_length 3
> prompt_pwd
/tmp/ban/sau/wit/mustard

Вернуться к индексу.

psub - выполнение подстановки процессов

Синтаксис

COMMAND1 ( COMMAND2 | psub [-f] [-s SUFFIX])

Описание

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

Если переключатель -f или --file задан для psub, psub будет использовать обычный файл вместо именованной трубы для связи с вызывающим процессом. Это приведет к тому, что psub будет значительно медленнее при больших объёмах данных, но имеет преимущество, что процесс чтения может производить поиск в потоке.

Если задан переключатель -s или ---suffix, psub будет добавлять SUFFIX к имени файла.

Пример

diff (sort a.txt | psub) (sort b.txt | psub)
# shows the difference between the sorted versions of files `a.txt` and `b.txt`.

source-highlight -f esc (cpp main.c | psub -s .c)
# highlights `main.c` after preprocessing as a C source.

Вернуться к индексу.

pushd - добавить директорию в стек

Синопсис

pushd [DIRECTORY]

Описание

Функция pushd добавляет DIRECTORY в верхнюю часть стека директорий и делает её текущей рабочей директорией. popd извлечёт её и вернётся в исходную директорию.

Без аргументов она меняет верхние две директории в стеке.

pushd +NUMBER поворачивает стек против часовой стрелки, т.е. снизу вверх

pushd -NUMBER поворачивает по часовой стрелке, т.е. сверху вниз.

См. также dirs и dirs -c.

Пример

pushd /usr/src
# Working directory is now /usr/src
# Directory stack contains /usr/src

pushd /usr/src/fish-shell
# Working directory is now /usr/src/fish-shell
# Directory stack contains /usr/src /usr/src/fish-shell

pushd /tmp/
# Working directory is now /tmp
# Directory stack contains /tmp /usr/src /usr/src/fish-shell

pushd +1
# Working directory is now /usr/src
# Directory stack contains /usr/src /usr/src/fish-shell /tmp

popd
# Working directory is now /usr/src/fish-shell
# Directory stack contains /usr/src/fish-shell /tmp

Вернуться к индексу.

pwd - вывести текущую рабочую директорию

Синопсис

pwd

Описание

pwd выводит (печатает) текущую рабочую директорию.

Обратите внимание, что fish всегда разрешает символические ссылки в текущем пути директории.

Вернуться к индексу.

random - сгенерировать случайное число

Синопсис

random [SEED]

Описание

random выводит псевдослучайное число от 0 до 32767 включительно. Даже игнорируя очень узкий диапазон значений, не следует полагать, что это генерирует действительно случайные значения в этом диапазоне. Не используйте это значение для криптографических целей и будьте осторожны с обработкой коллизий: одно и то же случайное число может появляться более одного раза в одном экземпляре программы.

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

Пример

Следующий код посчитает от случайного числа до 1:

for i in (seq (random) -1 1)
    echo $i
    sleep
end

Вернуться к индексу.

read - прочитать строку ввода в переменные

Синопсис

read [OPTIONS] [VARIABLES...]

Описание

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

Доступны следующие опции:

  • -c CMD или --command=CMD устанавливает начальную строку в буфере команд в интерактивном режиме на CMD.
  • -g или --global делает переменные глобальными.
  • -l или --local делает переменные локальными.
  • -m NAME или --mode-name=NAME указывает, что имя NAME должно использоваться для сохранения/загрузки файла истории. Если NAME равно fish, доступна обычная история fish.
  • -n NCHARS или --nchars=NCHARS заставляет read возвратиться после считывания NCHARS символов, а не ожидания всей строки ввода.
  • -p PROMPT_CMD или --prompt=PROMPT_CMD использует вывод команды оболочки PROMPT_CMD в качестве приглашения для интерактивного режима. Команда для приглашения по умолчанию — set_color green; echo read; set_color normal; echo "> ".
  • -R RIGHT_PROMPT_CMD или --right-prompt=RIGHT_PROMPT_CMD использует вывод команды оболочки RIGHT_PROMPT_CMD в качестве правого приглашения для интерактивного режима. Команды правого приглашения по умолчанию нет.
  • -s или --shell включает подсветку синтаксиса, автодополнение и завершение команды, подходящие для ввода кода shellscript в интерактивном режиме.
  • -u или --unexport предотвращает экспорт переменных в дочерние процессы (поведение по умолчанию).
  • -U или --universal делает указанную переменную оболочки универсальной.
  • -x или --export экспортирует переменные в дочерние процессы.
  • -a или --array сохраняет результат как массив.
  • -z или --null читает до NUL вместо новой строки. Отключает интерактивный режим.

read считывает одну строку ввода со стандартного ввода, разбивает её на токены, основываясь на переменной оболочки IFS, и затем присваивает один токен каждой переменной, указанной в VARIABLES. Если токенов больше, чем переменных, оставшиеся токены присваиваются последней переменной. В качестве специального случая, если IFS установлена в пустую строку, каждый символ ввода рассматривается как отдельный токен.

Если заданы -a или --array, допускается только одно имя переменной, и токены хранятся как массив в этой переменной.

См. документацию для set для получения более подробной информации о правилах области действия переменных.

Пример

Следующий код сохраняет значение 'hello' в переменной оболочки $foo.

echo hello|read foo

Вернуться к индексу.

return - остановить текущую внутреннюю функцию

Синопсис

function NAME; [COMMANDS...;] return [STATUS]; [COMMANDS...;] end

Описание

return останавливает выполняющуюся функцию. Код выхода устанавливается в STATUS, если он задан.

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

Пример

Следующий код является реализацией команды false как функции fish

function false
    return 1
end

Вернуться к индексу.

set - вывод и изменение переменных оболочки

Синопсис

set [SCOPE_OPTIONS]
set [OPTIONS] VARIABLE_NAME VALUES...
set [OPTIONS] VARIABLE_NAME[INDICES]... VALUES...
set ( -q | --query ) [SCOPE_OPTIONS] VARIABLE_NAMES...
set ( -e | --erase ) [SCOPE_OPTIONS] VARIABLE_NAME
set ( -e | --erase ) [SCOPE_OPTIONS] VARIABLE_NAME[INDICES]...

Описание

set манипулирует переменными оболочки.

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

При предоставлении как имён, так и значений переменных, set присваивает переменной VARIABLE_NAME значения VALUES....

Следующие опции управляют областью действия переменных:

  • -l или --local принудительно задаёт указанной переменной оболочки область действия, локальную для текущего блока, даже если переменная с данным именем существует и является нелокальной
  • -g или --global задаёт указанной переменной оболочки глобальную область действия. Неглобальные переменные исчезают при завершении блока, к которому они относятся
  • -U или --universal задаёт указанной переменной оболочки универсальную область действия. Если эта опция указана, переменная будет общая для всех текущих экземпляров fish у текущих пользователей на компьютере и сохранится при перезапуске оболочки.
  • -x или --export экспортирует указанную переменную оболочки в дочерние процессы (делая её "переменной окружения")
  • -u или --unexport предотвращает экспорт указанной переменной оболочки в дочерние процессы

Доступны следующие опции:

  • -e или --erase удаляет указанную переменную оболочки
  • -q или --query проверяет, определены ли указанные имена переменных. Ничего не выводит, но статус завершения встроенной функции — это количество указанных переменных, которые не были определены.
  • -n или --names Выводит только имена всех определённых переменных, а не их значения
  • -L или --long не сокращает длинные значения при выводе переменных set

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

Если имя переменной содержит один или несколько элементов массива, например PATH[1 3 7], будут изменены только указанные элементы массива. При указании индексов массива в set, можно использовать несколько аргументов для указания дополнительных индексов, например set PATH[1] PATH[4] /bin /sbin. Если вы указываете отрицательный индекс при расширении или присвоении значения переменной массива, индекс будет рассчитан с конца массива. Например, индекс -1 означает последний индекс массива.

Правила области действия при создании или обновлении переменной:

  1. Если переменная явно задана как универсальная, глобальная или локальная, это задание будет выполнено. Если переменная с тем же именем существует в другой области действия, эта переменная не будет изменена.
  2. Если переменная не задана явно как универсальная, глобальная или локальная, но ранее была определена, используется предыдущая область действия переменной.
  3. Если переменная не задана явно как универсальная, глобальная или локальная и никогда раньше не была определена, переменная будет локальной для выполняемой в данный момент функции. Обратите внимание, что это отличается от использования флагов -l или --local. Если один из этих флагов используется, переменная будет локальной для самого внутреннего текущего выполняемого блока, в то время как без этих флагов переменная будет локальной для функции. Если никакая функция не выполняется, переменная будет глобальной.

Правила экспорта при создании или обновлении переменной идентичны правилам области действия переменных:

  1. Если переменная явно задана как экспортируемая или неэкспортируемая, это задание будет выполнено.
  2. Если переменная не задана явно как экспортируемая или неэкспортируемая, но ранее была определена, сохраняется предыдущее правило экспорта переменной.
  3. Если переменная не задана явно как экспортируемая или неэкспортируемая и никогда раньше не была определена, переменная не будет экспортироваться.

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

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

set требует, чтобы все параметры предшествовали любым другим аргументам. Например, set flags -l приведет к установке значения переменной flags в '-l', а не к объявлению переменной локальной.

В режиме присваивания set завершается с ненулевым кодом возврата, если присваивание переменных не удалось выполнить успешно. Если присваивание переменных выполнено, код возврата не изменяется. Это позволяет одновременно получать вывод и код возврата подкоманды, например, if set output (command). В режиме запроса код возврата — это количество переменных, которые не были найдены. В режиме удаления set завершается с нулевым кодом возврата в случае успеха, с ненулевым кодом возврата, если команда была некорректной, если переменная защищена от записи или если переменная не существует.

Пример

set -xg
# Prints all global, exported variables.

set foo hi
# Sets the value of the variable $foo to be 'hi'.

set -e smurf
# Removes the variable $smurf

set PATH[4] ~/bin
# Changes the fourth element of the $PATH array to ~/bin

if set python_path (which python)
    echo "Python is at $python_path"
end
# Outputs the path to Python if `which` returns true.

Вернуться к списку команд.

set_color - установка цвета терминала

Краткое описание

set_color [OPTIONS] [COLOR]

Описание

set_color изменяет цвет переднего и/или заднего фона терминала. COLOR может быть одним из black, red, green, brown, yellow, blue, magenta, purple, cyan, brred, brgreen, brbrown, bryellow, brblue, brmagenta, brpurple, brcyan, white. Форматы br, bright, наиболее полезны в качестве цветов заднего фона. Специальный цвет normal сбрасывает цвет заднего и переднего фона до значений, установленных по умолчанию для вашего терминала.

Вы также можете указать значение RGB с тремя или шестью шестнадцатеричными цифрами, например, A0FF33 или f2f. fish выберет ближайший поддерживаемый цвет. Трехзначное значение эквивалентно указанию каждой цифры дважды; например, #2BC эквивалентно #22BBCC. Шестнадцатеричные значения RGB могут быть в нижнем или верхнем регистре, необязательно с префиксом символа решетки. В зависимости от возможностей вашего терминала фактический цвет может быть аппроксимирован ближайшим известным соответствующим цветом в цветовой палитре ANSI X3.64.

Доступны следующие параметры:

  • -b, --background COLOR устанавливает цвет заднего фона.
  • -c, --print-colors выводит список всех допустимых названий цветов.
  • -o, --bold устанавливает режим выделения жирным шрифтом или увеличения яркости.
  • -u, --underline устанавливает режим подчеркивания.

Вызов set_color normal установит цвета фона и переднего плана терминала на значения по умолчанию для терминала.

Некоторые терминалы используют последовательность escape --bold для переключения на набор более ярких цветов вместо выделения символов жирным шрифтом. Это относится только к цвету переднего плана. Для обоих цветов переднего и заднего фона «bright» следует использовать варианты имен цветов br выше, а не этот параметр. Единственное применение этого параметра — в черно-белых терминалах (например, DEC VT220) для выбора черного текста переднего плана, который более выделен, чем обычный текст.

Не все эмуляторы терминалов поддерживают все эти функции.

Примечание 1: Установка любого цвета в «normal» сбросит оба цвета фона и переднего плана до значений по умолчанию для терминала.

Примечание 2: Установка цвета заднего фона влияет только на символы, напечатанные после этого. Fish не предоставляет способ установить цвет заднего фона для всего окна терминала. Настройка цвета фона окна (и других атрибутов, таких как его непрозрачность) должна выполняться с помощью механизмов, предоставляемых терминалом.

Примеры

set_color red; echo "Roses are red"
set_color blue; echo "Violets are blue"
set_color 62A; echo "Eggplants are dark purple"
set_color normal; echo "Normal is nice" ## This will reset background, too

Обнаружение возможностей терминала

Fish использует эвристику для определения поддержки 256-цветной палитры вашим терминалом (в отличие от более ограниченной 16-цветной палитры старых терминалов). Если вы сделали то, что эквивалентно set fish_term256 1, это будет истинно. Если значение $TERM содержит «256color» (например, «xterm-256color»), это будет истинно. Если ваше значение $TERM — «xterm», а $TERM_PROGRAM не задано, это будет истинно. Если ваш терминал поддерживает полную 256-цветную палитру (практически все эмуляторы цветных терминалов, написанные в последние десять лет), вы должны убедиться, что выполняется одно из перечисленных выше условий.

Многие терминалы поддерживают 24-битные (т. е. истинно-цветные) последовательности escape-команд для цвета. Это относится к современным xterms, Gnome Terminal, KDE Konsole и iTerm2. Fish в настоящее время предпринимает некоторые ограниченные попытки обнаружить, поддерживает ли данный $TERM 24-битные цвета. Вы можете явно включить эту поддержку с помощью set fish_term24bit 1. В этом случае fish не будет отображать значения вашего цвета RGB ближайшим известным соответствующим цветом в цветовой палитре ANSI X3.64.

Команда set_color использует базу данных terminfo для поиска способа изменения цветов терминала для используемого терминала. Некоторые системы имеют старые и неполные базы данных terminfo и могут не содержать информации о цвете для терминалов, которые его поддерживают. Fish будет использовать последовательности escape ANSI X3.64, если в определении terminfo указано, что поддерживается меньше 256 цветов; в противном случае он будет использовать определение terminfo.

Вернуться к списку команд.

source - оценка содержимого файла.

Краткое описание

source FILENAME [ARGUMENTS...]

Описание

source оценивает команды из указанного файла в текущей оболочке. Это отличается от запуска нового процесса для выполнения команд (т. е. fish < FILENAME) поскольку команды будут выполняться текущей оболочкой, что означает, что изменения переменных оболочки повлияют на текущую оболочку. Если после имени файла указаны дополнительные аргументы, они будут вставлены в переменную $argv. Переменная $argv не будет содержать имя исходного файла.

Если файл не указан или если используется имя файла '-', будет читаться стандартный ввод.

Код возврата source — это код возврата последней выполненной задачи. Если при открытии или чтении файла возникнет ошибка, source завершится с ненулевым кодом возврата.

. (одинарная точка) — псевдоним для команды source. Использование . устарело и рекомендуется использовать source, а . будет удалено в будущих версиях fish.

Пример

source ~/.config/fish/config.fish
# Causes fish to re-read its initialization file.

Ограничения

В версиях fish до 2.3.0 переменная $argv содержала бы один элемент (имя исходного файла), если аргументов нет. В противном случае она содержала бы аргументы без имени исходного файла. Это поведение было очень запутанным и отличалось от других оболочек, таких как bash и zsh.

Вернуться к списку команд.

status - запрос информации о рабочем процессе fish

Краткое описание

status [OPTION]

Описание

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

Доступны следующие параметры:

  • -c или --is-command-substitution возвращает 0, если fish в настоящее время выполняет подстановку команды.
  • -b или --is-block возвращает 0, если fish в настоящее время выполняет блок кода.
  • -i или --is-interactive возвращает 0, если fish интерактивен — то есть подключен к клавиатуре.
  • -l или --is-login возвращает 0, если fish — это оболочка входа — то есть если fish должен выполнять задачи входа, такие как настройка PATH.
  • --is-full-job-control возвращает 0, если полное управление задачами включено.
  • --is-interactive-job-control возвращает 0, если интерактивное управление задачами включено.
  • --is-no-job-control возвращает 0, если управление задачами отключено.
  • -f или --current-filename выводит имя файла выполняемого скрипта.
  • -n или --current-line-number выводит номер строки выполняемого скрипта.
  • -j CONTROLTYPE или --job-control=CONTROLTYPE устанавливает тип управления задачами, который может быть none, full, или interactive.
  • -t или --print-stack-trace выводит трассировку стека всех вызовов функций в стеке вызовов.

Вернуться к списку команд.

string - работа со строками

Краткое описание

string length [(-q | --quiet)] [STRING...]
string sub [(-s | --start) START] [(-l | --length) LENGTH] [(-q | --quiet)]
           [STRING...]
string split [(-m | --max) MAX] [(-r | --right)] [(-q | --quiet)] SEP
             [STRING...]
string join [(-q | --quiet)] SEP [STRING...]
string trim [(-l | --left)] [(-r | --right)] [(-c | --chars CHARS)]
            [(-q | --quiet)] [STRING...]
string escape [(-n | --no-quoted)] [STRING...]
string match [(-a | --all)] [(-i | --ignore-case)] [(-r | --regex)]
             [(-n | --index)] [(-q | --quiet)] [(-v | --invert)] PATTERN [STRING...]
string replace [(-a | --all)] [(-i | --ignore-case)] [(-r | --regex)]
               [(-q | --quiet)] PATTERN REPLACEMENT [STRING...]

Описание

string выполняет операции со строками.

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

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

Большинство подкоманд принимают переключатель -q или --quiet, который подавляет обычный вывод, но завершается с указанным кодом возврата.

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

Доступны следующие подкоманды:

  • length сообщает длину каждого строкового аргумента в символах. Код выхода: 0, если хотя бы одна непустая строка была передана, иначе 1.
  • sub выводит подстроку каждого строкового аргумента. Начало подстроки можно указать с помощью -s или --start , за которыми следует значение индекса, начиная с 1. Положительные значения индекса относятся к началу строки, а отрицательные — к концу строки. Значение по умолчанию для начала — 1. Длина подстроки может быть указана с помощью -l или --length. Если длина не указана, подстрока продолжается до конца каждой строки. Код выхода: 0, если выполнена хотя бы одна операция с подстрокой, иначе 1.
  • split разбивает каждую строку по разделителю SEP, который может быть пустой строкой. Если -m или --max заданы, выполняется не более MAX разделений для каждой строки. Если -r или --right заданы, разделение выполняется справа налево. Это полезно в сочетании с -m или --max. Код выхода: 0, если выполнено хотя бы одно разделение, иначе 1.
  • join соединяет свои строковые аргументы в одну строку, разделенную SEP, который может быть пустой строкой. Код выхода: 0, если выполнено хотя бы одно соединение, иначе 1.
  • trim удаляет начальные и конечные пробелы из каждой строки. Если -l или --left заданы, удаляются только начальные пробелы. Если -r или --right заданы, удаляются только конечные пробелы. Переключатель -c или --chars заставляет удалять символы из CHARS вместо пробелов. Код выхода: 0, если удален хотя бы один символ, иначе 1.
  • escape экранирует каждую строку таким образом, чтобы её можно было передать обратно eval, чтобы получить исходный аргумент. По умолчанию все специальные символы экранируются, а кавычки используются для упрощения вывода, когда это возможно. Если -n или --no-quote заданы, упрощенное форматирование с кавычками не используется. Код выхода: 0, если хотя бы одна строка была экранирована, иначе 1.
  • match проверяет каждую строку на соответствие шаблону PATTERN и выводит соответствующие подстроки. Только первое совпадение для каждой строки сообщается, если не заданы -a или --all, в этом случае сообщаются все совпадения. Соответствие может быть сделано без учета регистра с помощью -i или --ignore-case. Если -n или --index заданы, каждое совпадение сообщается как позиция начала (относительно 1) и длина. По умолчанию PATTERN интерпретируется как шаблон glob, сопоставляемый с каждым полным строковым аргументом. Если -r или --regex заданы, PATTERN интерпретируется как совместимый с Perl регулярное выражение. Для регулярного выражения, содержащего группы захвата, для каждого совпадения будет сообщено несколько элементов: один для всего совпадения и один для каждой группы захвата. Если используется –invert или -v, выбранные строки будут только теми, которые не соответствуют заданному шаблону glob или регулярному выражению. Код выхода: 0, если найдено хотя бы одно совпадение, иначе 1.
  • replace подобен match, но заменяет неперекрывающиеся совпадающие подстроки строкой замены и выводит результат. По умолчанию PATTERN рассматривается как подстрока для сопоставления. Если -r или --regex заданы, PATTERN интерпретируется как совместимое с Perl регулярное выражение, а REPLACEMENT может содержать последовательности C-стиля, такие как \t, а также ссылки на группы захвата по номеру или имени, такие как $n или ${n}. Код выхода: 0, если выполнена хотя бы одна замена, иначе 1.

Примеры

> string length 'hello, world'
12

> set str foo
> string length -q $str; echo $status
0
# Equivalent to test -n $str
> string sub --length 2 abcde
ab

> string sub -s 2 -l 2 abcde
bc

> string sub --start=-2 abcde
de
> string split . example.com
example
com

> string split -r -m1 / /usr/local/bin/fish
/usr/local/bin
fish

> string split '' abc
a
b
c
> seq 3 | string join ...
1...2...3
> string trim ' abc  '
abc

> string trim --right --chars=yz xyzzy zany
x
zan
> echo \x07 | string escape
\cg

Примеры сопоставления шаблонов Glob

> string match '?' a
a

> string match 'a*b' axxb
axxb

> string match -i 'a??B' Axxb
Axxb

> echo 'ok?' | string match '*\?'
>_ ok?

> string match -r -v "c.*[12]" {cat,dog}(seq 1 4)
dog1
dog2
cat3
dog3
cat4
dog4

Примеры сопоставления регулярных выражений

> string match -r 'cat|dog|fish' 'nice dog'
dog

> string match -r '(\d\d?):(\d\d):(\d\d)' 2:34:56
2:34:56
2
34
56

> string match -r '^(\w{2,4})\g1$' papa mud murmur
papa
pa
murmur
mur

> string match -r -a -n at ratatat
2 2
4 2
6 2

> string match -r -i '0x[0-9a-f]{1,8}' 'int magic = 0xBadC0de;'
0xBadC0de

Примеры замены (литеральный текст)

> string replace is was 'blue is my favorite'
blue was my favorite

> string replace 3rd last 1st 2nd 3rd
1st
2nd
last

> string replace -a ' ' _ 'spaces to underscores'
spaces_to_underscores

Примеры замены (регулярные выражения)

> string replace -r -a '[^\d.]+' ' ' '0 one two 3.14 four 5x'
0 3.14 5

> string replace -r '(\w+)\s+(\w+)' '$2 $1 $$' 'left right'
right left $

> string replace -r '\s*newline\s*' '\n' 'put a newline here'
put a
here

Вернуться к индексу.

suspend - приостановить текущую оболочку

Краткое описание

suspend [--force]

Описание

suspend приостанавливает выполнение текущей оболочки, отправляя ей сигнал SIGTSTP, возвращая управление обратно к контролирующему процессу. Можно возобновить выполнение позже, отправив сигнал SIGCONT. Чтобы предотвратить приостановку оболочки, у которой нет контролирующего процесса, она не будет приостановлена, если это логическая оболочка, или если $SHLVL меньше $suspend_minimum_SHLVL, что по умолчанию равно трём. Эта проверка пропускается, если указан параметр --force или оболочка не интерактивная.

Вернуться к индексу.

switch - условное выполнение блока команд

Краткое описание

switch VALUE; [case [WILDCARD...]; [COMMANDS...]; ...] end

Описание

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

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

Обратите внимание, что fish не выполняет переход по операторам case. Выполняется только первое соответствующее case.

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

Пример

Если переменная $animal содержит имя животного, следующий код попытается классифицировать его:

switch $animal
    case cat
        echo evil
    case wolf dog human moose dolphin whale
        echo mammal
    case duck goose albatross
        echo bird
    case shark trout stingray
        echo fish
    case '*'
        echo I have no idea what a $animal is
end

Если вышеприведенный код был запущен со значением $animal равным whale, выходным значением будет mammal.

Вернуться к индексу.

test - выполнение проверок файлов и текста

Краткое описание

test [EXPRESSION]
[ [EXPRESSION] ]

Описание

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

Первый формат (test) предпочтительнее. Для совместимости с другими оболочками доступен второй формат: соответствующая пара квадратных скобок ([ [EXPRESSION ] ]).

Эта проверка в основном совместима с POSIX.

Операторы для файлов и каталогов

  • -b FILE возвращает true, если FILE является блочным устройством.
  • -c FILE возвращает true, если FILE является символьным устройством.
  • -d FILE возвращает true, если FILE является каталогом.
  • -e FILE возвращает true, если FILE существует.
  • -f FILE возвращает true, если FILE является обычным файлом.
  • -g FILE возвращает true, если у FILE установлен бит set-group-ID.
  • -G FILE возвращает true, если FILE существует и имеет тот же идентификатор группы, что и текущий пользователь.
  • -L FILE возвращает true, если FILE является символической ссылкой.
  • -O FILE возвращает true, если FILE существует и принадлежит текущему пользователю.
  • -p FILE возвращает true, если FILE является именованной очередью.
  • -r FILE возвращает true, если FILE помечен как читаемый.
  • -s FILE возвращает true, если размер FILE больше нуля.
  • -S FILE возвращает true, если FILE является сокетом.
  • -t FD возвращает true, если дескриптор файла FD является терминалом (TTY).
  • -u FILE возвращает true, если у FILE установлен бит set-user-ID.
  • -w FILE возвращает true, если FILE помечен как записываемый; обратите внимание, что это не проверяет, является ли файловая система только для чтения.
  • -x FILE возвращает true, если FILE помечен как исполняемый.

Операторы для текстовых строк

  • STRING1 = STRING2 возвращает true, если строки STRING1 и STRING2 идентичны.
  • STRING1 != STRING2 возвращает true, если строки STRING1 и STRING2 не идентичны.
  • -n STRING возвращает true, если длина STRING не равна нулю.
  • -z STRING возвращает true, если длина STRING равна нулю.

Операторы для сравнения и проверки чисел

  • NUM1 -eq NUM2 возвращает true, если NUM1 и NUM2 численно равны.
  • NUM1 -ne NUM2 возвращает true, если NUM1 и NUM2 численно не равны.
  • NUM1 -gt NUM2 возвращает true, если NUM1 больше NUM2.
  • NUM1 -ge NUM2 возвращает true, если NUM1 больше или равно NUM2.
  • NUM1 -lt NUM2 возвращает true, если NUM1 меньше NUM2.
  • NUM1 -le NUM2 возвращает true, если NUM1 меньше или равно NUM2.

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

Операторы для объединения выражений

  • COND1 -a COND2 возвращает true, если оба COND1 и COND2 истинны.
  • COND1 -o COND2 возвращает true, если хотя бы COND1 или COND2 истинно.

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

  • ! EXPRESSION возвращает true, если EXPRESSION ложно, и false, если EXPRESSION истинно.

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

  • ( EXPRESSION ) возвращает значение EXPRESSION.

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

Примеры

Если директория /tmp существует, скопируйте файл /etc/motd в неё:

if test -d /tmp
    cp /etc/motd /tmp/motd
end

Если переменная MANPATH определена и не пуста, выведите её содержимое. (Если MANPATH не определена, она будет расширена до нуля аргументов, если не заключена в кавычки.)

if test -n "$MANPATH"
    echo $MANPATH
end

Круглые скобки и операторы -o и -a могут быть объединены для создания более сложных выражений. В этом примере выводится успех, если существует файл /foo или /bar, а также файл /baz или /bat.

if test \( -f /foo -o -f /bar \) -a \( -f /baz -o -f /bat \)
    echo Success.
end.

Числовые сравнения просто завершатся неудачно, если один из операндов не является числом:

if test 42 -eq "The answer to life, the universe and everything"
    echo So long and thanks for all the fish ## will not be executed
end

Распространённое сравнение выполняется со $status:

if test $status -eq 0
    echo "Previous command succeeded"
end

Стандарты

test реализует подмножество стандарта IEEE Std 1003.1-2008 (POSIX.1). Применяются следующие исключения:

  • Операторы < и > для сравнения строк не реализованы.
  • Поскольку данная проверка является встроенной командой оболочки, а не автономной утилитой, использование флага -c со специальными дескрипторами файлов, такими как стандартный ввод и вывод, может не возвращать тот же результат при вызове изнутри канала, что и ожидалось при вызове утилиты test в другой оболочке.

    В таких случаях можно использовать command test для явного использования автономной утилиты системы test вместо этой встроенной команды builtin test.

Вернуться к списку команд.

trap - выполнение действия при получении оболочкой сигнала

Краткое описание

trap [OPTIONS] [[ARG] SIGSPEC ... ]

Описание

trap является обёрткой вокруг системы доставки событий Fish. Она существует для обратной совместимости с оболочками POSIX. Для других целей рекомендуется определить обработчик событий.

Доступны следующие параметры:

  • ARG - команда, которая будет выполнена при поступлении сигнала.
  • SIGSPEC - имя сигнала для отлавливания.
  • -l или --list-signals выводят список имён сигналов.
  • -p или --print выводят все определённые обработчики сигналов.

Если ARG и SIGSPEC указаны оба, ARG - команда, которая будет выполнена при получении сигнала, указанного SIGSPEC.

Если ARG отсутствует (и есть единственный SIGSPEC) или равно -, каждый указанный сигнал сбрасывается до исходного состояния (значение, которое он имел при входе в оболочку). Если ARG пустая строка, то оболочка игнорирует сигнал, указанный в каждом SIGSPEC и игнорирует его для команд, которые она вызывает.

Если ARG отсутствует, а -p указана, то команды trap, связанные с каждым SIGSPEC выводятся. Если аргументы не указаны или указан только -p, то trap выводит список команд, связанных с каждым сигналом.

Имена сигналов нечувствительны к регистру, и префикс SIG является необязательным.

Код возврата равен 1, если какой-либо SIGSPEC неверный; в противном случае trap возвращает 0.

Пример

trap "status --print-stack-trace" SIGUSR1
# Prints a stack trace each time the SIGUSR1 signal is sent to the shell.

Вернуться к списку команд.

true - возврат успешного результата

Краткое описание

true

Описание

true устанавливает код выхода в 0.

Вернуться к списку команд.

type - указание способа интерпретации команды

Краткое описание

type [OPTIONS] NAME [NAME ...]

Описание

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

Доступны следующие опции:

  • -a или --all выводят все возможные определения указанных имён.
  • -f или --no-functions подавляют поиск функций и встроенных команд.
  • -t или --type выводят function, builtin, или file если NAME является функцией оболочки, встроенной командой или файлом на диске соответственно.
  • -p или --path возвращают имя файла на диске, который будет выполнен, или ничего, если type -t name не вернёт file.
  • -P или --force-path возвращают имя файла на диске, который будет выполнен, или ничего, если файл с указанным именем не найден в $PATH.
  • -q или --quiet подавляют весь вывод; это полезно при тестировании кода возврата.

Пример

> type fg
fg is a builtin

Вернуться к списку команд.

ulimit - установка или получение ограничений на использование ресурсов

Краткое описание

ulimit [OPTIONS] [LIMIT]

Описание

Встроенная команда ulimit устанавливает или выводит ограничения на использование ресурсов оболочкой и любыми процессами, запущенными ею. Если новое значение ограничения опущено, выводится текущее значение ограничения ресурса; в противном случае указанное ограничение устанавливается в новое значение.

Используйте один из следующих переключателей для указания, какое ограничение ресурса установить или отобразить:

  • -c или --core-size: максимальный размер файлов core, созданных в результате аварийного завершения программы. Установкой этого ограничения в ноль можно отключить создание файлов core.
  • -d или --data-size: максимальный размер сегмента данных процесса.
  • -f или --file-size: максимальный размер файлов, созданных оболочкой.
  • -l или --lock-size: максимальный размер, который может быть заблокирован в памяти.
  • -m или --resident-set-size: максимальный размер резидентного набора.
  • -n или --file-descriptor-count: максимальное количество открытых дескрипторов файлов (в большинстве систем нельзя установить это значение).
  • -s или --stack-size: максимальный размер стека.
  • -t или --cpu-time: максимальное время работы процессора в секундах.
  • -u или --process-count: максимальное количество процессов, доступных одному пользователю.
  • -v или --virtual-memory-size Максимальный объём виртуальной памяти, доступной оболочке.

Обратите внимание, что не все эти ограничения доступны во всех операционных системах.

Значение ограничения может быть числом в единицах, указанных для ресурса, или одним из специальных значений hard, soft, или unlimited, которые обозначают текущее жёсткое ограничение, текущее гибкое ограничение и отсутствие ограничения соответственно.

Если ограничение указано, это новое значение указанного ресурса. Если ни одна опция не задана, то предполагается -f . Значения указаны в килобайтах, за исключением -t, которое задано в секундах, и -n и -u, которые являются не масштабируемыми значениями. Код возврата равен 0, за исключением случаев ввода неверной опции или аргумента, или возникновения ошибки при установке нового ограничения.

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

  • -H или --hard устанавливает жёсткое ограничение ресурса
  • -S или --soft устанавливает гибкое ограничение ресурса

Жёсткое ограничение может быть только уменьшено. После его установки оно не может быть увеличено; гибкое ограничение может быть увеличено до значения жёсткого ограничения. Если ни -H ни -S не указаны, то и мягкое, и жёсткое ограничения обновляются при присваивании нового значения ограничения, и при выводе текущего значения используется мягкое ограничение.

Следующие дополнительные опции также поддерживаются ulimit:

  • -a или --all выводит все текущие ограничения

Реализация fish команды ulimit должна вести себя идентично реализации в bash, за исключением следующих различий:

  • Fish ulimit поддерживает опции GNU-стиля для всех переключателей
  • Fish ulimit не поддерживает опцию -p для получения размера канала. Реализация в bash включает проверку на этапе компиляции, которая эмпирически вычисляет это число, записывая в канал и ожидая SIGPIPE. Fish этого не делает, потому что этот метод определения размера канала ненадежный. В зависимости от версии bash могут существовать и другие дополнительные ограничения, которые отсутствуют в fish.
  • Fish ulimit не поддерживает получение или установку нескольких ограничений в одной команде, за исключением вывода всех значений с помощью переключателя -a

Пример

ulimit -Hs 64 устанавливает жёсткое ограничение размера стека на 64 КБ.

Вернуться к списку команд.

umask - установка или получение маски режима создания файлов

Краткое описание

umask [OPTIONS] [MASK]

Описание

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

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

Права доступа объяснены в справочной странице программы chmod(1).

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

  • -h или --help выводит это сообщение.
  • -S или --symbolic выводит маску umask в символическом формате вместо восьмеричного.
  • -p или --as-command выводит маску umask в форме, которая может быть повторно использована в качестве входных данных

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

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

  • Первая часть указывает, к кому относится этот набор прав, и может быть одной из u, g, o или a, где u указывает пользователя, являющегося владельцем файла, g указывает владельца группы файла, o указывает права других пользователей, а a указывает, что должны быть изменены все три.
  • Вторая часть права указывает режим и может быть одной из =, + или -, где = указывает, что права должны быть установлены в новое значение, + указывает, что указанное право должно быть добавлено к ранее указанным, а - указывает, что указанные права должны быть удалены из ранее указанных.
  • Третья часть права указывает, какие права должны быть изменены, и может быть любой комбинацией r, w и x, представляющих права чтения, записи и выполнения.

Если первая и вторая части пропущены, они предполагаются равными a и = соответственно. Например, r,u+w означает, что все пользователи должны иметь доступ для чтения, а владелец файла — также для записи.

Обратите внимание, что символические маски в настоящее время не работают должным образом.

Пример

umask 177 или umask u=rw устанавливают маску создания файла для чтения и записи владельцем и без прав для всех остальных пользователей.

Вернуться к индексу.

vared — интерактивное редактирование значения переменной среды

Синтаксис

vared VARIABLE_NAME

Описание

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

Пример

vared PATH[3] редактирует третий элемент массива PATH

Вернуться к индексу.

while — многократное выполнение команды

Синтаксис

while CONDITION; COMMANDS...; end

Описание

while многократно выполняет CONDITION, и если код возврата равен 0, то выполняет COMMANDS.

Если код возврата CONDITION не равен нулю на первой итерации, COMMANDS не будет выполнен вообще.

Для сложных условий можно использовать and или or. Еще более сложный контроль можно реализовать с while true, содержащим break.

Пример

while test -f foo.txt; or test -f bar.txt ; echo file exists; sleep 10; end
# outputs 'file exists' at 10 second intervals as long as the file foo.txt or bar.txt exists.

Вернуться к индексу.

© 2005–2009 Axel Liljencrantz
Licensed under the GNU General Public License, version 2.
https://fishshell.com/docs/2.3/commands.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API