Как показать рабочие часы в терминале перед командной строкой

Да, как takkat сказал, что вы можете запустить gnome-terminal или xterm или konsole в kde или нажать Ctrl + Alt + F1 или Ctrl + Alt + F2 или Ctrl + Alt + F3 и т. д. Все по умолчанию используют bash но вы можете открыть рыбу вместе с ними.

Чтобы любой из 2 сделал это:

gnome-terminal -e bash (Чтобы запустить гном-терминал с bash) gnome-terminal -e fish (Чтобы запустить гном-терминал с рыбой)

1
задан 24 September 2014 в 18:54

7 ответов

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

  while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-11));echo -e "\e[31m`date +%r`\e[39m";tput rc;done &

Но обратите внимание, что отображение времени с использованием этой команды иногда может перекрывать текст, присутствующий в терминале. Поэтому используйте эту команду с небольшой осторожностью.

Другим способом может быть использование управляющего символа в PS1

[guru@guru-pc ~]$  PS1='\[\u@\h \T \w]\$'

[guru@guru-pc 11:06:16 ~]$

. Но в этом методе ваше время будет обновляться только после нажатия ввода.

Если вы хотите, чтобы выше метод постоянно добавлял вышеприведенную команду (тот, который вам нравится или оба) в ваш файл ~.bashrc.

24
ответ дан 24 May 2018 в 16:45
  • 1
    Большой! Любые подсказки относительно того, как изменить цвет часов? – Calculus Knight 27 February 2018 в 23:53
  • 2
    @CalculusKnight, вы можете изменить цветовой код в команде. Вы можете ссылаться на это для цветового кода. misc.flogisoft.com/bash/tip_colors_and_formatting – g_p 27 February 2018 в 23:58
  • 3
    Это работает ОТЛИЧНО - большое вам спасибо. Я вызываю это из .bashrc, чтобы остановить чрезмерно активный брандмауэр от убийства простоя SSH-соединений. – Criggie 7 March 2018 в 01:56

Если все, что вы хотите сделать, это показать часы, просто используйте date:

while :; do date +%r; sleep 1 ; done

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

while :; do printf '%s\r' "$(date +%r)"; sleep 1 ; done
9
ответ дан 24 May 2018 в 16:45

этот вопрос уже давно беспокоит меня несколько дней, и вот мой отредактированный пост со всем материалом я узнал. В частности , моей целью было добиться, показывая часы рядом с приглашения в bash. Как Radeanu Раду, упомянутых в его ответ, ключ, чтобы найти функцию или переменную, что сможете постоянно обновлять командной строке или перерисовки экрана, не мешая экране или с тем, что вы печатаете. Хотя, этого можно достичь с помощью цикла while, как показано на она, вероятно, была постоянная перерисовка экрана с функцией выход портит любой текст на экране в тот момент, когда он обновляет. Я пришел довольно близко к достижению того, что ОП попросил, изменяя в определенной степени она, вероятно, была код написал , но все же я считаю ответить Раду является самым близким к тому, что ОП хочет. Без дальнейших церемоний, вот некоторые из вещей, которые я узнал, представлены на ваш суд.

#1, мой предпочтительным решением: терминальный Мультиплексор

терминальный мультиплексор-это программа, которая позволяет разделить экран терминала на два или более экранов. В частности, я хочу обратить внимание на Бебу терминал. Этот пакет ncurses основе эмулятор терминала, позволяет показать время, процент загрузки ЦП, памяти, и целая куча других показателей. На скриншоте из моего терминала бебу вы можете увидеть температуру процессора, заряд батареи, качество связи сети, Частота процессора, ОЗУ, время, и конечно время. Если вы в основном озабочены постоянно отслеживает эти вещи, пока в терминале, Бебу является способом пойти. На самом деле , я так сильно люблю его, я поставил его для автоматической загрузки во время входа в терминал. Единственная особенность заключается в том, что в терминал нельзя объединить отдельные окна - только переключаться между вкладками с F3 и F4 ключи.

альтернативное решение с участием мультиплексирования окон с помощью [ф6], который разделяет экран на две части. Вы можете запустить терминал часы, такие как [ф7] , используйте команду часы с датой, или можно кода со скриптом. Подробнее об этом позже. На скриншоте вы видите одну часть разделить с нормальной командной строке в верхней, и в нижней можно увидеть скрипт работает, что просто постоянно обновляет выхода из команды нажать [F8] с помощью команды [ф9].

Screenshot of my byobu terminal

#1, мой предпочтительным решением: терминальный Мультиплексор это, наверное, closent к тому, что человек, который задал вопрос и хотел осуществляться с bash.

она, вероятно, была опубликована многие решения, предусматривающего [ф10] и на [F11] команды. Однако в коде она, вероятно, была там были две вещи, которые мне не нравились. Одни часы были справа от строки, и два - потому что цикл сна составляет 1 секунду (см. исходный код, где он говорит спать), экран перерисовывается каждую секунду, и это портит мне выходной. То, что я сделал, чтобы изменить свой баш приглашения в одну строчку ниже с \п оператора и меняться она, вероятно, была кода, так что выход оператор установки часы прямо над приглашением, и обновляться каждые 60 секунд, что позволяет мне видеть часы и минуты (и я не забочусь о минут), в то время как часы цикл не портить экран. Во-первых, вот мой запрос:

[Ф1]

а вот измененный код она, вероятно, была по: [ф12]

[Ф2]

небольшая правка: я заметил, что этот код не вызывают часы иногда. Лучше вот такой вариант: [от f13] это одно мест, где часы сначала на экране, тогда давайте баш знать, чтобы пройти через цикл сна 60 секунд

отметим, выход Кубок 0 0 мест часы в верхнем правом углу экрана, прямо над моей подсказки и спать 60 изменения цикла сна до 60 секунд, потому что таким образом я могу контролировать только часов и минут, а не каждую секунду. Таким образом, любой текст у меня на экране не влияет, по большей части (только когда я выполнить команду то же время освежает).

линия PS1-это уже в вашей .профиль bashrc и, таким образом, вы просто нужно настроить его немного. В то время как делать петли должны быть добавлены где-то в том же файле, желательно в конце с # комментарий, что это вещи, которые вы изначально добавил. И не забывайте всегда резервную копию любого файла, только в случае, если вы сделаете бубу и нужно вернуться, чтобы так оно и было.

#3, скриптов и других

эта часть только для тех, кто хочет видеть время. Для тех, кто хочет постоянно следить за ним, #1 и #2 являются предпочтительными варианты.

так как мы уже видели, в то время как делать петли очень полезно. Вот как можно создать часы, а делать петлю, дата и сна команды.

[dиода d17][!dиода d17]

нажмите Return/Enter, и вы в основном увидите вывод команды date показано на очищенную экране каждую секунду. Если Вы не хотите вводить все это каждый раз, превратить все это в скрипт:

[Ф3]

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

другим решением является команда [ф14], который будет постоянно выполнять команду date с периодом в 1 секунду.

#3, скриптов и других я узнал некоторые вещи, пытаясь найти ответ на этот вопрос, и я надеюсь, что мои выводы помогли Вам в некотором роде, и я надеюсь, что смог внести свой вклад в этот вопрос. Бебу терминал ИМХО-это лучшее решение, но решить для себя, сделать некоторые исследования, и выбирать, Какой способ лучше всего работает для вас.

некоторые из вещей, которые я нашел при исследовании:

повтор команды в Unix некоторые командной строке примеры плавающие часы подскажут

мой оригинальный пост, минималистичный решение: отредактировать ~/.файл bashrc. Я предпочитаю редактирования с нано, так

[F4] и [и D40]вот часть моего отредактированного файла:[!и D40] [ф5] [dрайвер d41]после блока else первые строки закомментированы с # (Это мой старый запрос), теперь вторая линия-это тот, который вы хотите, и конкретно [ф15] оператора. Что показывает время в 24-часовом формате. Для получения дополнительной информации проверить это . Также маленькое замечание, я использую вещи после другого, потому что я не использую цветные приглашения. [!dрайвер d41] [d43 см.]мой оригинальный пост, минималистического решения: пожалуйста, дайте мне знать, если я должен добавить что-нибудь на мой ответ или изменить его в любом случае, но по большей части я считаю, что это наиболее убедительного ответа, что я могла придумать, по крайней мере, я лично не добавив ничего нового к нему.[!d43 см.]
2
ответ дан 24 May 2018 в 16:45
  • 1
    Это не отображает «рабочие» часы, как хочет OP. Он просто добавит время в подсказку терминала. – Parto 20 September 2014 в 13:36

Это время изменится только при выполнении нового приглашения

Вы можете добавить следующее к своему .bashrc:

export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:[\t]:\w\$ "

, которое будет производить:

USER@HOST:[12:59:59]:~$ _

Дополнительная информация здесь: http://www.thegeekstuff.com/2008/09/bash-shell-ps1-10-examples-to-make-your-linux-prompt-like-angelina-jolie/ # 8

Найдите «8. Создайте собственное приглашение, используя доступные коды для переменной PS1» на этой странице выше.

1
ответ дан 24 May 2018 в 16:45
  • 1
    Я ценю ваше время и силы, но это не то, что я хочу. – Saurav Kumar 17 October 2013 в 06:51
  • 2
    @SauravKumar Да, я понимаю, что вы хотите запустить часы. Я не уверен, возможно ли это с переменной «PS1», возможно, $PROMPT_COMMAND будет работать, если вы сможете найти команду, которая отображает время тикания. – kiri 17 October 2013 в 07:01
  • 3
    Ну, я думаю, вы можете это сделать .. :) Кажется, вы приблизились к решению .. – Saurav Kumar 17 October 2013 в 07:07
  • 4
    почему он включает \ u два раза? @SauravKumar – David 11 January 2014 в 19:23
  • 5
    @David: Извините, я не знаю. Но @ minerz029 , вероятно, ответит на ваш вопрос. :) – Saurav Kumar 11 January 2014 в 19:45

Мне очень нравится функция часов ncmpcpp, запускаемая с помощью 0-ключа (см. снимок экрана). Более подробную информацию о процедуре установки см. В этом сообщении.

1
ответ дан 24 May 2018 в 16:45
export PS1='\t$'

, так как я предпочитаю отображать как можно меньше информации о предыстории на терминале, я обычно настраиваю каждую сессию как #, $ и т. д. (если вы хотите постоянно ее менять, решение minerz029 идеально подходит)

Чтобы изменить его, чтобы показать текущий, я мог бы пойти за

export PS1='\T$'

за время в 12-часовом формате. Вы можете просмотреть документацию bash для других опций.

1
ответ дан 24 May 2018 в 16:45

Под влиянием g_p и Serg я попытался создать функцию в bash. Он работает, но я не уверен, что рекомендуется проверять команду ps каждую секунду, чтобы увидеть, является ли bash процессом fg или нет

prompttime() {
  PSCOLGREEN="\[$(tput setaf 2)\]"
  PSCOLRESET="\[$(tput sgr0)\]"
  PS1="${PSCOLGREEN}\\$ ${PSCOLRESET}[--:--:-- \W] "
  [ "$PROMPTCURRTTY" ] || {
    PROMPTCURRTTYtemp=$(tty)
    PROMPTCURRTTY=${PROMPTCURRTTYtemp//\/dev\//}
    unset PROMPTCURRTTYtemp; }
  PROMPTSTATE="[S]s+"
  while :; do
    sleep 1
    [ "$(ps a | grep "${PROMPTCURRTTY}.*${PROMPTSTATE}.*$(basename $SHELL)")" ] &&
    { tput sc
      tput hpa 3
      echo -en "$(date +%T)"
      tput rc; }
    continue
  done&
}
1
ответ дан 24 May 2018 в 16:45

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

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