Терминал является наблюдателем процесса, такого как оболочка. Сам терминал не выполняет никаких команд -, которые предназначены для оболочки -, но без терминала вы не можете взаимодействовать с оболочкой или любой программой, которую она запускает.
Обычно, когда вы закрываете окно терминала, оно отправляет командной оболочке сигнал закрыть его, что, в свою очередь, убивает любой запущенный там процесс.
Вы можете запустить процесс под screen
. Это создает «виртуальный терминал» для запуска оболочки. Ваше «настоящее» окно терминала может подключаться к этому сеансу screen
и управлять виртуальным терминалом, предоставленным screen
. Чистый эффект заключается в том, что он выглядит совершенно нормально, НО вы также можете отсоединиться от виртуального экрана и позволить оболочке продолжать работу.
screen # Create a leader and a virtual terminal/screen running a shell
screen -ls # List sessions (attached/detached)
screen -r # Reattach to the single detached session
screen -r {identifier} # Reattach to the named detached session
screen -md {command...} # Make a new detached session running {command...}
Наконец, Ctrl Ad отсоединяется от текущего сеанса и Ctrl A? дает вам список интерактивных команд.
Почему бы просто не сделать это:
replace="$(cat atana2)"
sed "s|127.0.0.1|$replace|" atana1
Двойные кавычки вместо одинарных заставляют sed
расширять переменную.
Выход:
location
allow 27.0.12.12;
deny all;
Как только вы убедитесь, что у вас есть то, что вы хотите:
sed -i "s|127.0.0.1|$replace|" atana1
Имейте в виду, что, хотя это не имеет никакого влияния на этот случай, если есть строка, такая как 127102031
, которая появляется перед тем, что вы хотите заменить, она также заменит ее, потому что .
будет расширяться до любого символа. Если у вас будет такой файл в будущем, обязательно замените его на определенную строку, например, в следующем примере:
location
allow 127.0.0.1; allow 127102031;
deny all;
127102031 127102031
Код:
sed "2s|127.0.0.1|$replace|" atana1
Это заменит первое вхождение во второй строке.
Выход:
location
allow 27.0.12.12; allow 127102031;
deny all;
127102031 127102031
Несколько экземпляров, как в следующем примере:
location
allow 127.0.0.1; allow 127102031;
deny all;
127102031 127102031
Второе вхождение во второй строке:
sed "2s|127.0.0.1|$replace|2" atana1
Выход:
location
allow 127.0.0.1; allow 27.0.12.12;
deny all;
127102031 127102031
Опять же, в этом случае вы можете без проблем использовать то, что у меня есть в первую очередь, но это просто для справки в будущем, когда файл может быть другим.
Пробовал командой awk
i=`cat `
awk -v i="$i" '{gsub("127.0.0.1",i,$0);print }' atana1
выход
location
allow 27.0.12.12;
deny all;