Способ сделать это — вывести процесс на другой TTY. Чтобы узнать имя вашего текущего tty, просто введите tty
. Это даст вам, например, /dev/pts/0
. Затем вы можете запускать такие команды, как
tail -f /permanent.log > /dev/pts/0 &
С помощью &
в конце вы отправляете процесс в фоновый режим, чтобы вы могли запускать больше команд. Для восстановления прока можно использовать команды jobs
и fg
.
Вы можете избежать обратных кавычек, используя обратную косую черту, как показано ниже:
echo "\`wc -l *\`"
Использовать одинарную -сильную кавычку:
printf '%s\n' '`wc -l *`'
И если вы хотите также включить одинарные кавычки в этот аргумент, переданный в printf
, вам нужно будет использовать другие кавычки для самого '
, например:
printf '%s\n' '`wc -l *` and a '"'"' character'
или:
printf '%s\n' '`wc -l *` and a '\'' character'
Другие альтернативы включают экранирование `
с обратной косой чертой в двойных кавычках:
printf '%s\n' "\`wc -l *\` and a ' character"
Или `
быть результатом некоторого расширения:
backtick='`'
printf '%s\n' "${backtick}wc -l *${backtick} and a ' character"
Также обратите внимание:
cat << 'EOF'
`wc -l *` and a ' character and a " character
EOF
для вывода произвольного текста, не беспокоясь о заключении в кавычки (обратите внимание на кавычки вокруг первогоEOF
).
Вы также можете:
var=$(cat << 'EOF'
echo '`wc -l *`'
EOF
)
Что с помощью ksh93
или mksh
вы можете оптимизировать до:
var=$(<<'EOF'
echo '`wc -l *`'
EOF
)
(также работает в zsh
, но по-прежнему запускает cat
в подоболочке там ), чтобы $var
буквально содержал echo '`wc -l *`'
.
В оболочке fish
вы можете встроить '
в '...'
с помощью\'
:
printf '%s\n' '`wc -l *` and a \' character'
но все равно `
там не особо, так что:
printf '%s\n' "`wc -l *` and a ' character"
тоже подойдет.
В rc, es или zsh -o rcquotes
вы можете вставить '
в '...'
с помощью''
:
printf '%s\n' '`wc -l *` and a '' character'
См. Как использовать специальный символ вместо обычного? для более подробной информации.
Чтобы экранировать любую произвольную последовательность символов, чтобы не обрабатывать специальные символы и не выполнять подстановку:
'
на'\''
Например:
`wc -l 'my file.txt'`
Становится
'`wc -l '\''my file.txt'\''`'
Обратите внимание, что если строка начинается или заканчивается на '
, вы получаете ''
в начале/конце, который ничего не делает и может быть удален, но допустимо оставить его там (, например. чтобы строка -экранировала функцию простой ).