Spec-Zone.ru › Fish 2.2

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

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 появится в командной строке.

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

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

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

Примеры

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 будет добавлена.

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

Пример

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

alias rmi "rm -i"

# This is equivalent to entering the following function:

function rmi
    rm -i $argv
end

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

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

Синтаксис

COMMAND1; and COMMAND2

Описание

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

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, вместо последовательности используется имя клавиши (например, «влево», «вверх» или «backspace»). Используемые имена — это те же, что и соответствующие переменные curses, но без префикса «key_». (См. terminfo(5) для получения дополнительной информации или используйте bind --key-names для получения списка всех доступных имен клавиш.)

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

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

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

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

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

По умолчанию привязки клавиш не сохраняются между сеансами. Для сохранения пользовательских привязок клавиш отредактируйте функцию fish_user_key_bindings и вставьте соответствующие операторы bind.

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

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

  • -k или --key Указывает имя клавиши, например «влево» или «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

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

  • backward-char, перемещает курсор влево на один символ
  • backward-delete-char, удаляет один символ ввода слева от курсора
  • backward-kill-line, перемещает всё от начала строки до курсора в буфер обмена
  • backward-kill-word, перемещает слово слева от курсора в буфер обмена
  • backward-word, перемещает одно слово влево
  • beginning-of-history, перемещает к началу истории
  • beginning-of-line, перемещает к началу строки
  • capitalize-word, делает текущее слово заглавным
  • complete, предполагает остаток текущего токена
  • delete-char, удаляет один символ справа от курсора
  • delete-line, удаляет всю строку
  • downcase-word, делает текущее слово строчными буквами
  • dump-functions, выводит список всех сочетаний клавиш
  • end-of-history, перемещает к концу истории
  • end-of-line, перемещает к концу строки
  • explain, выводит описание возможных проблем с текущей командой
  • forward-char, перемещает курсор вправо на один символ
  • forward-word, перемещает одно слово вправо
  • history-search-backward, ищет в истории предыдущее совпадение
  • history-search-forward, ищет в истории следующее совпадение
  • kill-line, перемещает всё от курсора до конца строки в буфер обмена
  • kill-whole-line, перемещает строку в буфер обмена
  • kill-word, перемещает следующее слово в буфер обмена
  • 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 на очистку строки ввода.

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

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.

Обратите внимание, что подстановки команд в операторе 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, если указано имя директории (начинающееся с ., / или ~, или заканчивающееся на /).

Примеры

cd
# changes the working directory to your home directory.

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

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

command - выполнить программу

Синтаксис

command [OPTIONS] COMMANDNAME [ARGS...]

Описание

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

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

  • -s или --search возвращает имя файла, который будет выполнен, или ничего, если файл с указанным именем не найден в $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] заменяет задание под курсором третьим элементом из истории командной строки.

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

complete - редактирование автодополнения команд

Синопсис

complete ( -c | --command | -p | --path ) COMMAND
        [( -s | --short-option ) SHORT_OPTION]
        [( -l | --long-option | -o | --old-option ) LONG_OPTION]
        [( -a | --arguments ) OPTION_ARGUMENTS]
        [( -w | --wraps ) WRAPPED_COMMAND]
        [( -d | --description ) DESCRIPTION]

Описание

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

  • COMMAND — имя команды, для которой необходимо добавить автодополнение.
  • SHORT_OPTION — односимвольный параметр команды.
  • LONG_OPTION — параметр команды из нескольких символов.
  • OPTION_ARGUMENTS — параметр, содержащий список возможных аргументов опции, разделенных пробелами, который может содержать подоболочки.
  • DESCRIPTION — описание того, что делает опция и/или аргументы опции.
  • -C STRING или --do-complete=STRING заставляет complete попытаться найти все возможные автодополнения для указанной строки.
  • -w WRAPPED_COMMAND или --wraps=WRAPPED_COMMAND заставляет указанную команду унаследовать автодополнения от обернутой команды.
  • -e или --erase подразумевает, что указанное автодополнение должно быть удалено.
  • -f или --no-files указывает, что опция, заданная этим автодополнением, не может следовать за именем файла.
  • -n или --condition задаёт командную строку оболочки, которая должна возвращать 0, если автодополнение должно быть использовано. Это позволяет задавать автодополнения, которые должны использоваться только в некоторых случаях.
  • -o или --old-option подразумевает, что команда использует старые длинные стили опций с одной чертой.
  • -p или --path подразумевает, что строка COMMAND — это полный путь к команде.
  • -r или --require-parameter указывает, что опция, заданная этим автодополнением, всегда должна иметь аргумент опции, то есть не может следовать за другой опцией.
  • -u или --unauthoritative подразумевает, что может быть больше опций, чем указанных, и что fish не должен считать, что не указанные опции являются опечатками.
  • -A или --authoritative подразумевает, что не может быть больше опций, чем указанных, и что fish должен считать, что не указанные опции являются опечатками.
  • -x или --exclusive подразумевает как -r, так и -f.

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

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

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

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

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

Пример

Короткий стиль опции -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.

Пример

Следующий код удаляет все файлы tmp, которые не содержат слово 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 не принимает никаких параметров.

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

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

Синопсис

dirs

Описание

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

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

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

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

Синопсис

echo [OPTIONS] [STRING]

Описание

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

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

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

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

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

  • \ обратная косая черта
  • \a звуковой сигнал (BEL)
  • \b backspace
  • \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 вызывает выход fish. Если STATUS предоставлено, оно будет преобразовано в целое число и использовано в качестве кода выхода. В противном случае код выхода будет таким же, как у последней выполненной команды.

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

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

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

Синтаксис

false

Описание

false устанавливает код выхода в 1.

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

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

Синтаксис

fg [PID]

Описание

fg переводит указанное задание в фоновый режим, возобновляя его, если оно приостановлено. Во время выполнения задания в фоновом режиме fish приостанавливается. Если задание не указано, последнее использованное задание помещается в фоновый режим. Если указан 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 считывает команды из стандартного ввода и выводит их на стандартный вывод.

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

  • -i или --no-indent не выполняют отступ команд; только переформатирование на одну задачу на строку
  • -v или --version отображает текущую версию fish и затем завершает работу
  • --ansi применяет цветовое форматирование вывода с помощью последовательностей ANSI, соответствующих текущему $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_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 нет параметров.

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

408-600-6421

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.

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

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

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

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

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

Синтаксис

funcsave FUNCTION_NAME

Описание

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

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

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

Синтаксис

function [OPTIONS] NAME; 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" >&; 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.

Для использования кода возврата нескольких команд в качестве условия блока if, используйте begin; ...; end и команды короткого замыкания and и or.

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

Пример

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

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

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

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

Синтаксис

isatty [FILE DESCRIPTOR]

Описание

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

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

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

Примеры

В интерактивной оболочке команды ниже завершаются с возвращаемым значением 0:

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 выводит идентификатор процесса для каждого процесса во всех заданиях.

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

Пример

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

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

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

Синопсис

math EXPRESSION

Описание

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

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

Примеры

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

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

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

mimedb - поиск информации о файле через базу данных mime

Синопсис

mimedb [OPTIONS] FILES...

Описание

mimedb запрашивает базу данных типов MIME и файлы .desktop установленные на системе, чтобы найти информацию о файлах, указанных в FILES. Информация, которую mimedb может получить, включает тип MIME для файла, описание типа и стандартное действие, которое может быть выполнено с файлом. mimedb также может использоваться для запуска стандартного действия для этого файла.

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

  • -t, --input-file-data определяет тип файлов по имени файла и по содержимому (по умолчанию).
  • -f, --input-filename определяет тип файлов по имени файла.
  • -i, --input-mime указывает, что аргументы не являются файлами, а типами MIME.
  • -m, --output-mime выводит тип MIME каждого файла (по умолчанию).
  • -f, --output-description выводит описание каждого типа MIME.
  • -a, --output-action выводит стандартное действие каждого типа MIME.
  • -l, --launch запускает стандартное действие для указанных файлов.
  • -v, --version отображает номер версии и завершает работу.

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

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

Синопсис

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

Описание

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

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

Пример

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 открывает файл в его стандартном приложении, используя команду xdg-open если она существует, в противном случае команду mimedb.

Пример

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

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

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

Синопсис

COMMAND1; or COMMAND2

Описание

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

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 /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

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

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

Синопсис

COMMAND1 ( COMMAND2 | psub [-f] )

Описание

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

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

Пример

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

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

pushd - добавить каталог в стек каталогов

Синопсис

pushd [DIRECTORY]

Описание

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

Пример

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

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

pwd - вывод текущего рабочего каталога

Синопсис

pwd

Описание

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

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

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

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

Синопсис

random [SEED]

Описание

random выводит случайное число от 0 до 32766 включительно.

Если предоставлено значение 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, white и normal.

Если ваш терминал поддерживает term256 (современные xterms и OS X Lion), вы можете указать значение RGB с тремя или шестью шестнадцатеричными цифрами, например A0FF33 или f2f. fish выберет ближайший поддерживаемый цвет.

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

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

Вызов set_color normal установит цвет терминала в стандартный цвет терминала.

Некоторые терминалы используют последовательность escape --bold для переключения на набор более ярких цветов. В таких терминалах set_color white приведет к серому цвету шрифта, а set_color --bold white - к белому.

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

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

Примеры

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 too"

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

source - выполнение содержимого файла.

Синтаксис

source FILENAME [ARGUMENTS...]

Описание

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

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

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

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

Пример

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

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

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 печатает трассировку стека всех вызовов функций в стеке вызовов.

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

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

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

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

Описание

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

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

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

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

Пример

Если переменная $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 ] ]).

Доступны следующие операторы для проверки файлов и каталогов:

  • -b FILE возвращает true, если FILE — блочный устройство.
  • -c FILE возвращает true, если FILE — символьное устройство.
  • -d FILE возвращает true, если FILE — каталог.
  • -e FILE возвращает true, если FILE существует.
  • -f FILE возвращает true, если FILE — обычный файл.
  • -g FILE возвращает true, если у FILE установлен бит установления группы.
  • -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 установлен бит установления пользователя.
  • -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 ложно, и ложно, если 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 можно комбинировать для создания более сложных выражений. В этом примере печать «success» происходит, если существует файл /foo или /bar, а также файл /baz или /bat.

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

Стандарты

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

  • Операторы < и > для сравнения строк не реализованы.
  • Поскольку данная функция test является встроенной функцией оболочки, а не автономной утилитой, использование флага -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
# Outputs the string 'fg is a shell 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, может быть и больше дополнительных пределов для установки в 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 не будет выполнен вообще.

Используйте begin; ...; end для сложных условий; более сложный контроль может быть достигнут с while true содержащим break.

Пример

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

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

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

Spec-Zone.ru

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