Что относительно того, чтобы использовать awk с [
как разделитель записей и пространство как разделитель полей. Это дает нам легко данные, которые будут помещены в файл как $0
где он должен отложить удаленное продвижение [
и имя файла как $1
. Мы затем только должны обработать особый случай 1-й записи, которая пуста. Это дает нам:
awk -v "RS=[" -F " " 'NF != 0 {print "[" $0 > $1}' entry.txt
Эта команда
env name=value name2=value2 program and args
выполняет команду program and args
со средой, сформированной путем расширения текущей среды с помощью переменных среды и значений, определяемых name=value
и name2=value2
. Если Вы не включаете аргументов как name=value
, затем текущая среда проведена неизмененная.
Ключевая вещь, которая происходит относительно псевдонимов, состоит в том, что ENV является внешней командой, таким образом, он не имеет никакого “знания” псевдонимов: псевдонимы являются конструкцией оболочки, которые не являются частью нормальной модели процесса и не оказывают влияния на программы, которые непосредственно запущены непрограммными оболочками (как ENV). ENV просто передает program and arguments
к исполнительному вызову (как execvp, который будет искать ПУТЬ program
).
В основном использование ENV как это является (главным образом) независимым от оболочки способом избежать, чтобы псевдонимы, функции оболочки, окружили встроенные команды и любые другие биты функциональности оболочки, которая могла бы заменить или переопределить позиционные командой аргументы (т.е. названия программы) — если, конечно, env
псевдоним или функция оболочки! Если Вы волнуетесь по поводу env
будучи псевдонимом, Вы могли обстоятельно объяснить полный путь (например. /usr/bin/env
, хотя это может варьироваться).
Другое важное использование env
(кроме хитрости поиска псевдонима команды), то, что это ищет PATH
для команды. Это важно, где полные пути требуются, но варьируются от системы до системы.
Например, начиная сценарий Bash с #!/bin/bash
хорошо, тогда как #!bash
не, несмотря на /bin
быть включенным в PATH
в каждой разумной системе.
Я часто встречался с этим в программах Python, которые обычно начинаются #!/usr/bin/env python
постараться не указывать весь, системно-зависимый путь python
исполняемый файл (отмечают, однако, что он все еще требует этого env
находится в /usr/bin
, это однако намного более распространено, чем местоположение двоичного файла Python).