2014-02-07 3 views
2

Мне нужна команда, которая бы быстро скопировала текущий макет окна tmux в буфер обмена на Mac с помощью zsh. Я придумал следующее:Получение псевдонима zsh, включая трубу для выполнения

tmux list-windows | awk '{print $7}' | sed 's/\]$//' | pbcopy 

При запуске из командной строки он прекрасно работает с выходом, как следующий:

d97b,135x32,0,0[135x16,0,0{87x16,0,0,0,47x16,88,0,1},135x15,0,17{87x15,0,17,2,47x15,88,17,3}] 

Однако, я не могу запустить его псевдоним. Если добавить строку:

alias layout="tmux list-windows | awk '{print $7}' | sed 's/\]$//' | pbcopy" 

.zshrc к моему файлу при запуске layout команда не работает, как ожидалось. Вместо этого он выводит полную tmux list-windows команду со словом layout заменяющего имя сеанса:

0: layout* (4 panes) [135x32] [layout d97b,135x32,0,0[135x16,0,0{87x16,0,0,0,47x16,88,0,1},135x15,0,17{87x15,0,17,2,47x15,88,17,3}]] @0 (active) 

Что я делаю неправильно?

Спасибо.

ответ

4

Ваш «$ 7» интерпретируется во время загрузки .zshrc? Разве это не проблема?

5

alex_i Правильно, если вы избежите $7 все работает.

alias layout="tmux list-windows | awk '{print \$7}' | sed 's/\]$//' | pbcopy"

Обратите внимание на обратную косую черту перед $ 7.

2

Не используйте псевдоним; воспользуйтесь функцией:

layout() { 
    tmux list-windows | awk '{print $7}' | sed 's/\]$//' | pbcopy 
} 

Тогда вам не нужно беспокоиться о цитировании.

+0

Это действительно хороший метод. Раньше не просматривали функции zsh - они действительно полезны! –

Смежные вопросы