Copiando o caminho atual (pwd) no Shell sem utilizar o mouse

Quem trabalha muito na frente do terminal, acaba desenvolvendo a habilidade de não utilizar o mouse. Boa parte do meu tempo no trabalho, é em frente ao terminal (seja um terminal do Linux ou do OS X) e raramente utilizo o mouse para alguma coisa, a não ser para interagir com a interface gráfica (como arrastar janelas ou coisas do gênero). Mas uma situação que sempre me forçou a usar o mouse na frente do terminal, era simplesmente copiar o endereço do local onde estou e colar dentro do editor vi (ou vim) ou em outro local. Para isso, sempre utilizei o comando “pwd” e usava o mouse para copiar e colar. Percebendo que essa era praticamente a única ação que me fazia tirar as mãos do teclado enquanto trabalhava com o terminal, revolvi procurar uma solução. Eu a encontrei e é bastante simples. Há basicamente dois comandos que podem ser utilizados para esta função. Um deles é o “pbcopy” que pode ser utilizado no OS X e o outro, é o “xclip” que pode ser utilizado no Linux.

pbcopy no OS X

No terminal do OS X, encontrei o comando “copypath”. Este comando é interno, ie., ele faz parte do conjunto de ferramentas do OS X e portanto, não é necessário instalar ele.

Uso

Um exemplo do seu uso é o seguinte:

$ pwd | pbcopy

Utilizando o atalho do teclado “CMD+v”, posso colar no terminal (ou em qualquer outro local) o caminho indicado pelo comando “pwd”:

/Users/carlos

Muito simples e funcional.

xclip no Linux

Como eu não sabia que o “pbcopy” é um comando interno do OS X, fui tentar no terminal do Linux e não deu certo. Fui procurar e acabei encontrando o comando “xclip”, que tem a mesma função e funciona muito bem. Porém, na máquina em que eu estava trabalhando, este comando não estava instalado, mas nada me impediu de instalar ele localmente.

Instalação

Para instalar o comando “xclip” em uma máquina a partir do código fonte do programa, basta seguir os passos abaixo:

$ wget -c https://github.com/astrand/xclip/archive/master.zip
$ unzip master.zip
$ cd master/
$ ./bootstrap
$ ./configure --prefix=${PWD}
$ make
$ make install

Com esses comandos, você irá instalar o “xclip” no mesmo diretório do código fonte do programa. Serão criados dois novos diretórios, “bin” e “share”. Dentro do primeiro, deverão estar presentes os executáveis do “xclip” e dentro do segundo, os manuais. Para adicionar os novos comandos e manuais ao PATH do Shell, basta configurar o seu arquivo ~/.bashrc (ou ~/.bash_profile ou mesmo ~/.profile), adicionando as seguintes linhas ao final do arquivo:

export PATH=“/caminho/para/o/diretorio/bin/do/xclip”:${PATH}
export MANPATH=“/caminho/para/o/diretorio/share/man/do/xclip”:${MANPATH}

Com isso, basta dar um source no arquivo alterado (eg., “source ~/.bashrc”) ou abrir um nova aba no terminal.

Uso

O uso do comando “xclip” no Shell do Linux é bastante simples. Por exemplo, copiando o caminho atual e redirecionando a saida para dentro de um arquivo texto (arq.txt):

$ pwd | xclip
$ xclip -o > arq.txt

Para colar o caminho copiado com o xclip dentro do editor vim, basta digitar “SHIFT+p”.

É isso!

Referências:

Configurando o terminal do Mac OS X

Por default o aplicativo Terminal do Mac OS X vem meio pelado, praticamente sem nenhuma configuração em termos de PS1 =)

Quem vem do Linux com certeza acaba sentido um pouco de desconforto e logo toca para a configuração mais fina para logo se sentir em casa. No meu caso, gosto que meu PS1 mostre a informação da pasta em que estou navegando, com os devidos espaços entre barras e o $ para que eu possa facilmente selecionar e color o caminho em que estou, caso precise:

PS1 e cores configuradas no Terminal do Mac OS X

Para isso, é necessário modificar o arquico .basrh ou .bash_profile (a diferença entre os dois é que um serve para o shell interativo – aquele que você usa quando abre uma nova aba no terminal e que é o padrão do Mac OS X, e o outro para o shell login – aquele que é usado usa quando você entro no init3 do Linux, por exemplo). Como eu não gosto de misturar muito as coisas, prefiro colocar as minhas configurações pessoais no meu .bashrc, pois assim restrinjo qualquer tipo de problema relacionado à configuração do shell à minha conta de usuário.

Para configurar da forma mais correta e segura, basta editar o arquivo .bash_profile e adicionar as seguintes linhas:

if [ -f ~/.bashrc ]; then
  source ~/.bashrc
fi

As instruções que estão dentro do if, fazem com que o arquivo .bashrc seja parseado (comando source – vai exportar variáveis e executar quaisquer comando que estejam dentro do seu .bashrc), caso ele exista.

Feito isto, basta configurar o arquivo .bashrc. No meu caso, eu adicionei as seguintes instruções, tal como eu utilizava no shell do meu Ubuntu:

# Faz com que o histórico seja incrementado:
shopt -s histappend
# Habilita as cores no terminal:
use_color=true
# Ajusta o PS1:
if ${use_color} ; then
  if [[ ${EUID} == 0 ]] ; then
    PS1='\[33[01;31m\]\h\[33[01;34m\] \W \$\[33[00m\] '
  else
    PS1='\[33[01;32m\]\u@\h\[33[01;34m\] \w \$\[33[00m\] '
  fi
else
  if [[ ${EUID} == 0 ]] ; then
    # show root@ when we don't have colors
    PS1='\u@\h \W \$ '
  else
    PS1='\u@\h \w \$ '
  fi
fi

Depois de fazer as alterações, basta dar um source no seu .bashrc ou simplesmente fechar e reabrir o Terminal. Neste caso, vale lembrar que para realmente encerrar a aplicação, basta apontar para a barra de menus, clicar em Terminal e depois clicar em Quit/Encerrar/Fechar Terminal.

Basicamente é isso. Com certeza há outras formas de se customizar o Terminal do Mac OS X, mas essa é simples e direta, sem muitos rodeios.

Configurações básicas do Bash

Ter um interpretador de Shell devidamente configurado, além de ser importante para a organização do terminal, facilita a vida de muita gente que trabalha direto no terminal. Independente do gerenciador de janelas escolhidos, a maioria das distribuições atuais adota o Bash como o interpretador de Shell padrão do linux.

Dependendo o interpretador, o Shell pode ser configurado de muitas maneiras. Acho que a maneira mais adequada é aquela que permite sabermos em que pasta estamos e a partir disso digitarmos os comandos. O Shell mais estranho que utilizei é o do CYGWIN (o porte do “linux” para o Windows). Nessa configuração, o prompt fica na linha de baixo, logo depois da linha com as pastas onde se está. Esta configuração causa uma certa estranhesa no início, porque sempre se pensa que está pulando uma linha, mas também tem o lado prático por impedir que comandos muito longos tenham que ser completados na linha de baixo.

Para uma configuração básica e organizada do Bash, temos que levar em consideração três arquivos:

  • .bashrc
  • .bashr_aliases
  • .bashr_profile

No primeiro, .bashr, estão as configurações da variável PATH, o formato do prompt e outras variáveis que podem ser acrescentadas quando programas são instalados a partir do código-fonte. No .bashr_aliases, são acrescentadas as aliases definidas pelo usuário e no .bashr_profile, estão as configurações que fazem parte tanto do sistema em si (linux) quanto do próprio Bash.