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:

Anúncios

Open any kind of file from the terminal with an “open” command (Linux)

Mac OS X has a handy script called “open” that lets you open basically any kind of file from command line inside it’s default application. For example, if you are navigantig through the terminal and there is a file called “document.pdf” and you need to open it, you can simply do: “open document.pdf” and it will open the document inside the Preview app. Another example is: “open picture.png” and the open command will do the same thing. As simple as that.

But as a Linux user, I was wondering if there is such a command to use from the terminal emulator under my Linux box. If you try the “open” command, it will probably not work, unless the word “open” is an alias pointing to whathever program/script you have. But it happens that we do have the command “xdg-open” built-in the Linux shell that will get the job done. You can invoke, from the command line, the very same commands (but using the “xdg-open” command instead). For example: “xdg-open document.pdf” and it will open the document inside eg., Evince (it will depend on your desktop environment). You can do “xdg-open picture.png” and it will open the picture inside the Eye of Gnome or whaterever picture viewer you have as a default.

If you want to keep things common between the two systems, specially if you are a command line user in both, just make an alias called “open” pointing to “xdg-open”:

$ alias open="/usr/bin/xdg-open"

In fact, almost every desktop environment has its built-in “open” command, but “xdg-open” is more generic.

That’s it!

Reference:

http://https://budts.be/weblog/2011/07/xdf-open-vs-exo-open

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.