Как настроить вывод команд терминала?

Я пытаюсь сделать несколько пустых строк прямо перед первой строкой выполнения команд в терминале и также другом после последней строки (для того, чтобы всегда даже выполнить любую команду), потому что, когда я редактирую PS1 Я только могу добавить пустую строку перед первой строкой, но она пошла, когда я выполняю некоторые команды, если это, имеют длинный результат, т.е.: выполнение update какая причина игнорируют добавленную пустую строку.

некоторая вещь как это (пока выполнение обновления):

enter image description here

Когда я максимизировал Окно терминала, у меня может быть эта последняя пустая строка, затем я хочу это также в нормальном окне. Пустая строка перед первой строкой не важна, но имеющий последний пустой очень важно для меня. Как я могу обработать результат выполнения команд? если я достигаю этого затем я способный иметь последнюю пустую строку.пожалуйста!

3
задан 24 September 2014 в 10:31

3 ответа

Я сохраняю предыдущий ответ для меня и добавляю еще один в зависимости от нашего обсуждения.

Это не идеальное решение, но я думаю, что мы можем улучшить его вместе:

#!/bin/bash

new_line(){
    echo -e "";
}

n=0  # line counter
H=$(stty size | cut -d" " -f1)  # this is height of current terminal
# uncomment next line if you want to add empty line after (height - 1) lines
# H=$((H - 1))
new_line
eval $@ |
while IFS= read -r line
do
    echo $line;
    n=$(($n+1));
    if !((n % H)); then # every H lines it is true
        new_line
    fi;
done
new_line

Создают этот сценарий с любым именем, в моем случае, который это test.sh, сделайте его исполняемым файлом.

Теперь выполняет этот сценарий и соединяют каналом команду, которую Вы хотите как аргументы

$ ./test.sh sudo apt-get update

Обновление

Окончательная версия сценария, который работал на @KasiyA, но не работу для меня:

#!/bin/bash 
eval $@ | 
  while IFS= read -r line
  do 
    echo $line
  done
1
ответ дан 17 November 2019 в 19:41

Если Вы хотите точно попытку пустой строки это:

Открытый терминал и создает это две функции, затем выполняется trap:

$ preexec () { echo -e ""; }
$ preexec_invoke_exec () {
    [ -n "$COMP_LINE" ] && return  # do nothing if completing
    preexec
}
$ trap 'preexec_invoke_exec' DEBUG

Теперь попытка выполнить любую команду и видеть, что результаты

уверены, что help trap говорит:

, Если SIGNAL_SPEC является ОТЛАДКОЙ, АРГУМЕНТ выполняется прежде каждая простая команда.

, Если это работает, как Вы желаете, добавьте, что это функционирует, и trap к Вашему .bashrc

Также можно хотеть измениться preexec функция на это preexec () { echo "-------------------------------"; }, потому что это - более выдающиеся взгляды.

<час>

Для получения дополнительной информации читавший это:

  1. Переносящиеся команды удара

  2. рычаг Bash прежде выполняют команду

0
ответ дан 17 November 2019 в 19:41

Лучшее решение: я нашел очень интересную команду stty. От человека stty: stty - изменение и настройки строки терминала печати.

В tty1 я выполнил это: sudo stty rows 20. Теперь мой экран tty ограничен 20 строками, который допускает 20 строк на экране. Это работает со склонным sudo - получают установку libreoffice-s и любую другую команду.

Теперь, это, кажется, не работает с терминалом гнома или xterm, но прямо сейчас я работаю над решением. Вероятно, необходимо изменить что-то в .bashrc файле.

А минималистическое решение проблемы состояло бы в том, чтобы использовать меньше или больше или стр., Например, если я моделирую установку libreoffice,

sudo apt-get install libreoffice -s | less

Тот способ, которым у Вас есть последняя строка, замененная: и все еще быть в состоянии выполнить команду. Единственный пакет ничьей - то, что необходимо нажать Enter, для пропуска к следующей странице в случае pg или следующей строке в случае меньше/больше.

Другое решение - это для использования head или tail команда. Это будет работать хорошо, если Вы не будете заботиться о целом выводе, но только сначала и конечная часть его. Как имя предполагает, они позволяют Вам видеть или вершину (глава) вывода или конец (хвост) вывода. Например,

 sudo apt-get install libreoffice -s | head -n20;

, Который даст Вам первый 20 строк вывода (значение по умолчанию равняется 10, от того, что я узнал). Стать последним 20 того же самого строк с хвостом:

sudo склонный - получают установку libreoffice-s | хвост-n20;

проблема с этими решениями, тем не менее, состоит в том, что при выполнении некоторой интерактивной команды с долгим выводом это будет, вероятно, препятствовать тому, чтобы Вы взаимодействовали с той командой, поэтому иметь это в виду.

0
ответ дан 17 November 2019 в 19:41

Другие вопросы по тегам:

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