Сделайте название приложения полужирным

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

Мой gnome-shell.css находится в этой ссылке dropbox:

gnome-shell.css

-121--900045- Как я могу вспомнить команду из истории по номеру, не выполняя ее? Как я могу получить команду из истории по номеру в мою командную строку, не выполняя ее? Это немедленно выполняет команду номер 555, которую я не ищу: $ история 10 $! 555 Это открывает...

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

This immediately executes command number 555 which I'm not looking for:
$ history 10
$ !555

This opens the command up in an editor, which is overkill most of the time:
$ history 10
$ fc 555

This is an example of what I'm looking for:
$ history 10
$ #555
$ [command 555 from history listing now sitting here on my command line ready to edit or execute]

Спасибо!

9
задан 26 March 2021 в 21:10

5 ответов

shopt -s histverify

Если опция оболочки histverify включена и используется Readline, подстановки истории не передаются немедленно в синтаксический анализатор оболочки. Вместо этого расширенная строка перезагружается в буфер редактирования Readline для дальнейшей модификации.

15
ответ дан 23 April 2021 в 23:30

Если вы используете bash, что я предполагаю, вы и делаете; введите номер истории:

$ !555

Затем нажмите: Ctrl + Alt + e, Теперь нужная команда из истории сидит в вашем приглашении и ждет выполнения, не меняя поведения истории по умолчанию:

$ command

Это также работает для псевдонимов, замен, расширений и аргументов истории, например: $ echo !555:1, ~, $HOME, $(echo hi).


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

7
ответ дан 23 April 2021 в 23:30

Добавьте : p после цифр.

Пример:

1357  locate pam_loginuid
1358  history
rinzwind@discworld:~$ !1358:p
history
rinzwind@discworld:~$ !1357:p
locate pam_loginuid
rinzwind@discworld:~$ 

Напечатано для отображения, но не выполнено.

Чтобы использовать его в BASH, вам нужно сделать больше. Пример:
https://tldp.org/LDP/abs/html/histcommands.html

#!/bin/bash
set -o history
var=$(history); echo "$var"   # 1  var=$(history)`

поместит всю историю в var, и вам понадобится дополнительная логика, чтобы найти нужную команду.

11
ответ дан 23 April 2021 в 23:30
  • Вы можете использовать встроенную команду bash read напрямую следующим образом:

     read -e -i "! 555" -p "$ {PS1 @ P}" ввод; $ input 
     
  • Или вы можете добавить его в функцию в ваш ~ / .bashrc следующим образом:

     showhist () {{{1} } 
    read -e -i "$ *" -p "$ {PS1 @ P}" input 
     $ input 
     
    } 
     

    ​​и используйте его так:

     showhist! 555 
     

Это отобразит команду в командной строке, и вы сможете отредактировать ее .... Введите для выполнения или Ctrl + c для отмены.

1
ответ дан 23 April 2021 в 23:30

edit: Сначала я ошибочно сказал "ctrl-f", где на самом деле это "ctrl-r" ... (который я использую несколько раз в день). Я отредактировал правильные команды сейчас ...

Не тот метод, который вы просили, но, вероятно, он подходит для того, что вам кажется необходимым (например, найти предыдущую строку в истории и отредактировать ее, прежде чем вводить / выполнять ее снова):

# in bash
[Ctrl]+r  Foo 
# This recalls the previous history line containing Foo, in edit mode.
# You can then:
# [Enter] to execute it "as is", and returns to prompt.
#  -or- [Ctrl]+o executes it "as is" + presents the following
#       history line, ready to be executed
#  -or- <Leftarrow> or <Rightarrow> makes that line the current one
#         and you can then edit it before executing it (what OP asked for)
#  -or- [Ctrl]+c to return to the prompt without executing 
#        the currently displayed command line.
#  -or- another [Ctrl]+r search the previous occurrence of Foo
   

Таким образом, нет необходимости вести историю и выясните, какой номер истории вам нужно отредактировать, и другую комбинацию, чтобы на самом деле получить и отредактировать его: [Ctrl] + r Something найдет для вас предыдущую строку (строки), содержащие Something и представить его в режиме редактирования. В общем, это намного быстрее.

Ctrl-o (вместо ввода) особенно полезен, если вам часто нужно отредактировать 1 команду и следовать за ней повторяющейся последовательностью команд.

И приятный бонус: этот ctrl-r и т. Д .: часто доступен в других программы (например, mariadb-server cli [полезно для получения последней команды 'use'] и, вероятно, многие другие). Вероятно, он основан на механизме "readline" (может быть предложен или, по крайней мере, используется), но я не знаю подробностей ...

2
ответ дан 23 April 2021 в 23:30

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

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