sudo apt install elinks git wget
elinks http://ftp.gnu.org/gnu/coreutils/?O=D | grep coreutils -m 3
Como resultado, você deve ter algo assim:
elinks http://ftp.gnu.org/gnu/coreutils/?O=D | grep coreutils -m 3
Index of /gnu/coreutils
[16][ ] [17]coreutils-9.3.tar.xz.sig 2023-04-18 833
[18][ ] [19]coreutils-9.3.tar.xz 2023-04-18 5.5M
O elinks acessa o endereço onde o programa coreutils (que contém o cp, o mv e outros) está. A chave ?O=D indica que os resultados devem ser exibidos na ordem decrescente de data (os mais recentes no início). O grep filtrará apenas as linhas que contém a palavra coreutils e a chave -m indica a quantidade de linhas que queremos ver exibidas no terminal.
Agora baixe a versão mais recente do coreutils:
cd /home/$USER
wget http://ftp.gnu.org/gnu/coreutils/coreutils-9.3.tar.xz
Se algum dos comandos acima não funcionou é muito provável que você não tenha os programas instalados. Resolva isto com um apt e aproveite para instalar o pacote build-essential, que você precisará para os passos a seguir:
sudo apt install wget elinks build-essential git
Aceite a instalação de qualquer prerrequisito necessário.
Execute os seguintes comandos:
tar xvJf coreutils-9.3.tar.xz
cd /home/$USER/coreutils-9.3/
git clone https://github.com/jarun/advcpmv
mv /home/$USER/coreutils-9.3/advcpmv/advcpmv-0.9-9.3.patch /home/$USER/coreutils-9.3/
patch -p1 -i advcpmv-0.9-9.3.patch
./configure
make
sudo cp src/cp /usr/local/bin/cp
sudo cp src/mv /usr/local/bin/mv
O comando tar irá descompactar os fontes do coreutils. Em seguida, você usa o cd para ir até a pasta onde os fontes estão descompactados. O wget obtém a modificação que irá melhorar os comandos cp e mv e o comando patch irá aplicá-la no cógigo. O configure verificará seu ambiente e preparará os fontes para que sejam compilados (transformados em programas executáveis), o que é feito pelo comando make. Por fim, os comandos cp copiarão os novos comandos cp e mv para o caminho (PATH) de execução de seu sistema. Você precisará usar o sudo já que a pasta /usr/local/bin pertence ao superusuário (root).
Nota: Usando a informação desta mesma dica você sabe, agora, como saber se a modificação advcpmv-0.4-8.21.patch é mesmo a mais recente, certo?
Antes de sair fazendo experiências, veja o resultado deste comando:
echo $PATH
Exemplo de resultado:
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games.
Repare que você copiou os novos comandos para /usr/local/bin, que vem antes, em seu caminho de execução, de /usr/bin - onde encontram-se os originais cp e mv. Assim, para voltar tudo ao que era antes basta você apagar as novas versões de cp e mv da pasta /usr/local/bin.
Para saber onde está um determinado comando que você utiliza, use o which:
which cp
Resultado:
/usr/local/bin/cp
Agora teste!
cp -g um_arquivo_grande copia_arquivo_grande
A chave g é a novidade! Ela irá mostrar uma barra de progresso da cópia. O mesmo vale para o comando mv.
Como, porém, sempre vou querer usar a chave g agora que ela está disponível, criarei aliases para os comandos cp e mv. Em meu caso, adicionei estas linhas ao final do /etc/bash.bashrc (assim estes aliases ficam disponíveis para todos os usuários):
alias cp='cp -g'
alias mv='mv -g'
alias rm='rm -i'
Nota: O alias rm='rm -i' não tem nada a ver com o tema deste artigo! Mas todo mundo deve, por amor a seus preciosos arquivos, tê-lo. Ele faz com que qualquer tentativa de remoção de arquivos ou pastas solicite uma confirmação.
Referências:
https://www.dicas-l.com.br/arquivo/copiando_e_movendo_arquivos_com_uma_barra_de_status.php
https://github.com/jarun/advcpmv
Nenhum comentário:
Postar um comentário