Как я делаю вставляемые команды оболочки невидимыми?

#!/bin/bash

cobol_program &
echo "The COBOL program is running in the background with PID: $!"

Посмотрите man страница для bash под 'Специальными Параметрами'

2
11.04.2014, 21:44
3 ответа

Вы должны mkfifo установить двунаправленный |pipe между двумя машинами и написать на него, вместо того, чтобы полагаться на вставку в шпаклевочный терминал. Но если вы должны использовать шпаклевку, то вы должны выключить управление ее потоком в настройках и использовать режим raw - stty raw на стороне хоста и найти опцию raw terminal в настройках шпаклевки.

.
0
27.01.2020, 21:54

Вы можете приблизиться к тому, что вам нужно, используя буфер альтернативного экрана.
Большинство терминальных эмуляторов (all?) имеют 2 экранных буфера, между которыми можно переключаться. Таким образом, вы переключаетесь на альтернативный экранный буфер, выполняете команды, а затем снова переключаетесь на основной.

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

tput smcup

И в конце выполните

tput rmcup

Однако на экране все равно отобразится команда tput smcup.
Единственный способ скрыть команду - добавить к ней привязку ключа (например, ESC+t). Я знаю, что zsh может сделать это, но я не знаю о csh.


Если у вас нет команды tput, вы можете эхом выдать необработанные эвакуационные коды.
Для шпаклевки это будет:

echo -e '\e[?47h'

и

echo -e '\e[2J\e[?47l'
2
27.01.2020, 21:54

Я не знаком с AutoHotKey, поэтому если вы не можете найти решение там, читайте дальше.

POSIX определяет команду read, которая позволяет принимать строку ввода, подавляя эхо терминала (то, что вы видите при вводе) с помощью -s. Это также встроенная функция bash, но вы можете проверить свою систему, чтобы убедиться, что она присутствует как отдельная.

В противном случае, ищите здесь, вы можете сделать то же самое, используя stty (еще один отдельный инструмент) с помощью csh:

stty -echo # turn echo off
# do your input
stty echo # turn echo back on
4
27.01.2020, 21:54

Теги

Похожие вопросы