Я не уверен, что понимаю, и я не знаком с ack-grep утилитой, но почему Вы не пытаетесь сократить из первого вхождения? к "?
Что-то как следующее:
По причине удобочитаемости я поместил тег HTML в переменную
var='<a href="http://example.com/fnord.layername.html?parameter=FOO-_-BAR-_-FNORD" class="poit">'
cut -d '?' -f 2- <(echo $var ) | cut -d '"' -f 1
Это звучит мне как Вы, хотят проверить, существует ли X-сервер для соединения с.
Что-то как:
if [ -n "$DISPLAY" ]; then
: X
else
: no X
fi
Если Вы означали различать интерактивный от неинтерактивных оболочек, использовать test
встроенная поддержка обнаружения его (не уверенный, если ksh имеет его, но двоичный файл от coreutils поддерживает его также):
test -t 0 # will return 0 for interactive shells
Если Вы действительно имели в виду, являетесь ли Вы на tty/pty/pts или чем-то еще, анализируете вывод от tty
:
$ tty # konsole
/dev/pts/4
$ tty # virtual terminal
/dev/tty2
Это будет зависеть от операционной системы. Для Linux Вы могли сделать это:
#!/bin/ksh
if [ "$TERM" == "linux" ]; then
echo "I'm in a virtual console"
else
echo "I'm not in a virtual console"
fi
Это, конечно, предполагает, что Вы не изменились TERM
переменная среды самостоятельно, которая автоматически установлена на linux
только, когда Вы входите в виртуальную консоль (в соответствии с Ubuntu, она установлена на xterm
в консольных приложениях, но это может варьироваться между Ose). Проверьте содержание ТЕРМИНА в различных приложениях, которые Вы используете, и набор как соответствующий.