Se você quiser copiar a saída de um comando, use pbcopy
. Para obter resultados específicos, use grep
.
Por exemplo, para copiar toda a saída de netstat -an
:
netstat -an | pbcopy
Para copiar apenas a saída de portas abertas (escuta):
netstat -an | grep LISTEN | pbcopy
Terminal.app em si não tem uma maneira de usar o teclado para selecionar texto, mas usando um multiplexador de terminal como tela ou tmux, você pode fazê-lo em "modo de cópia". A tela é instalada no OS X por padrão, e o tmux pode ser instalado através de uma ferramenta de terceiros, como Homebrew ou Macports. A página man para ambos os programas descreve o modo de cópia e como selecionar o texto a ser copiado para a área de transferência. Na man page da tela, mais informações sobre como navegar no modo de cópia podem ser encontradas na seção CUSTOMIZATION
em copy
. Um trecho abaixo:
copy
Enter copy/scrollback mode. This allows you to copy text from the cur-
rent window and its history into the paste buffer. In this mode a vi-
like 'full screen editor' is active:
Movement keys:
h, j, k, l move the cursor line by line or column by column.
0, ^ and $ move to the leftmost column, to the first or last non-
whitespace character on the line.
H, M and L move the cursor to the leftmost column of the top, center
or bottom line of the window.
+ and - positions one line up and down.
G moves to the specified absolute line (default: end of buffer).
| moves to the specified absolute column.
w, b, e move the cursor word by word.
B, E move the cursor WORD by WORD (as in vi).
C-u and C-d scroll the display up/down by the specified amount of
lines while preserving the cursor position. (Default: half screen-
full).
C-b and C-f scroll the display up/down a full screen.
g moves to the beginning of the buffer.
% jumps to the specified percentage of the buffer.
Isso ainda não interage com a área de transferência do sistema, então você teria que copiar a saída de alguma forma, talvez fazendo eco do conteúdo do buffer de colar para o pbcopy. Exemplo de fluxo de trabalho:
(C-a [é "hold control aperte A e então aperte [", same for]. veja a página man da tela).
- Inicie a tela e trabalhe lá.
- Entre no modo de cópia: C-a [
- Navegue usando o vi keybindings (ou configure para usar as ligações do emacs pela página man).
- Iniciar a seleção de texto com a barra de espaço.
- Pressione Enter para copiar a seleção para colar o buffer. Isso sai do modo de cópia.
- Cole o buffer com C-a]
echo 'C-a ]' | pbcopy
(não digite literalmente C-a], use a tecla de atalho conforme descrito acima, use aspas quando necessário)
O texto selecionado deve estar na área de transferência do sistema e você pode colá-lo em outra janela. Por exemplo, o seguinte:
paste [registers [dest_reg]]
Write the (concatenated) contents of the specified registers to the
stdin queue of the current window. The register . is treated as the
paste buffer. If no parameter is given the user is prompted for a sin-
gle register to paste. The paste buffer can be filled with the copy,
history and readbuf commands. Other registers can be filled with the
register, readreg and paste commands. If paste is called with a second
argument, the contents of the specified registers is pasted into the
named destination register rather than the window. If . is used as
the second argument, the displays paste buffer is the destination.
Note, that "paste" uses a wide variety of resources: Whenever a second
argument is specified no current window is needed. When the source
specification only contains registers (not the paste buffer) then there
need not be a current display (terminal attached), as the registers are
a global resource. The paste buffer exists once for every user.
Foi a partir da página man tela de fazer o acima:).
Agora, tudo isso dito, e você menciona o Terminal.app especificamente, um novo recurso do iTerm2 versão 0.20.20101102 que está em teste alfa mostra:
- Mouseless Selection: você costuma copiar e colar o texto dentro da mesma janela? Agora você pode fazer isso sem usar o mouse. Abra a barra de localização com cmd-f e procure o texto que você deseja copiar. Quando parte do texto é correspondida, use a tecla tab para expandir a seleção para a direita por uma palavra completa e uma aba shift para expandi-la para o limite da palavra anterior. É copiado automaticamente para a área de transferência ou você pode usar opt-Enter para colar a seleção imediatamente.
Embora seja alfa, eu tenho usado para todo o meu trabalho do Terminal por cerca de um mês e meio e é bastante estável.
página inicial do iTerm2