DEV Community

Cover image for Copie arquivos via linha de comando com C++
Marcos Oliveira
Marcos Oliveira

Posted on

Copie arquivos via linha de comando com C++

🕸️ Seu comando customizado, simples e rápido!


Que tal a comodidade de copiar os arquivos via linha de comando? Basta, vocĂŞ criar seu prĂłprio comando rapidamente com C++.

Veja abaixo o passo a passo!


DependĂŞncias

Exemplo em distros que usam o APT como gerenciador de pacotes

Procure nomes correspondentes para a sua distro.

sudo apt install build-essential libx11-dev libxcb1-dev libpng-dev
Enter fullscreen mode Exit fullscreen mode

E compile e instale também o clip

git clone https://github.com/dacap/clip
cd clip
cmake . -B build
cmake --build build
sudo cmake --install build
Enter fullscreen mode Exit fullscreen mode

Crie o CĂłdigo

Exemplo: main.cpp

#include <clip.h>
#include <fstream>
#include <iostream>
#include <sstream>
#include <memory>

const auto use = [](){
  std::cerr << "Use: xclip++ <file> [file...]\n";
};

class Xclip {
  public:
    Xclip(int argc, char** argv){
      std::ostringstream buffer;

      for (int i = 1; i < argc; ++i) {
        std::ifstream file(argv[i], std::ios::binary);
        if (!file) {
          std::cerr << "Error opening: " << argv[i] << "\n";
          std::exit(1);
        }

        buffer << file.rdbuf();

        if(i + 1 < argc){
          buffer << '\n';
        }
      }

      clip::set_text(buffer.str());
    }
};

int main(int argc, char** argv){
  if(argc < 2){
    use();
    return 1;
  }

  auto xclip = std::make_unique<Xclip>(argc, argv);
}
Enter fullscreen mode Exit fullscreen mode

Compile e Instale

g++ main.cpp -o xclip++ -lclip -lxcb -lX11 -lpng -pthread
sudo install -v xclip++ /usr/local/bin/
Enter fullscreen mode Exit fullscreen mode

Use facilmente

xclip++ file.txt
# Ou vários arquivos
xclip++ file1.txt file2.md file3.cpp # ...
Enter fullscreen mode Exit fullscreen mode

Veja também: Copie e cole via linha de comando do Linux com xclip

Aprenda C++

https://terminalroot.com.br/cpp

Top comments (0)