Как заставить программу думать, что нет X-сервера, работающего

Для этого можно использовать grep и tail:

$ n=3
$ k=2
$ grep -m "$n" -A "$k" 'Draft' input.txt | tail -n "$k"
important line 1  
important line 2  
$ 

Опция -m "$n" для grep указывает остановиться после n-го совпадения, а -A "$k" указывает grep выводить k строк после каждого совпадения. Затем мы передаем это в tail -b "$k", чтобы вывести только эти k строк.

28
22.10.2018, 12:36
2 ответа

Обычно просто

unset DISPLAY

в командной строке -терминала. Некоторые приложения умнее этого и фактически проверяют разрешения и тип консоли по сравнению с псевдотерминалом.

40
27.01.2020, 19:38

Если вы хотите отключить X для одной команды, вы можете написать

DISPLAY=./my_command

Обратите внимание на стратегическое пустое место после =. В более общем смысле вы можете установить переменные среды для процесса, указав перед командой последовательность <variable>=<value>, разделенную пробелами.Так как пробел служит разделителем, =сразу после пробела очищает предыдущую переменную. Мы можем посмотреть на эффект этих префиксов, используя подоболочку в качестве команды, а затем распечатав ее окружение. Возьмем, к примеру,:

$ A=a B=b C= D=d sh
$ echo $A $B $C $D

Будет напечатано

a b d

Это показывает, что окружение подоболочки действительно отличается от предполагаемого. Обратите внимание, что подстановка оболочки происходит до того, как отдельные аргументы будут переданы в echo. Это означает, что echoбудет вызываться с тремя аргументами, поэтому в выводе будет только один пробел между bи d, как если бы командная строка была echo a b d(, хотя перед dесть два пробела. ] печатает только одиночные пробелы ), но в отличие от echo a b "" d(, который печатает два пробела между bиd).

31
27.01.2020, 19:38

Теги

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