Справочник команд
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).
Подстановки команд, найденные в 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не выводить больше данных -
\eescape -
\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прекратить дальнейший вывод -
\eescape -
\fподача страницы -
\nперевод строки -
\rвозврат каретки -
\tгоризонтальная табуляция -
\vвертикальная табуляция -
\oooвосьмеричное число (ooo от 1 до 3 цифр) -
\xhhшестнадцатеричное число (hhh от 1 до 2 цифр) -
\uhhhh16-битное Юникод-символ (hhhh 4 цифры) -
\Uhhhhhhhh32-битное Юникод-символ (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 означает последний индекс массива.
Правила области действия при создании или обновлении переменной:
- Если переменная явно задана как универсальная, глобальная или локальная, это задание будет выполнено. Если переменная с тем же именем существует в другой области действия, эта переменная не будет изменена.
- Если переменная не задана явно как универсальная, глобальная или локальная, но ранее была определена, используется предыдущая область действия переменной.
- Если переменная не задана явно как универсальная, глобальная или локальная и никогда раньше не была определена, переменная будет локальной для выполняемой в данный момент функции. Обратите внимание, что это отличается от использования флагов
-lили--local. Если один из этих флагов используется, переменная будет локальной для самого внутреннего текущего выполняемого блока, в то время как без этих флагов переменная будет локальной для функции. Если никакая функция не выполняется, переменная будет глобальной.
Правила экспорта при создании или обновлении переменной идентичны правилам области действия переменных:
- Если переменная явно задана как экспортируемая или неэкспортируемая, это задание будет выполнено.
- Если переменная не задана явно как экспортируемая или неэкспортируемая, но ранее была определена, сохраняется предыдущее правило экспорта переменной.
- Если переменная не задана явно как экспортируемая или неэкспортируемая и никогда раньше не была определена, переменная не будет экспортироваться.
В режиме запроса можно указать область действия для проверки.
В режиме удаления, если указаны индексы переменных, будут удалены только указанные сегменты массива переменных.
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,--backgroundCOLORустанавливает цвет заднего фона. -
-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в другой оболочке.В таких случаях можно использовать
commandtestдля явного использования автономной утилиты системыtestвместо этой встроенной командыbuiltintest.
Вернуться к списку команд.
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