Есть ли какой-либо способ, которым я могу вместить это в свой ~/.bashrc как функция?

Вот то, как я сделал бы это:

  1. заставьте свою оболочку установить заголовок, чтобы "колотить", когда при подсказке и названии команды, когда это выполняет команду или что-либо так, что можно сказать им независимо
  2. создайте сценарий, который звонит wmctrl перечислять открытые окна, затем:
    • если wmctrl находит окно с заголовком "удара", повысьте его
    • еще запустите xterm
  3. использовать xbindkeys назвать тот сценарий, когда Вы нажимаете свой ярлык

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

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

# set the title when we run a command
setcommandhook()
{
    if $has_debug_trap
    then
        trap 'command=$BASH_COMMAND; eval settitle "\"${title}\""; trap - DEBUG' DEBUG
    fi
}

# set the xterm title
settitle()
{
    printf "\033]0;$*\007"
}

promptstring='$(hostname):$(pwd)$ '
title='$(hostname) "${command:-$0}"'

# prompt and window title
if test -n "${title}"
then
    PROMPT_COMMAND='command=; eval settitle "\"${title}\""'
    if $has_debug_trap
    then
        PROMPT_COMMAND="$PROMPT_COMMAND; setcommandhook"
    fi
fi
if test -n "${promptstring}"
then
    PS1='$(eval echo -n "\"${promptstring}\"")'
fi

Выполнение в нем zsh легче, потому что это имеет preexec рычаг.

Вы видите мои конфигурации оболочки для получения дополнительной информации, например, getcommand функция, которая обрабатывает команды как fg более хорошим способом.


повышение xterm, который имеет удар, запрашивает в других отношениях стартовый новый

Запишите сценарий, который использует wmctrl -l перечислять окна, ища один с bash в заголовке. Если Вы найдены, то выполненными wmctrl -i -a для повышения его еще просто звоните xterm.

Вот сценарий, который делает это:

#!/bin/bash
#
# bashprompt
#
# if there is an xterm open at a bash prompt, raise/focus that window
# if there isn't start a new xterm
#
# requires that your xterm window title has "bash" at the end
# when there is no command running and doesn't have "bash" at the end
# when a command is running
#
# see  for more details
#
# Mikel Ward 

# change this to whatever is unique about your window title
# (i.e. a string that appears in the title when the shell is at a prompt
#  but does not appear when running a command)
prompttitle="bash$"
terminalprog="xterm"

if ! type wmctrl >/dev/null 2>&1; then
    echo "wmctrl can't be found, please install it" 1>&2
    exit 1
fi

if ! output="$(wmctrl -l)"; then
    echo "Error running wmctrl -l" 1>&2
    exit 1
fi
while IFS=$'\n' read -r line; do
    if [[ $line =~ $prompttitle ]]; then
        id=${line%% *}
        break
    fi
done <

Или загрузите его с моего репозитория сценариев.


запущение скрипта, когда Вы нажимаете Win+R

Принятие Вашего сценария называют /usr/local/bin/bashprompt, сделайте файл ~/.xbindkeysrc содержа:

"/usr/local/bin/bashprompt"
    Mod4 + r

затем выполненный xbindkeys. Добавьте его к Вашему .Xclients файл или подобный, чтобы заставить его запустить автоматически.

3
08.09.2012, 15:04
2 ответа

Сказать tclsh прочитать сценарий из другого дескриптора файла и использовать здесь документ для передачи сценария.

shuffle () {
  tclsh /dev/fd/3 "$@" 3<<'EOF'
proc main {} {
    …
}
main
EOF
}
2
27.01.2020, 21:17
  • 1
    это - вид волшебства, которое я надеялся начать использовать регулярно.спасибо. –  ixtmixilix 10.09.2012, 12:35

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

Любое использование shuf или sort -r.

Попробуйте, например:

echo {1..10} | tr ' ' '\n' | shuf

Пример произвел:

8
4
2
7
5
10
6
3
1
9
3
27.01.2020, 21:17
  • 1
    popa3d ответа –  ixtmixilix 24.02.2013, 22:37
  • 2
    Отметьте это shuf может сделать качество случайное упорядочивание с --random-source=/dev/random, в то время как sort -r достаточно случайно в большинстве целей, но криптографически плох. –  mc0e 15.01.2015, 16:05

Теги

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