Справочник команд
fish поставляется с большим количеством встроенных команд, функций shellscript и внешних команд. Все они описаны ниже.
Практически все команды fish реагируют на параметры -h или --help, чтобы отобразить соответствующую справку, также доступную с помощью команд help и man, например:
echo -h echo --help # Prints help to the terminal window man echo # Displays the man page in the system pager # (normally 'less', 'more' or 'most'). help echo # Open a web browser to show the relevant documentation
abbr - управление сокращениями fish
Синтаксис
abbr -a word="phrase" abbr -s abbr -l abbr -e word
Описание
abbr манипулирует списком сокращений, которые будет расширять fish.
Сокращения — это определённые пользователем последовательности символов или слова, которые заменяются более длинными фразами после их ввода. Например, часто используемую команду, такую как git checkout, можно сократить до gco. После ввода gco и нажатия Пробел или Ввод, полное текстовое значение git checkout появится в командной строке.
Сокращения хранятся, по умолчанию, во всеобщей переменной.
Доступны следующие параметры:
-
-a WORD PHRASEили--add WORD PHRASEДобавляет новое сокращение, где WORD будет расширяться до PHRASE. -
-sили--showПоказать все сокращённые слова и их расширенные фразы таким образом, чтобы их можно было экспортировать и импортировать. -
-lили--listВыводит все сокращённые слова. -
-e WORDили--erase WORDУдаляет сокращение WORD.
Примеры
abbr -a gco git checkout
Добавить новое сокращение, где gco будет заменено на git checkout.
abbr -e gco
Удалить сокращение gco.
ssh another_host abbr -s | source
Импортировать сокращения, определённые на другом_хосте через SSH.
Вернуться к индексу.
alias - создание функции
Синтаксис
alias NAME DEFINITION alias NAME=DEFINITION
Описание
alias — это простой обертка для встроенной команды function. Она существует для обратной совместимости с оболочками Posix. Для других целей рекомендуется определить функцию.
fish не отслеживает, какие функции были определены с помощью alias. Они должны быть удалены с помощью functions -e.
-
NAME— имя псевдонима -
DEFINITION— фактическая команда для выполнения. Строка$argvбудет добавлена.
Вы не можете создать псевдоним для функции с тем же именем.
Пример
Следующий код создаст rmi, который выполнит rm с дополнительными аргументами при каждом вызове.
alias rmi "rm -i"
# This is equivalent to entering the following function:
function rmi
rm -i $argv
end
Вернуться к индексу.
and - условное выполнение команды
Синтаксис
COMMAND1; and COMMAND2
Описание
and используется для выполнения команды, если текущий код возврата (установленный последней предыдущей командой) равен 0.
and не изменяет текущий код возврата.
Код возврата последней фоновой команды, завершившей работу, всегда можно получить с помощью переменной $status.
Пример
Следующий код выполняет команду make для сборки программы. Если сборка прошла успешно, код возврата make равен 0, и программа устанавливается. Если любой шаг завершается неудачей, код возврата равен 1, и выполняется make clean, что удаляет файлы, созданные в процессе сборки.
make; and make install; or make clean
Вернуться к индексу.
begin - начать новый блок кода
Синтаксис
begin; [COMMANDS...;] end
Описание
begin используется для создания нового блока кода.
Блок выполняется безусловно. begin; ...; end эквивалентно if true; ...; end.
begin используется для группирования нескольких команд в блок. Это позволяет ввести новую область видимости переменных, перенаправить входные или выходные данные набора команд в качестве группы или указать приоритет при использовании условных команд, таких как and.
begin не изменяет текущий код возврата.
Пример
Следующий код устанавливает несколько переменных внутри области видимости блока. Поскольку переменные заданы внутри блока и имеют локальную область видимости, они автоматически удаляются по завершении блока.
begin
set -l PIRATE Yarrr
...
end
echo $PIRATE
# This will not output anything, since the PIRATE variable
# went out of scope at the end of the block
В следующем коде все выводы перенаправляются в файл out.html.
begin
echo $xml_header
echo $html_header
if test -e $file
...
end
...
end > out.html
Вернуться к индексу.
bg - отправка задач в фоновый режим
Синтаксис
bg [PID...]
Описание
bg отправляет задачи в фоновый режим, возобновляя их, если они приостановлены. Задача в фоновом режиме выполняется одновременно с fish и не имеет доступа к клавиатуре. Если не указана задача, последняя использованная задача помещается в фоновый режим. Если указан PID, задачи с указанными идентификаторами группы процессов помещаются в фоновый режим.
Идентификатор процесса целевого процесса обычно находится с помощью расширения процесса.
Пример
bg %1 поместит задачу с идентификатором 1 в фоновый режим.
Вернуться к индексу.
bind - обработка привязок клавиш fish
Синтаксис
bind [(-M | --mode) MODE] [(-m | --sets-mode) NEW_MODE]
[(-k | --key)] SEQUENCE COMMAND [COMMAND...]
bind [(-M | --mode) MODE] [(-k | --key)] SEQUENCE
bind (-K | --key-names) [(-a | --all)]
bind (-f | --function-names)
bind (-e | --erase) [(-M | --mode) MODE]
(-a | --all | [(-k | --key)] SEQUENCE [SEQUENCE...])
Описание
bind добавляет привязку для указанной последовательности клавиш к указанной команде.
SEQUENCE — это последовательность символов, к которой привязывается. Они должны быть записаны как последовательности экранирования fish. Например, поскольку нажатие клавиши Alt и другой символ отправляет этот символ с префиксом escape-символа, привязки клавиш, основанные на Alt, могут быть записаны с использованием escape \e. Например, Alt-w можно записать как \ew. Символ управления можно записать аналогичным образом, используя escape \c, например, Control-X (^X) можно записать как \cx. Обратите внимание, что привязки клавиш, основанные на Alt, чувствительны к регистру, а привязки клавиш, основанные на Control, таковыми не являются. Это ограничение текстовых терминалов, а не fish.
Стандартная привязка клавиш может быть установлена путем указания SEQUENCE пустой строки (то есть '' ). Она будет использоваться всякий раз, когда ни одна другая привязка не совпадает. Для большинства привязок клавиш имеет смысл использовать функцию self-insert (то есть bind '' self-insert ) в качестве стандартной привязки клавиш. Это вставит в редактор любые нажатые клавиши, к которым не привязана конкретная привязка. Непечатные символы игнорируются редактором, поэтому это не приведет к печати управляющих последовательностей.
Если используется переключатель -k, вместо последовательности используется имя клавиши (например, «влево», «вверх» или «backspace»). Используемые имена — это те же, что и соответствующие переменные curses, но без префикса «key_». (См. terminfo(5) для получения дополнительной информации или используйте bind --key-names для получения списка всех доступных имен клавиш.)
COMMAND может быть любой командой fish, но также может быть одной из набора специальных функций ввода. К ним относятся функции для перемещения курсора, работы с буфером обмена, выполнения автодополнения и т. д. Используйте bind --function-names для получения полного списка этих функций ввода.
Когда COMMAND — команда shellscript, рекомендуется поместить фактический код в функцию и просто привязать к имени функции. Таким образом, становится намного проще протестировать функцию во время редактирования, а результат, как правило, более удобочитаем.
Если такой скрипт генерирует вывод, скрипт должен завершаться вызовом commandline -f repaint, чтобы сообщить fish, что требуется перерисовка.
Когда предоставляется несколько COMMAND, все они выполняются в указанном порядке при нажатии клавиши.
Если не указан SEQUENCE, отображаются все привязки (или только привязки в указанном MODE). Если SEQUENCE указан без COMMAND, отображается только совпадающая привязка.
По умолчанию привязки клавиш не сохраняются между сеансами. Для сохранения пользовательских привязок клавиш отредактируйте функцию fish_user_key_bindings и вставьте соответствующие операторы bind.
Привязки клавиш могут использовать «режимы», что имитирует поведенческие модели ввода Vi. По умолчанию режим — «default», и каждая привязка применяется к одному режиму. Режим можно просмотреть/изменить с помощью переменной $fish_bind_mode.
Доступны следующие параметры:
-
-kили--keyУказывает имя клавиши, например «влево» или «backspace», вместо последовательности символов -
-Kили--key-namesВыводит список доступных имен клавиш. Указание-aили--allвключает клавиши, у которых нет известной карты соответствия -
-fили--function-namesВыводит список доступных функций ввода -
-M MODEили--mode MODEУказывает режим привязки, в котором используется привязка. По умолчанию — «default» -
-m NEW_MODEили--sets-mode NEW_MODEИзменить текущий режим наNEW_MODEпосле выполнения этой привязки -
-eили--eraseУдалить привязку с данной последовательностью и режимом вместо определения новой. Несколько последовательностей можно указать с этим флагом. Указание-aили--allс-Mили--modeудаляет все привязки в данном режиме независимо от последовательности. Указание-aили--allбез-Mили--modeудаляет все привязки во всех режимах независимо от последовательности. -
-aили--allСм.--eraseи--key-names
Доступны следующие специальные функции ввода:
-
backward-char, перемещает курсор влево на один символ -
backward-delete-char, удаляет один символ ввода слева от курсора -
backward-kill-line, перемещает всё от начала строки до курсора в буфер обмена -
backward-kill-word, перемещает слово слева от курсора в буфер обмена -
backward-word, перемещает одно слово влево -
beginning-of-history, перемещает к началу истории -
beginning-of-line, перемещает к началу строки -
capitalize-word, делает текущее слово заглавным -
complete, предполагает остаток текущего токена -
delete-char, удаляет один символ справа от курсора -
delete-line, удаляет всю строку -
downcase-word, делает текущее слово строчными буквами -
dump-functions, выводит список всех сочетаний клавиш -
end-of-history, перемещает к концу истории -
end-of-line, перемещает к концу строки -
explain, выводит описание возможных проблем с текущей командой -
forward-char, перемещает курсор вправо на один символ -
forward-word, перемещает одно слово вправо -
history-search-backward, ищет в истории предыдущее совпадение -
history-search-forward, ищет в истории следующее совпадение -
kill-line, перемещает всё от курсора до конца строки в буфер обмена -
kill-whole-line, перемещает строку в буфер обмена -
kill-word, перемещает следующее слово в буфер обмена -
upcase-word, делает текущее слово заглавным -
yank, вставляет последнее из буфера обмена в буфер -
yank-pop, поворачивается к предыдущей записи в буфере обмена
Примеры
bind \cd 'exit'
Вызывает fish при нажатии Control-D.
bind -k ppage history-search-backward
Выполняет поиск по истории при нажатии клавиши Page Up.
set -g fish_key_bindings fish_vi_key_bindings bind -M insert \cc kill-whole-line force-repaint
Включает сочетания клавиш Vi и переопределяет Control-C на очистку строки ввода.
Вернуться к индексу.
block - временно блокирует доставку событий
Синтаксис
block [OPTIONS...]
Описание
block предотвращает доставку и обработку событий, вызванных fish или командой emit, пока блокировка активна.
В функциях block может быть полезен при выполнении работы, которую не следует прерывать оболочкой.
Блокировку можно снять. Любые события, произошедшие во время блокировки, будут затем доставлены.
Не следует путать блокировки событий с блоками кода, которые создаются с помощью begin, if, while или for
Доступны следующие параметры:
-
-lили--localАвтоматически снять блокировку в конце области видимости текущего вложенного блока кода -
-gили--globalНикогда автоматически не снимать блокировку -
-eили--eraseСнять глобальную блокировку
Пример
# Create a function that listens for events function --on-event foo foo; echo 'foo fired'; end # Block the delivery of events block -g emit foo # No output will be produced block -e # 'foo fired' will now be printed
Вернуться к индексу.
break - остановить текущий внутренний цикл
Синтаксис
LOOP_CONSTRUCT; [COMMANDS...] break; [COMMANDS...] end
Описание
break останавливает текущий цикл, например, цикл for или while. Обычно используется внутри условного блока, такого как оператор if или switch.
У break нет параметров.
Пример
Следующий код ищет все файлы .c, содержащие "smurf", и останавливается при первом обнаружении.
for i in *.c
if grep smurf $i
echo Smurfs are present in $i
break
end
end
Вернуться к индексу.
breakpoint - Запустить режим отладки
Синтаксис
breakpoint
Описание
breakpoint используется для остановки выполнения скрипта и запуска интерактивного дебаггера.
Дополнительные сведения см. в разделе Отладка fish-скриптов в руководстве fish.
У breakpoint нет параметров.
Вернуться к индексу.
builtin - выполнить встроенную команду
Синтаксис
builtin BUILTINNAME [OPTIONS...]
Описание
builtin заставляет оболочку использовать встроенную команду, а не функцию или программу.
Доступны следующие параметры:
-
-nили--namesВывести список всех определенных встроенных команд
Пример
builtin jobs # executes the jobs builtin, even if a function named jobs exists
Вернуться к индексу.
case - условно выполнить блок команд
Синтаксис
switch VALUE; [case [WILDCARD...]; [COMMANDS...]; ...] end
Описание
switch выполняет один из нескольких блоков команд в зависимости от того, совпадает ли заданное значение с одним из нескольких значений с подстановкой шаблонов. case используется вместе с оператором switch, чтобы определить, какой блок следует выполнить.
Каждой команде case задаётся один или несколько параметров. Первая команда case с параметром, соответствующим строке, указанной в команде switch, будет обработана. case параметры могут содержать подстановки шаблонов. Их нужно экранировать или заключить в кавычки, чтобы избежать обычного расширения подстановок шаблонов с использованием имён файлов.
Обратите внимание, что fish не выполняет переходы в операторах case. Выполняется только первая соответствующая ветвь case.
Обратите внимание, что подстановки команд в операторе case будут вычисляться, даже если его тело не будет выполнено. Все подстановки, включая подстановки команд, должны быть выполнены, прежде чем значение может быть сравнено с параметром.
Пример
Если переменная $animal содержит название животного, следующий код попытается его классифицировать:
switch $animal
case cat
echo evil
case wolf dog human moose dolphin whale
echo mammal
case duck goose albatross
echo bird
case shark trout stingray
echo fish
# Note that the next case has a wildcard which is quoted
case '*'
echo I have no idea what a $animal is
end
Если вышеприведённый код был запущен с $animal установленным на whale, вывод будет mammal.
Вернуться к индексу.
cd - изменить директорию
Синтаксис
cd [DIRECTORY]
Описание
cd изменяет текущую рабочую директорию.
Если указан параметр DIRECTORY, он станет новой директорией. Если параметр не указан, используется значение переменной окружения HOME.
Если DIRECTORY — относительный путь, пути, указанные в переменной окружения CDPATH, будут использованы как префиксы для указанного пути.
Обратите внимание, что оболочка попытается изменить директорию без необходимости cd, если указано имя директории (начинающееся с ., / или ~, или заканчивающееся на /).
Примеры
cd # changes the working directory to your home directory. cd /usr/src/fish-shell # changes the working directory to /usr/src/fish-shell
Вернуться к индексу.
command - выполнить программу
Синтаксис
command [OPTIONS] COMMANDNAME [ARGS...]
Описание
command заставляет оболочку выполнить программу COMMANDNAME и игнорировать любые функции или встроенные команды с таким же именем.
Доступны следующие опции:
-
-sили--searchвозвращает имя файла, который будет выполнен, или ничего, если файл с указанным именем не найден в$PATH.
С опцией -s, command рассматривает каждый аргумент как отдельную команду для поиска и устанавливает код возврата в 0, если любая из указанных команд найдена, или 1, если ни одна команда не найдена.
Для обеспечения совместимости с POSIX command, флаг -v распознаётся как псевдоним для -s.
Примеры
command ls заставляет fish выполнить программу ls, даже если существует функция ls.
command -s ls возвращает путь к программе ls.
Вернуться к индексу.
commandline - установить или получить текущий буфер командной строки
Синтаксис
commandline [OPTIONS] [CMD]
Описание
commandline можно использовать для установки или получения текущего содержимого буфера командной строки.
Без параметров commandline возвращает текущее значение командной строки.
С указанным параметром CMD, буфер командной строки очищается и заменяется содержимым CMD.
Доступны следующие опции:
-
-Cили--cursorустановка или получение текущей позиции курсора, а не содержимого буфера. Если аргумент не указан, выводится текущая позиция курсора, в противном случае аргумент интерпретируется как новая позиция курсора. -
-fили--functionвставка функций readline в читатель. Эта опция не может быть объединена с другими опциями. Она вызовет интерпретацию дополнительных аргументов как функций readline, и эти функции будут вставлены в читатель, так что они будут возвращены читателю до чтения любых дополнительных фактических нажатий клавиш.
Следующие опции изменяют способ обновления буфера командной строки commandline
-
-aили--appendне удалять текущую командную строку, добавить указанную строку в конец -
-iили--insertне удалять текущую командную строку, вставить указанную строку в текущую позицию курсора -
-rили--replaceудалить текущую командную строку и заменить её указанной строкой (по умолчанию)
Следующие опции изменяют часть командной строки, которая выводится или обновляется:
-
-bили--current-bufferвыбрать весь буфер (по умолчанию) -
-jили--current-jobвыбрать текущую задачу -
-pили--current-processвыбрать текущий процесс -
-tили--current-tokenвыбрать текущий токен.
Следующие опции изменяют способ вывода текущего буфера командной строки commandline:
-
-cили--cut-at-cursorвывести только выделение до текущей позиции курсора -
-oили--tokenizeтокенизировать выделение и вывести один токен типа строки в строке
Если commandline вызывается во время вызова завершения заданной строки с использованием complete -C STRING, commandline будет считать указанную строку текущим содержимым командной строки.
Следующие опции выводят метаданные о состоянии командной строки:
-
-Lили--lineвыводит строку, на которой находится курсор, начиная с 1 для самой верхней строки -
-Sили--search-modeвозвращает true, если командная строка выполняет поиск по истории -
-Pили--paging-modeвозвращает true, если командная строка отображает содержимое страницы, например, результаты автодополнения
Пример
commandline -j $history[3] заменяет задание под курсором третьим элементом из истории командной строки.
Назад к индексу.
complete - редактирование автодополнения команд
Синопсис
complete ( -c | --command | -p | --path ) COMMAND
[( -s | --short-option ) SHORT_OPTION]
[( -l | --long-option | -o | --old-option ) LONG_OPTION]
[( -a | --arguments ) OPTION_ARGUMENTS]
[( -w | --wraps ) WRAPPED_COMMAND]
[( -d | --description ) DESCRIPTION]
Описание
Для введения в спецификацию автодополнения см. Написание собственных автодополнений в руководстве fish.
-
COMMAND— имя команды, для которой необходимо добавить автодополнение. -
SHORT_OPTION— односимвольный параметр команды. -
LONG_OPTION— параметр команды из нескольких символов. -
OPTION_ARGUMENTS— параметр, содержащий список возможных аргументов опции, разделенных пробелами, который может содержать подоболочки. -
DESCRIPTION— описание того, что делает опция и/или аргументы опции. -
-C STRINGили--do-complete=STRINGзаставляет complete попытаться найти все возможные автодополнения для указанной строки. -
-w WRAPPED_COMMANDили--wraps=WRAPPED_COMMANDзаставляет указанную команду унаследовать автодополнения от обернутой команды. -
-eили--eraseподразумевает, что указанное автодополнение должно быть удалено. -
-fили--no-filesуказывает, что опция, заданная этим автодополнением, не может следовать за именем файла. -
-nили--conditionзадаёт командную строку оболочки, которая должна возвращать 0, если автодополнение должно быть использовано. Это позволяет задавать автодополнения, которые должны использоваться только в некоторых случаях. -
-oили--old-optionподразумевает, что команда использует старые длинные стили опций с одной чертой. -
-pили--pathподразумевает, что строкаCOMMAND— это полный путь к команде. -
-rили--require-parameterуказывает, что опция, заданная этим автодополнением, всегда должна иметь аргумент опции, то есть не может следовать за другой опцией. -
-uили--unauthoritativeподразумевает, что может быть больше опций, чем указанных, и что fish не должен считать, что не указанные опции являются опечатками. -
-Aили--authoritativeподразумевает, что не может быть больше опций, чем указанных, и что fish должен считать, что не указанные опции являются опечатками. -
-xили--exclusiveподразумевает как-r, так и-f.
Автодополнение команд в fish основано на понятии опций и аргументов. Опция — это параметр, который начинается с дефиса, например, '-h', '-help' или '--help'. Аргументы — параметры, не начинающиеся с дефиса. Fish распознаёт три стиля опций, такие же, как и в GNU-версии библиотеки getopt. Эти стили:
- Короткие опции, такие как '
-a'. Короткие опции имеют длину в один символ, предваряются одним дефисом и могут быть сгруппированы (например, '-la', что эквивалентно '-l -a'). Аргументы опций могут быть указаны в следующем параметре ('-w 32') или путём добавления значения к опции ('-w32'). - Опции старого стиля, такие как '
-Wall'. Опции старого стиля могут иметь длину более одного символа, предваряются одним дефисом и не могут быть сгруппированы. Аргументы опций указываются в следующем параметре ('-ao null'). - Опции стиля GNU, такие как '
--colors'. Опции стиля GNU могут иметь длину более одного символа, предваряются двумя дефисами и не могут быть сгруппированы. Аргументы опций могут быть указаны в следующем параметре ('--quoting-style') или путём добавления к опции '=' и значения ('--quoting-style=shell'). Опции стиля GNU могут быть сокращены, при условии, что сокращение уникально ('--h' эквивалентно '--help', если help — единственная длинная опция, начинающаяся с 'h').
Опции для указания имени команды, пути к команде или переключателей команды могут быть использованы несколько раз для указания нескольких команд, имеющих одинаковое автодополнение, или нескольких переключателей, принимаемых командой.
Опции -w или --wraps заставляют указанную команду унаследовать автодополнения от другой команды. Команда, наследующая автодополнения, называется "обёрткой" для унаследованной команды. Команда-обёртка может иметь собственные автодополнения в дополнение к унаследованным. Команда может обернуть несколько команд, и обертывание является транзитивным: если A обертывает B, а B обертывает C, то A автоматически наследует все автодополнения C. Обертывание можно удалить, используя опции -e или --erase.
При удалении автодополнений можно либо удалить все автодополнения для определённой команды, указав complete -e -c COMMAND, либо удалить определённую опцию автодополнения, указав длинную, короткую или опцию старого стиля.
Пример
Короткий стиль опции -o для команды gcc требует, чтобы за ней следовал файл. Это можно сделать, написав:
complete -c gcc -s o -r
Короткий стиль опции -d для команды grep требует, чтобы было использовано одно из строк 'read', 'skip' или 'recurse'. Это можно сделать, написав:
complete -c grep -s d -x -a "read skip recurse"
Команда su принимает любой имя пользователя в качестве аргумента. Имена пользователей задаются как первое поле, разделённое двоеточием, в файле /etc/passwd. Это можно указать так:
complete -x -c su -d "Username" -a "(cat /etc/passwd | cut -d : -f 1)"
Команда rpm имеет несколько режимов. Если задан флаг -e или --erase, rpm должна удалить один или несколько пакетов, в этом случае несколько переключателей, связанных с удалением пакетов, допустимы, например, переключатель nodeps.
Это можно записать как:
complete -c rpm -n "__fish_contains_opt -s e erase" -d nodeps "Don't check dependencies"
где __fish_contains_opt — функция, которая проверяет буфер командной строки на наличие указанного набора опций.
Для реализации псевдонима используйте опцию -w или --wraps.
complete -c hub -w git
Теперь hub наследует все автодополнения от git. Обратите внимание, что это также можно указать в объявлении функции.
Назад к индексу.
contains - проверка наличия слова в списке
Синопсис
contains [OPTIONS] KEY [VALUES...]
Описание
contains проверяет, содержит ли набор VALUES строку KEY. Если да, то contains завершается с кодом 0; если нет, то с кодом 1.
Доступны следующие опции:
-
-iили--indexвыводит индекс слова
Обратите внимание, что, как и GNU-утилиты, contains интерпретирует все аргументы, начинающиеся с -, как опции к contains, пока не достигнет аргумента, который -- (два дефиса). См. примеры ниже.
Пример
for i in ~/bin /usr/local/bin
if not contains $i $PATH
set PATH $PATH $i
end
end
Вышеприведённый код проверяет, находятся ли ~/bin и /usr/local/bin в пути, и добавляет их, если нет.
function hasargs
if contains -- -q $argv
echo '$argv contains a -q option'
end
end
Вышеприведённый код проверяет наличие -q в списке аргументов, используя аргумент -- для разделения опций для contains от искомого ключа.
Назад к индексу.
continue - пропуск оставшейся части текущей итерации текущего вложенного цикла
Синопсис
LOOP_CONSTRUCT; [COMMANDS...;] continue; [COMMANDS...;] end
Описание
continue пропускает оставшуюся часть текущей итерации текущего внутреннего цикла, такого как цикл for или цикл while. Обычно он добавляется внутрь блока условного оператора, такого как оператор if или switch.
Пример
Следующий код удаляет все файлы tmp, которые не содержат слово smurf.
for i in *.tmp
if grep smurf $i
continue
end
rm $i
end
Назад к индексу.
count - подсчёт количества элементов массива
Синопсис
count $VARIABLE
Описание
count выводит количество аргументов, переданных ему. Обычно это используется для определения количества элементов массива переменной окружения.
count не принимает никаких опций, включая -h или --help.
count завершается с ненулевым кодом выхода, если аргументы не были переданы, и нулевым кодом, если аргументов по крайней мере один.
Пример
count $PATH # Returns the number of directories in the users PATH variable. count *.txt # Returns the number of files in the current working directory ending with the suffix '.txt'.
Назад к индексу.
dirh - вывод истории каталогов
Синопсис
dirh
Описание
dirh выводит текущую историю каталогов. Текущая позиция в истории выделяется цветом, заданным в переменной окружения fish_color_history_current.
dirh не принимает никаких параметров.
Назад к индексу.
dirs - вывод стека каталогов
Синопсис
dirs
Описание
dirs выводит текущий стек каталогов, созданный командой pushd.
dirs не принимает никаких параметров.
Назад к индексу.
echo - вывод строки текста
Синопсис
echo [OPTIONS] [STRING]
Описание
echo выводит строку текста.
Доступны следующие опции:
-
-n, Не выводить символ новой строки -
-s, Не разделять аргументы пробелами -
-E, Отключить интерпретацию последовательностей обратной косой черты (по умолчанию) -
-e, Включить интерпретацию последовательностей обратной косой черты
Последовательности Экранирования
Если используется -e, распознаются следующие последовательности:
-
\обратная косая черта -
\aзвуковой сигнал (BEL) -
\bbackspace -
\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 вызывает выход fish. Если STATUS предоставлено, оно будет преобразовано в целое число и использовано в качестве кода выхода. В противном случае код выхода будет таким же, как у последней выполненной команды.
Если exit вызван при обработке файла (с помощью встроенной команды source), остальная часть файла будет пропущена, но сама оболочка не выйдет.
Вернуться к индексу.
false - вернуть неудачный результат
Синтаксис
false
Описание
false устанавливает код выхода в 1.
Вернуться к индексу.
fg - перевести задание в фоновый режим
Синтаксис
fg [PID]
Описание
fg переводит указанное задание в фоновый режим, возобновляя его, если оно приостановлено. Во время выполнения задания в фоновом режиме fish приостанавливается. Если задание не указано, последнее использованное задание помещается в фоновый режим. Если указан PID, задание с указанным идентификатором группы помещается в фоновый режим.
Идентификатор процесса целевого процесса обычно находится с помощью расширения процесса.
Пример
fg %1 поместит задание с идентификатором задания 1 в фоновый режим.
Вернуться к индексу.
fish - дружелюбная интерактивная оболочка
Синтаксис
fish [OPTIONS] [-c command] [FILE [ARGUMENTS...]]
Описание
fish - оболочка командной строки, разработанная в первую очередь для интерактивного использования. Полное руководство доступно в формате HTML с помощью команды help внутри fish.
Доступны следующие параметры:
-
-cили--command=COMMANDSоценивают указанные команды вместо чтения из командной строки -
-dили--debug-level=DEBUG_LEVELзадают уровень подробности fish. Более высокое число означает более высокий уровень подробности. По умолчанию уровень равен 1. -
-iили--interactiveуказывают, что fish должен работать в интерактивном режиме -
-lили--loginуказывают, что fish должен работать как оболочка входа -
-nили--no-executeне выполняют никаких команд, а только проверяют синтаксис -
-pили--profile=PROFILE_FILEпри выходе fish, выводятся временные данные обо всех выполненных командах в указанный файл -
-vили--versionотображают версию и завершают работу
Код выхода fish, как правило, равен коду выхода последней команды в фоновом режиме. Если fish завершается из-за синтаксической ошибки, код выхода равен 127.
Вернуться к индексу.
fish_config - запуск веб-интерфейса конфигурации
Описание
fish_config запускает веб-интерфейс конфигурации.
Веб-интерфейс позволяет просматривать функции, переменные и историю, а также изменять конфигурацию приглашения и цвета.
fish_config запускает локальный веб-сервер и открывает окно веб-браузера; после завершения, закройте окно браузера, а затем нажмите клавишу Enter, чтобы завершить сеанс конфигурации.
fish_config необязательно принимает имя начальной вкладки конфигурации. Например, fish_config history запустит интерфейс конфигурации с вкладкой истории.
Если переменная среды BROWSER установлена, она будет использоваться в качестве имени веб-браузера для открытия вместо системного по умолчанию.
Пример
fish_config открывает новое окно веб-браузера и позволяет настроить определенные настройки fish.
Вернуться к индексу.
fish_indent - отступ и форматирование
Синтаксис
fish_indent [OPTIONS]
Описание
fish_indent используется для отступа части кода fish. fish_indent считывает команды из стандартного ввода и выводит их на стандартный вывод.
Доступны следующие параметры:
-
-iили--no-indentне выполняют отступ команд; только переформатирование на одну задачу на строку -
-vили--versionотображает текущую версию fish и затем завершает работу -
--ansiприменяет цветовое форматирование вывода с помощью последовательностей ANSI, соответствующих текущему $TERM, используя цвета, определенные в среде (например,$fish_color_command). -
--htmlвыводит HTML, который поддерживает подсветку синтаксиса, если определен соответствующий CSS. Имена классов CSS совпадают с именами переменных, например,fish_color_command
Вернуться к индексу.
fish_prompt - определение внешнего вида приглашения командной строки
Синтаксис
function fish_prompt
...
end
Описание
Определяя функцию fish_prompt, пользователь может выбрать пользовательское приглашение. Функция fish_prompt выполняется, когда необходимо отобразить приглашение, а вывод используется в качестве приглашения.
Код выхода команд внутри fish_prompt не изменит значение $status за пределами функции fish_prompt.
fish поставляется с несколькими примерами приглашений, которые можно выбрать с помощью команды fish_config.
Пример
Простой приглашение:
function fish_prompt -d "Write out the prompt"
printf '%s@%s%s%s%s> ' (whoami) (hostname | cut -d . -f 1) \
(set_color $fish_color_cwd) (prompt_pwd) (set_color normal)
end
Вернуться к индексу.
fish_right_prompt - определение внешнего вида правого приглашения командной строки
Синтаксис
function fish_right_prompt
...
end
Описание
fish_right_prompt аналогичен fish_prompt, за исключением того, что он отображается в правой части окна терминала.
В fish_right_prompt не поддерживается несколько строк.
Пример
Простое правое приглашение:
function fish_right_prompt -d "Write out the right prompt"
date "+%m/%d/%y"
end
Вернуться к индексу.
fish_update_completions - Обновить автодополнение с помощью руководств
Описание
fish_update_completions анализирует руководства, установленные в системе, и пытается создать файлы автодополнения в каталоге конфигурации fish.
Это не перезаписывает пользовательские автодополнения.
У fish_update_completions нет параметров.
Вернуться к индексу.
408-600-6421
fish_vi_mode - Включение режима vi
Синтаксис
fish_vi_mode
Описание
fish_vi_mode переходит в режим редактирования команд, подобный vi. Чтобы всегда запускать в режиме vi, добавьте fish_vi_mode в свой файл config.fish.
Вернуться к индексу.
for - выполнить набор команд несколько раз
Синтаксис
for VARNAME in [VALUES...]; COMMANDS...; end
Описание
for - конструкция цикла. Она будет выполнять команды, указанные в COMMANDS, несколько раз. На каждой итерации локальная переменная, указанная в VARNAME, получает новое значение из VALUES. Если VALUES пусто, COMMANDS не будет выполняться вообще.
Пример
for i in foo bar baz; echo $i; end # would output: foo bar baz
Вернуться к индексу.
funced - редактировать функцию интерактивно
Синтаксис
funced [OPTIONS] NAME
Описание
funced предоставляет интерфейс для редактирования определения функции NAME.
Если переменная среды $EDITOR установлена, она будет использоваться как программа для редактирования функции. В противном случае будет использоваться встроенный редактор.
Если нет функции с именем NAME, будет создана новая функция с указанным именем.
-
-e commandили--editor commandОткройте тело функции в текстовом редакторе, указанном командой (например, "vi"). Команда 'fish' будет использовать встроенный редактор. -
-iили--interactiveОткройте тело функции во встроенном редакторе.
Назад к индексу.
funcsave - сохраняет определение функции в директорию автозагрузки пользователя
Синтаксис
funcsave FUNCTION_NAME
Описание
funcsave сохраняет текущее определение функции в файл в каталоге конфигурации fish. Эта функция будет автоматически загружаться в текущих и будущих сессиях fish. Это может быть полезно, если вы интерактивно создали новую функцию и хотите сохранить её для последующего использования.
Назад к индексу.
function - создание функции
Синтаксис
function [OPTIONS] NAME; BODY; end
Описание
function создаёт новую функцию NAME с телом BODY.
Функция — это список команд, которые будут выполнены, когда имя функции используется как команда.
Доступны следующие параметры:
-
-a NAMESили--argument-names NAMESприсваивает значения последующих аргументов командной строки именам, указанным в NAMES. -
-d DESCRIPTIONили--description=DESCRIPTIONописывает, что делает функция, подходит в качестве описания для автодополнения. -
-w WRAPPED_COMMANDили--wraps=WRAPPED_COMMANDзаставляет функцию унаследовать автодополнение от указанной обернутой команды. См. документацию поcompleteдля получения дополнительной информации. -
-eили--on-event EVENT_NAMEсообщает fish о запуске этой функции при возникновении указанного события. Fish генерирует внутренние события, например, при отображении приглашения. -
-vили--on-variable VARIABLE_NAMEсообщает fish запустить эту функцию, когда переменная VARIABLE_NAME изменяет своё значение. -
-j PGIDили--on-job-exit PGIDсообщает fish запустить эту функцию, когда задача с идентификатором группы PGID завершит работу. Вместо PGID можно указать строку 'caller'. Это допустимо только в подстановке команд и приведёт к срабатыванию обработчика при завершении задачи, которая создала эту подстановку команд. -
-p PIDили--on-process-exit PIDсообщает fish запустить эту функцию, когда дочерний процесс fish с идентификатором процесса PID завершит работу. -
-sили--on-signal SIGSPECсообщает fish запустить эту функцию, когда сигнал SIGSPEC доставлен. SIGSPEC может быть номером сигнала или именем сигнала, например, SIGHUP (или просто HUP). -
-Sили--no-scope-shadowingпозволяет функции получать доступ к переменным вызывающих функций. Обычно любые переменные внутри функции с тем же именем, что и переменные вызывающей функции, "затеняются", и их содержимое независимо от вызывающей функции. -
-Vили--inherit-variable NAMEсоздаёт снимок значения переменнойNAMEи определяет локальную переменную с тем же именем и значением при выполнении функции.
Если пользователь введёт дополнительные аргументы после функции, они будут добавлены в массив переменных переменных $argv. Если указан параметр --argument-names, аргументы также присваиваются указанным в этом параметре именам.
Используя один из переключателей обработчиков событий, можно заставить функцию автоматически выполняться в определённые моменты. Пользователь может генерировать новые события с помощью встроенной команды emit. Fish генерирует следующие именованные события:
-
fish_prompt, которое генерируется всякий раз, когда собирается отобразить новое приглашение fish. -
fish_command_not_found, которое генерируется всякий раз, когда поиск команды завершился неудачно. -
fish_preexec, которое генерируется непосредственно перед выполнением интерактивной команды. Командная строка передаётся как первый параметр.Примечание: Это событие будет генерироваться даже если команда неверна. Параметр командной строки включает всю командную строку дословно и может потенциально содержать новые строки.
-
fish_postexec, которое генерируется непосредственно после выполнения интерактивной команды. Командная строка передаётся как первый параметр.Примечание: Это событие будет генерироваться даже если команда неверна. Параметр командной строки включает всю командную строку дословно и может потенциально содержать новые строки.
Пример
function ll
ls -l $argv
end
будет выполнить команду ls с использованием параметра -l, передавая любые дополнительные файлы и переключатели в ls.
function mkdir -d "Create a directory and set CWD"
command mkdir $argv
if test $status = 0
switch $argv[(count $argv)]
case '-*'
case '*'
cd $argv[(count $argv)]
return
end
end
end
Это выполнит команду mkdir и, если она выполнится успешно, изменит текущую рабочую директорию на только что созданную.
function notify
set -l job (jobs -l -g)
or begin; echo "There are no jobs" >&; return 1; end
function _notify_job_$job --on-job-exit $job --inherit-variable job
echo -n \a ## beep
functions -e _notify_job_$job
end
end
Это воспроизведёт звуковой сигнал, когда завершится последняя задача.
Назад к индексу.
functions - вывод или удаление функций
Синтаксис
functions [ -a | --all ] [ -n | --names ] functions -c OLDNAME NEWNAME functions -d DESCRIPTION FUNCTION functions [ -e | -q ] FUNCTIONS...
Описание
functions выводит или удаляет функции.
Доступны следующие параметры:
-
-aили--allперечисляет все функции, даже те, имена которых начинаются с подчёркивания. -
-c OLDNAME NEWNAMEили--copy OLDNAME NEWNAMEсоздаёт новую функцию с именем NEWNAME, используя определение функции OLDNAME. -
-d DESCRIPTIONили--description=DESCRIPTIONизменяет описание этой функции. -
-eили--eraseприводит к удалению указанных функций. -
-nили--namesперечисляет имена всех определённых функций. -
-qили--queryпроверяет, существуют ли указанные функции.
По умолчанию, functions, вызываемая без аргументов, выводит имена всех определённых функций. Если не указан параметр -a, функции, имена которых начинаются с подчёркивания, не выводятся.
Если заданы любые параметры, не являющиеся параметрами, выводится определение указанных функций.
Автоматически загружаемые функции не могут быть удалены с помощью functions -e. Удалите файл определения или измените переменную $fish_function_path, чтобы удалить автоматически загружаемые функции.
Копирование функции с помощью -c копирует только тело функции и не переносит уведомления об событиях из оригинальной функции.
Описание только одной функции может быть изменено в одном вызове functions -d.
Код возврата functions — это количество функций в списке аргументов, которые не существуют, что может быть использовано в сочетании с параметром -q.
Примеры
functions -n # Displays a list of currently-defined functions functions -c foo bar # Copies the 'foo' function to a new function called 'bar' functions -e bar # Erases the function `bar`
Назад к индексу.
help - отображение документации fish
Синтаксис
help [SECTION]
Описание
help отображает документацию по fish.
Если указана SECTION, отображается справка по этой команде.
Если переменная окружения BROWSER установлена, она будет использоваться для отображения документации. В противном случае fish будет искать подходящий браузер.
Обратите внимание, что большинство встроенных команд отображают свою справку в терминале при указании параметра --help.
Пример
help fg отображает документацию для встроенной команды fg.
Назад к индексу.
history - отображение и управление историей команд
Синтаксис
history ( --merge | --save | --clear ) history ( --search | --delete ) [ --prefix "prefix string" | --contains "search string" ]
Описание
history используется для просмотра, поиска и удаления истории используемых команд.
Доступны следующие параметры:
-
--mergeнемедленно включает изменения истории из других сессий. Обычноfishигнорирует изменения истории из сессий, запущенных после текущей. Эта команда сразу применяет эти изменения. -
--saveсохраняет все изменения в файле истории. Оболочка автоматически сохраняет файл истории; этот параметр предназначен для внутреннего использования. -
--clearочищает файл истории. Перед удалением истории отображается приглашение. -
--searchвозвращает элементы истории в соответствии с параметрами--prefixили--contains. -
--deleteудаляет элементы истории. -
--prefixищет или удаляет элементы в истории, начинающиеся с указанной текстовой строки. -
--containsищет или удаляет элементы в истории, содержащие указанную текстовую строку.
Если --search указан без --contains или --prefix, предполагается --contains.
Если --delete указан без --contains или --prefix, будет удалён только элемент истории, который точно соответствует параметру. Приглашение не будет выводиться. Если --delete указан с одним из этих параметров, перед удалением элементов будет выведено интерактивное приглашение.
Примеры
history --clear # Deletes all history items history --search --contains "foo" # Outputs a list of all previous commands containing the string "foo". history --delete --prefix "foo" # Interactively deletes the record of previous commands which start with "foo".
Назад к индексу.
if - условное выполнение команды
Синтаксис
if CONDITION; COMMANDS_TRUE...; [else if CONDITION2; COMMANDS_TRUE2...;] [else; COMMANDS_FALSE...;] end
Описание
if выполнит команду CONDITION. Если код возврата условия равен 0, будут выполнены команды COMMANDS_TRUE. Если код возврата не равен 0 и указан else, будет выполнена COMMANDS_FALSE.
Для использования кода возврата нескольких команд в качестве условия блока if, используйте begin; ...; end и команды короткого замыкания and и or.
Код возврата последней завершившейся фоновой команды всегда доступен через переменную $status.
Пример
Следующий код выведет foo.txt exists если файл foo.txt существует и является обычным файлом, в противном случае он выведет bar.txt exists если файл bar.txt существует и является обычным файлом, в противном случае он выведет foo.txt and bar.txt do not exist.
if test -f foo.txt
echo foo.txt exists
else if test -f bar.txt
echo bar.txt exists
else
echo foo.txt and bar.txt do not exist
end
Назад к индексу.
isatty - проверка, является ли дескриптор файла терминалом.
Синтаксис
isatty [FILE DESCRIPTOR]
Описание
isatty проверяет, является ли дескриптор файла терминалом.
FILE DESCRIPTOR может быть либо номером дескриптора файла, либо одной из строк stdin, stdout, или stderr.
Если указанный дескриптор файла является терминалом, код возврата команды равен нулю. В противном случае код возврата — ненулевое значение. Сообщения не выводятся в стандартную ошибку.
Примеры
В интерактивной оболочке команды ниже завершаются с возвращаемым значением 0:
isatty isatty stdout isatty 2 echo | isatty 1
А эти завершатся ненулевым значением:
echo | isatty isatty 9 isatty stdout > file isatty 2 2> file
Вернуться к индексу.
jobs - вывод текущих выполняемых задач
Синопсис
jobs [OPTIONS] [PID]
Описание
jobs выводит список текущих выполняемых задач и их статус.
jobs принимает следующие переключатели:
-
-cили--commandвыводит имя команды для каждого процесса в заданиях. -
-gили--groupвыводит только идентификатор группы каждой задачи. -
-lили--lastвыводит только последнюю запущенную задачу. -
-pили--pidвыводит идентификатор процесса для каждого процесса во всех заданиях.
В системах, поддерживающих эту функцию, jobs будет выводить использование ЦП каждой задачи с момента выполнения последней команды. Использование ЦП выражается в процентах от полной активности ЦП. Обратите внимание, что в многопроцессорных системах общая активность может превышать 100%.
Пример
jobs выводит сводку текущих задач.
Вернуться к индексу.
math - Выполнение математических вычислений
Синопсис
math EXPRESSION
Описание
math используется для выполнения математических вычислений. Это очень тонкий обертка для программы bc, что позволяет указать выражение из командной строки без использования нестандартных расширений или конвейера.
Для описания синтаксиса, поддерживаемого math, см. руководство для программы bc. Имейте в виду, что расширение параметров происходит для всех выражений перед их оценкой. Это может быть очень полезно для выполнения вычислений, связанных с переменными оболочки или выводом подстановок команд, но это также означает, что скобки необходимо экранировать.
Примеры
math 1+1 выводит 2.
math $status-128 выводит числовой выходной статус последней команды минус 128.
Вернуться к индексу.
mimedb - поиск информации о файле через базу данных mime
Синопсис
mimedb [OPTIONS] FILES...
Описание
mimedb запрашивает базу данных типов MIME и файлы .desktop установленные на системе, чтобы найти информацию о файлах, указанных в FILES. Информация, которую mimedb может получить, включает тип MIME для файла, описание типа и стандартное действие, которое может быть выполнено с файлом. mimedb также может использоваться для запуска стандартного действия для этого файла.
Доступны следующие параметры:
-
-t,--input-file-dataопределяет тип файлов по имени файла и по содержимому (по умолчанию). -
-f,--input-filenameопределяет тип файлов по имени файла. -
-i,--input-mimeуказывает, что аргументы не являются файлами, а типами MIME. -
-m,--output-mimeвыводит тип MIME каждого файла (по умолчанию). -
-f,--output-descriptionвыводит описание каждого типа MIME. -
-a,--output-actionвыводит стандартное действие каждого типа MIME. -
-l,--launchзапускает стандартное действие для указанных файлов. -
-v,--versionотображает номер версии и завершает работу.
Вернуться к индексу.
nextd - переход вперёд по истории каталогов
Синопсис
nextd [ -l | --list ] [POS]
Описание
nextd переходит вперёд на POS позиций в истории посещённых каталогов; если достигнут конец истории, выводится предупреждение.
Если задан флаг -l или --list, текущая история каталогов также будет отображена.
Пример
cd /usr/src # Working directory is now /usr/src cd /usr/src/fish-shell # Working directory is now /usr/src/fish-shell prevd # Working directory is now /usr/src nextd # Working directory is now /usr/src/fish-shell
Вернуться к индексу.
not - инвертировать выходной статус задачи
Синопсис
not COMMAND [OPTIONS...]
Описание
not инвертирует выходной статус другой команды. Если выходной статус равен нулю, not возвращает 1. В противном случае, not возвращает 0.
Пример
Следующий код сообщает об ошибке и завершает работу, если файл с именем spoon не найден.
if not test -f spoon
echo There is no spoon
exit 1
end
Вернуться к индексу.
open - открытие файла в его стандартном приложении
Синопсис
open FILES...
Описание
open открывает файл в его стандартном приложении, используя команду xdg-open если она существует, в противном случае команду mimedb.
Пример
open *.txt открывает все текстовые файлы в текущем каталоге с помощью стандартного текстового редактора вашей системы.
Вернуться к индексу.
or - условное выполнение команды
Синопсис
COMMAND1; or COMMAND2
Описание
or используется для выполнения команды, если текущий выходной статус (установленный последней предыдущей командой) не равен 0.
or не изменяет текущий выходной статус.
Выходной статус последней завершившейся фоновой команды всегда можно получить, используя переменную $status.
Пример
Следующий код выполняет команду make для сборки программы. Если сборка прошла успешно, программа устанавливается. Если любой шаг завершился ошибкой, выполняется make clean, который удаляет файлы, созданные процессом сборки.
make; and make install; or make clean
Вернуться к индексу.
popd - перемещение по стеку каталогов
Синопсис
popd
Описание
popd удаляет верхний каталог из стека каталогов и изменяет текущий каталог на новый верхний каталог. Используйте pushd, чтобы добавить каталоги в стек.
Пример
pushd /usr/src # Working directory is now /usr/src # Directory stack contains /usr/src pushd /usr/src/fish-shell # Working directory is now /usr/src/fish-shell # Directory stack contains /usr/src /usr/src/fish-shell popd # Working directory is now /usr/src # Directory stack contains /usr/src
Вернуться к индексу.
prevd - перемещение назад по истории каталогов
Синопсис
prevd [ -l | --list ] [POS]
Описание
prevd перемещает назад на POS позиций в истории посещённых каталогов; если достигнут начальный элемент истории, выводится предупреждение.
Если задан флаг -l или --list, текущая история также будет отображена.
Пример
cd /usr/src # Working directory is now /usr/src cd /usr/src/fish-shell # Working directory is now /usr/src/fish-shell prevd # Working directory is now /usr/src nextd # Working directory is now /usr/src/fish-shell
Вернуться к индексу.
psub - выполнение подстановки процесса
Синопсис
COMMAND1 ( COMMAND2 | psub [-f] )
Описание
Оболочки Posix имеют синтаксис, который является смесью подстановки команды и конвейеризации, называемой подстановкой процесса. Она используется для отправки вывода команды в вызывающую команду, подобно подстановке команды, но с тем отличием, что вывод не передаётся через аргументы командной строки, а через именованную трубу, а имя именованной трубы передаётся в качестве аргумента вызываемой программе. psub в сочетании с обычной подстановкой команды обеспечивает ту же функциональность.
Если переключатель -f или --file задан для psub, psub будет использовать обычный файл вместо именованной трубы для связи с вызывающим процессом. Это заставит psub быть значительно медленнее при работе с большими объёмами данных, но имеет преимущество, что процесс чтения может искать в потоке.
Пример
diff (sort a.txt | psub) (sort b.txt | psub) # shows the difference between the sorted versions of files `a.txt` and `b.txt`.
Вернуться к индексу.
pushd - добавить каталог в стек каталогов
Синопсис
pushd [DIRECTORY]
Описание
Функция pushd добавляет DIRECTORY в верхнюю часть стека каталогов и делает его текущим рабочим каталогом. popd вытащит его и вернётся в исходный каталог.
Пример
pushd /usr/src # Working directory is now /usr/src # Directory stack contains /usr/src pushd /usr/src/fish-shell # Working directory is now /usr/src/fish-shell # Directory stack contains /usr/src /usr/src/fish-shell popd # Working directory is now /usr/src # Directory stack contains /usr/src
Вернуться к индексу.
pwd - вывод текущего рабочего каталога
Синопсис
pwd
Описание
pwd выводит (печатает) текущий рабочий каталог.
Обратите внимание, что fish всегда разрешает символические ссылки в пути текущего каталога.
Вернуться к индексу.
random - генерировать случайное число
Синопсис
random [SEED]
Описание
random выводит случайное число от 0 до 32766 включительно.
Если предоставлено значение SEED, оно используется для инициализации генератора случайных чисел, и вывод не будет произведён. Это может быть полезно для целей отладки, где желательно получить одну и ту же последовательность случайных чисел несколько раз. Если генератор случайных чисел вызывается без предварительной инициализации, текущее время будет использоваться в качестве начального значения.
Пример
Следующий код будет отсчитывать от случайного числа до 1:
for i in (seq (random) -1 1)
echo $i
sleep
end
Вернуться к индексу.
read - чтение строки ввода в переменные
Синопсис
read [OPTIONS] [VARIABLES...]
Описание
read считывает одну строку из стандартного ввода и сохраняет результат в одну или несколько переменных оболочки.
Доступны следующие параметры:
-
-c CMDили--command=CMDустанавливает начальную строку в буфере команд интерактивного режима вCMD. -
-gили--globalделает переменные глобальными. -
-lили--localделает переменные локальными. -
-m NAMEили--mode-name=NAMEуказывает, что имя NAME должно использоваться для сохранения/загрузки файла истории. Если NAME — fish, доступна стандартная история fish. -
-n NCHARSили--nchars=NCHARSзаставляетreadвозвращаться после чтения NCHARS символов вместо ожидания полной строки ввода. -
-p PROMPT_CMDили--prompt=PROMPT_CMDиспользует вывод командной оболочкиPROMPT_CMDв качестве приглашения для интерактивного режима. Команда по умолчанию —set_color green; echo read; set_color normal; echo "> ". -
-R RIGHT_PROMPT_CMDили--right-prompt=RIGHT_PROMPT_CMDиспользует вывод командной оболочкиRIGHT_PROMPT_CMDв качестве правого приглашения для интерактивного режима. Нет команды правого приглашения по умолчанию. -
-sили--shellвключает подсветку синтаксиса, автодополнение и завершение команд, подходящих для ввода кода shellscript в интерактивном режиме. -
-uили--unexportпредотвращает экспорт переменных в дочерние процессы (по умолчанию). -
-Uили--universalзаставляет указанную переменную оболочки стать универсальной. -
-xили--exportэкспортирует переменные в дочерние процессы. -
-aили--arrayсохраняет результат в качестве массива. -
-zили--nullчитает до символа NUL вместо новой строки. Отключает интерактивный режим.
read считывает одну строку ввода со стандартного ввода, разбивает её на токены на основе переменной оболочки IFS, а затем присваивает один токен каждой переменной, указанной в VARIABLES. Если токенов больше, чем переменных, весь остаток присваивается последней переменной. В качестве специального случая, если IFS установлена в пустую строку, каждый символ ввода рассматривается как отдельный токен.
Если указаны -a или --array, разрешено только одно имя переменной, и токены хранятся как массив в этой переменной.
См. документацию по set для получения более подробной информации о правилах области видимости переменных.
Пример
Следующий код сохраняет значение 'hello' в переменной оболочки $foo.
echo hello|read foo
Назад к индексу.
return - остановка текущей внутренней функции
Синтаксис
function NAME; [COMMANDS...;] return [STATUS]; [COMMANDS...;] end
Описание
return останавливает выполняемую функцию. Код выхода устанавливается в STATUS при его указании.
Обычно он добавляется внутри условного блока, такого как оператор if или switch, для условной остановки выполнения функции и возврата к вызывающей функции, но также может использоваться для задания кода выхода функции.
Пример
Следующий код является реализацией команды false как функции fish
function false
return 1
end
Назад к индексу.
set - отображение и изменение переменных оболочки.
Синтаксис
set [SCOPE_OPTIONS] set [OPTIONS] VARIABLE_NAME VALUES... set [OPTIONS] VARIABLE_NAME[INDICES]... VALUES... set ( -q | --query ) [SCOPE_OPTIONS] VARIABLE_NAMES... set ( -e | --erase ) [SCOPE_OPTIONS] VARIABLE_NAME set ( -e | --erase ) [SCOPE_OPTIONS] VARIABLE_NAME[INDICES]...
Описание
set управляет переменными оболочки.
Если set вызывается без аргументов, выводится имя и значение всех переменных оболочки. Если указаны некоторые флаги области видимости или экспорта, выводятся только переменные, соответствующие заданной области видимости.
С именами и значениями переменных set присваивает переменной VARIABLE_NAME значения VALUES....
Следующие параметры управляют областью видимости переменных:
-
-lили--localпринудительно задаёт указанной переменной оболочки область видимости, локальную для текущего блока, даже если переменная с таким именем существует и не является локальной -
-gили--globalзадаёт указанной переменной оболочки глобальную область видимости. Неглобальные переменные исчезают при завершении блока, к которому они принадлежат -
-Uили--universalзадаёт указанной переменной оболочки универсальную область видимости. Если этот параметр указан, переменная будет общая для всех текущих экземпляров fish у всех пользователей на данном компьютере и сохранится при перезапуске оболочки. -
-xили--exportэкспортирует указанную переменную оболочки в дочерние процессы (делая её «переменной среды») -
-uили--unexportпредотвращает экспорт указанной переменной оболочки в дочерние процессы
Доступны следующие параметры:
-
-eили--eraseудаляет указанную переменную оболочки -
-qили--queryпроверяет, определены ли указанные имена переменных. Ничего не выводит, но код выхода встроенных команд — количество переменных, указанных, которые не были определены. -
-nили--namesВыводит только имена всех определенных переменных, а не их значения -
-Lили--longне сокращает длинные значения при выводе переменных set
Если переменной присвоено более одного значения, переменная будет массивом со указанными элементами. Если переменной присвоено ноль элементов, она станет массивом с нулём элементов.
Если имя переменной является одним или несколькими элементами массива, например PATH[1 3 7], будут изменены только указанные элементы массива. При указании индексов массива в set, могут использоваться несколько аргументов для указания дополнительных индексов, например set PATH[1] PATH[4] /bin /sbin. Если вы указываете отрицательный индекс при расширении или присваивании переменной массива, индекс будет рассчитываться с конца массива. Например, индекс -1 означает последний индекс массива.
Правила области видимости при создании или обновлении переменной:
- Если переменная явно задана как универсальная, глобальная или локальная, это значение будет учтено. Если переменная с таким же именем существует в другой области видимости, эта переменная не будет изменена.
- Если переменная явно не задана как универсальная, глобальная или локальная, но была определена ранее, используется предыдущая область видимости переменной.
- Если переменная не явно задана как универсальная, глобальная или локальная и никогда ранее не была определена, переменная будет локальной для текущей выполняемой функции. Обратите внимание, что это отличается от использования флага
-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, white и normal.
Если ваш терминал поддерживает term256 (современные xterms и OS X Lion), вы можете указать значение RGB с тремя или шестью шестнадцатеричными цифрами, например A0FF33 или f2f. fish выберет ближайший поддерживаемый цвет.
Доступны следующие параметры:
-
-b,--backgroundCOLORзадаёт цвет фона. -
-c,--print-colorsпечатает список всех допустимых имён цветов. -
-o,--boldзадаёт режим полужирного или дополнительного яркого текста. -
-u,--underlineзадаёт режим подчёркивания.
Вызов set_color normal установит цвет терминала в стандартный цвет терминала.
Некоторые терминалы используют последовательность escape --bold для переключения на набор более ярких цветов. В таких терминалах set_color white приведет к серому цвету шрифта, а set_color --bold white - к белому.
Не все эмуляторы терминалов поддерживают все эти функции.
set_color использует базу данных terminfo для поиска способа изменения цвета терминала в зависимости от используемого терминала. Некоторые системы имеют старые и неполные базы данных terminfo и могут не иметь информации о цвете для терминалов, которые его поддерживают.
Примеры
set_color red; echo "Roses are red" set_color blue; echo "Violets are blue" set_color 62A; echo "Eggplants are dark purple" set_color normal; echo "Normal is nice too"
Назад к индексу.
source - выполнение содержимого файла.
Синтаксис
source FILENAME [ARGUMENTS...]
Описание
source выполняет команды из указанного файла в текущей оболочке. Это отличается от запуска нового процесса для выполнения команд (т.е. fish < FILENAME) поскольку команды будут выполняться текущей оболочкой, что означает, что изменения в переменных оболочки повлияют на текущую оболочку. Если после имени файла указаны дополнительные аргументы, они будут вставлены в переменную $argv.
Если файл не указан или имя файла '-', будет считан стандартный ввод.
Код возврата source — код возврата последней задачи для выполнения. Если что-то пойдёт не так при открытии или чтении файла, source завершается с ненулевым кодом.
. (одна точка) — псевдоним для команды source. Использование . устарело и рекомендуется использовать source, а . будет удалено в будущей версии fish.
Пример
source ~/.config/fish/config.fish # Causes fish to re-read its initialization file.
Вернуться к индексу.
status — запрос информации о состоянии выполнения fish
Краткое описание
status [OPTION]
Описание
Без аргументов, status отображает сводку текущего состояния входа и управления задачами в оболочке.
Доступны следующие опции:
-
-cили--is-command-substitutionвозвращает 0, если fish в данный момент выполняет подстановку команды. -
-bили--is-blockвозвращает 0, если fish в данный момент выполняет блок кода. -
-iили--is-interactiveвозвращает 0, если fish интерактивен — то есть подключён к клавиатуре. -
-lили--is-loginвозвращает 0, если fish — оболочка входа — то есть, если fish должен выполнить задачи входа, такие как настройка PATH. -
--is-full-job-controlвозвращает 0, если включено полное управление задачами. -
--is-interactive-job-controlвозвращает 0, если включено интерактивное управление задачами. -
--is-no-job-controlвозвращает 0, если управление задачами не включено. -
-fили--current-filenameвыводит имя файла текущего выполняемого скрипта. -
-nили--current-line-numberвыводит номер строки текущего выполняемого скрипта. -
-j CONTROLTYPEили--job-control=CONTROLTYPEустанавливает тип управления задачами, который может бытьnone,full, илиinteractive. -
-tили--print-stack-traceпечатает трассировку стека всех вызовов функций в стеке вызовов.
Вернуться к индексу.
switch — условное выполнение блока команд
Краткое описание
switch VALUE; [case [WILDCARD...]; [COMMANDS...]; ...] end
Описание
switch выполняет один из нескольких блоков команд в зависимости от того, совпадает ли заданное значение с одним из нескольких значений с подстановкой шаблонов. case используется совместно с оператором switch, чтобы определить, какой блок следует выполнить.
Каждой команде case передаётся один или несколько параметров. Первая команда case с параметром, соответствующим строке, указанной в команде switch, будет обработана. case параметры могут содержать подстановки шаблонов. Для предотвращения расширения подстановок шаблонов с именами файлов, эти подстановки необходимо экранировать или заключить в кавычки.
Обратите внимание, что fish не переходит к следующему случаю в операторах выбора. Выполняется только первый совпадающий случай.
Обратите внимание, что подстановки команд в операторе выбора будут обрабатываться даже если его тело не выполняется. Все подстановки, включая подстановки команд, должны быть выполнены до того, как значение можно будет сравнить с параметром.
Пример
Если переменная $animal содержит название животного, следующий код попытается его классифицировать:
switch $animal
case cat
echo evil
case wolf dog human moose dolphin whale
echo mammal
case duck goose albatross
echo bird
case shark trout stingray
echo fish
case '*'
echo I have no idea what a $animal is
end
Если вышеуказанный код был запущен с $animal установленным в whale, вывод будет mammal.
Вернуться к индексу.
test — выполнение тестов файлов и текста
Краткое описание
test [EXPRESSION] [ [EXPRESSION] ]
Описание
Проверяет заданное выражение и устанавливает код возврата в 0, если оно истинно, и в 1, если ложно. Выражение состоит из одного или нескольких операторов и их аргументов.
Первый формат (test) предпочтительнее. Для совместимости с другими оболочками доступен второй формат: соответствующая пара квадратных скобок ([ [EXPRESSION ] ]).
Доступны следующие операторы для проверки файлов и каталогов:
-
-b FILEвозвращает true, еслиFILE— блочный устройство. -
-c FILEвозвращает true, еслиFILE— символьное устройство. -
-d FILEвозвращает true, еслиFILE— каталог. -
-e FILEвозвращает true, еслиFILEсуществует. -
-f FILEвозвращает true, еслиFILE— обычный файл. -
-g FILEвозвращает true, если уFILEустановлен бит установления группы. -
-G FILEвозвращает true, еслиFILEсуществует и имеет такой же идентификатор группы, как у текущего пользователя. -
-L FILEвозвращает true, еслиFILE— символическая ссылка. -
-O FILEвозвращает true, еслиFILEсуществует и принадлежит текущему пользователю. -
-p FILEвозвращает true, еслиFILE— именованная труба. -
-r FILEвозвращает true, еслиFILEпомечен как читаемый. -
-s FILEвозвращает true, если размерFILEбольше нуля. -
-S FILEвозвращает true, еслиFILE— сокет. -
-t FDвозвращает true, если дескриптор файлаFD— терминал (TTY). -
-u FILEвозвращает true, если уFILEустановлен бит установления пользователя. -
-w FILEвозвращает true, еслиFILEпомечен как записываемый; обратите внимание, что это не проверяет, является ли файловая система только для чтения. -
-x FILEвозвращает true, еслиFILEпомечен как исполняемый.
Доступны следующие операторы для сравнения и проверки текстовых строк:
-
STRING1 = STRING2возвращает true, если строкиSTRING1иSTRING2идентичны. -
STRING1 != STRING2возвращает true, если строкиSTRING1иSTRING2не идентичны. -
-n STRINGвозвращает true, если длинаSTRINGненулевая. -
-z STRINGвозвращает true, если длинаSTRINGравна нулю.
Доступны следующие операторы для сравнения и проверки чисел:
-
NUM1 -eq NUM2возвращает true, еслиNUM1иNUM2численно равны. -
NUM1 -ne NUM2возвращает true, еслиNUM1иNUM2численно не равны. -
NUM1 -gt NUM2возвращает true, еслиNUM1больше, чемNUM2. -
NUM1 -ge NUM2возвращает true, еслиNUM1больше или равноNUM2. -
NUM1 -lt NUM2возвращает true, еслиNUM1меньше, чемNUM2. -
NUM1 -le NUM2возвращает true, еслиNUM1меньше или равноNUM2.
Обратите внимание, что поддерживаются только целые числа. Для более сложных математических операций, включая дроби, может быть полезной программа env. Обратитесь к документации вашей операционной системы.
Выражения могут быть объединены с помощью следующих операторов:
-
COND1 -a COND2возвращает true, если обаCOND1иCOND2истинны. -
COND1 -o COND2возвращает true, если либоCOND1, либоCOND2истинны.
Выражения можно инвертировать с помощью оператора !:
-
! EXPRESSIONвозвращает true, еслиEXPRESSIONложно, и ложно, еслиEXPRESSIONистинно.
Выражения можно сгруппировать с помощью скобок.
-
( EXPRESSION )возвращает значениеEXPRESSION.Обратите внимание, что скобки обычно требуют экранирования с помощью
\(, чтобы избежать их интерпретации как подстановки команд.
Примеры
Если каталог /tmp существует, скопировать файл /etc/motd в него:
if test -d /tmp
cp /etc/motd /tmp/motd
end
Если переменная MANPATH определена и не пуста, выведите её содержимое. (Если MANPATH не определена, она будет расширена до нулевых аргументов, если не заключена в кавычки.)
if test -n "$MANPATH"
echo $MANPATH
end
Скобки и операторы -o и -a можно комбинировать для создания более сложных выражений. В этом примере печать «success» происходит, если существует файл /foo или /bar, а также файл /baz или /bat.
if test \( -f /foo -o -f /bar \) -a \( -f /baz -o -f /bat \)
echo Success.
end.
Стандарты
test реализует подмножество стандарта IEEE Std 1003.1-2008 (POSIX.1). Следующие исключения применяются:
- Операторы
<и>для сравнения строк не реализованы. -
Поскольку данная функция test является встроенной функцией оболочки, а не автономной утилитой, использование флага -c для специальных дескрипторов файлов, таких как стандартный ввод и вывод, может не давать того же результата при вызове из канала, что и при вызове утилиты
testв другой оболочке.В таких случаях можно использовать
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 # Outputs the string 'fg is a shell builtin'.
Назад к индексу.
ulimit - установка или получение пределов использования ресурсов
Краткое описание
ulimit [OPTIONS] [LIMIT]
Описание
Встроенная команда ulimit устанавливает или выводит пределы использования ресурсов оболочки и всех процессов, запущенных ею. Если новое значение предела опущено, выводится текущее значение предела ресурса; в противном случае указанный предел устанавливается на новое значение.
Используйте один из следующих ключей, чтобы указать, какой предел ресурсов установить или получить:
-
-cили--core-size: максимальный размер созданных файлов core. Установив этот предел в ноль, можно отключить создание файлов core. -
-dили--data-size: максимальный размер сегмента данных процесса. -
-fили--file-size: максимальный размер файлов, созданных оболочкой. -
-lили--lock-size: максимальный размер, который может быть заблокирован в памяти. -
-mили--resident-set-size: максимальный размер набора резидентных процессов. -
-nили--file-descriptor-count: максимальное число открытых дескрипторов файлов (на большинстве систем это значение нельзя установить). -
-sили--stack-size: максимальный размер стека. -
-tили--cpu-time: максимальное время работы процессора в секундах. -
-uили--process-count: максимальное количество процессов, доступных одному пользователю. -
-vили--virtual-memory-sizeМаксимальный объем виртуальной памяти, доступной оболочке.
Обратите внимание, что не все эти пределы доступны во всех операционных системах.
Значение предела может быть числом в указанных единицах измерения ресурса или одним из специальных значений hard, soft, или unlimited, которые обозначают текущий жёсткий предел, текущий мягкий предел и отсутствие предела, соответственно.
Если предел задан, это новое значение указанного ресурса. Если опция не указана, предполагается -f. Значения указаны в килобайтах, за исключением -t, которое указано в секундах, и -n и -u, которые представляют собой не масштабируемые значения. Статус возврата равен 0, если не указана недопустимая опция или аргумент, или при ошибке при установке нового предела.
ulimit также принимает следующие ключи, определяющие тип устанавливаемого предела:
-
-Hили--hardустанавливает жёсткий предел ресурса -
-Sили--softустанавливает мягкий предел ресурса
Жёсткий предел может быть только уменьшен. После установки его нельзя увеличить; мягкий предел может быть увеличен до значения жёсткого предела. Если ни -H, ни -S не указаны, и мягкий и жёсткий пределы обновляются при присвоении нового значения предела, и мягкий предел используется при сообщении о текущем значении.
Следующие дополнительные опции также понятны для ulimit:
-
-aили--allвыводит все текущие пределы
Реализация fish ulimit должна вести себя идентично реализации в bash, за исключением этих различий:
- Fish
ulimitподдерживает GNU-стилевые длинные опции для всех ключей - Fish
ulimitне поддерживает опцию-pдля получения размера канала. Реализация bash состоит из проверки времени компиляции, которая эмпирически угадывает это число, записывая в канал и ожидая SIGPIPE. Fish этого не делает, так как этот метод определения размера канала ненадежен. В зависимости от версии bash, может быть и больше дополнительных пределов для установки в bash, которых нет в fish. - Fish
ulimitне поддерживает получение или установку нескольких пределов в одной команде, за исключением вывода всех значений с помощью ключа -a
Пример
ulimit -Hs 64 устанавливает жёсткий предел размера стека в 64 КБ.
Назад к индексу.
umask - установка или получение маски режима создания файлов
Краткое описание
umask [OPTIONS] [MASK]
Описание
umask отображает и изменяет "umask", или маску режима создания файлов, которая используется для ограничения доступа по умолчанию к файлам.
Маска umask может быть выражена либо как восьмеричное число, которое представляет права, которые будут удалены по умолчанию, либо символически, что представляет только права, которые будут предоставлены по умолчанию.
Права доступа описаны в руководстве по программе chmod(1).
Без параметров выводится текущая маска режима создания файлов в восьмеричном формате.
-
-hили--helpвыводит это сообщение. -
-Sили--symbolicвыводит umask в символическом формате вместо восьмеричного. -
-pили--as-commandвыводит umask в форме, которая может быть повторно использована в качестве входных данных.
Если числовая маска указана в качестве параметра, текущий umask оболочки будет установлен на это значение, и права, заданные этой маской, будут удалены из новых файлов и каталогов по умолчанию.
Если указана символическая маска, желаемые биты разрешения, а не их инверсия, должны быть указаны. Символическая маска — это список прав, разделённый запятыми. Каждое право состоит из трёх частей:
- Первая часть определяет, к кому относятся эти права, и может быть одной из
u,g,oилиa, гдеuопределяет пользователя, владеющего файлом,gопределяет владельца группы файла,oопределяет права других пользователей иaопределяет, что все три должны быть изменены. - Вторая часть права определяет режим и может быть одной из
=,+или-, где=определяет, что права должны быть установлены на новое значение,+определяет, что указанные права должны быть добавлены к ранее указанным, и-определяет, что указанные права должны быть удалены из ранее указанных. - Третья часть права определяет, какие права должны быть изменены, и может быть любой комбинацией
r,wиx, представляющих права чтения, записи и выполнения.
Если первая и вторая части пропущены, они предполагаются a и =, соответственно. Например, r,u+w означает, что все пользователи должны иметь права чтения, а владелец файла также должен иметь права записи.
Обратите внимание, что символические маски в настоящее время не работают должным образом.
Пример
umask 177 или umask u=rw устанавливает маску создания файлов для чтения и записи владельцем и без прав для всех остальных пользователей.
Назад к индексу.
vared - интерактивное редактирование значения переменной окружения
Краткое описание
vared VARIABLE_NAME
Описание
vared используется для интерактивного редактирования значения переменной окружения. Массивы переменных целиком редактировать с помощью vared нельзя, но можно редактировать отдельные элементы массива.
Пример
vared PATH[3] редактирует третий элемент массива PATH
Назад к индексу.
while - многократное выполнение команды
Краткое описание
while CONDITION; COMMANDS...; end
Описание
while многократно выполняет CONDITION, и если статус завершения равен 0, то выполняет COMMANDS.
Если статус завершения CONDITION не равен нулю на первой итерации, COMMANDS не будет выполнен вообще.
Используйте begin; ...; end для сложных условий; более сложный контроль может быть достигнут с while true содержащим break.
Пример
while test -f foo.txt; echo file exists; sleep 10; end # outputs 'file exists' at 10 second intervals as long as the file foo.txt exists.
Назад к индексу.
© 2005–2009 Axel Liljencrantz
Licensed under the GNU General Public License, version 2.
https://fishshell.com/docs/2.2/commands.html