modifica cp para copiar para o diretório atual se nada for especificado

0

Posso modificar cp para que copie para o diretório atual se eu não especificar um destino?

Eu quero que este comando $ cp ../launcher.sh . seja equivalente a $ cp ../launcher.sh . Esta modificação é possível?

Editar

Aqui está minha melhor tentativa até agora. Quando eu chamo a funciton algo diferente de cp funciona ...

function cp() {
if [ "$#" -ne 1 ]; then
    cp $1 $2
else
    cp $1 .
fi
}
    
por kilojoules 14.04.2017 / 22:39

1 resposta

2

Você precisa de algo como: -

CP() { [ $# == 1 ] && cp "$@" . || cp "$@"; }
alias cp=CP

Estes podem ser adicionados a ~/.bashrc se você quiser uma alteração semipermanente.

Observe que um alias não funcionará em um script: se você precisar de uma alteração que funcionará em scripts, depois de verificar a localização do cp real primeiro, você poderá usar um diretório $HOME/bin privado no início sua lista $PATH e nela crie um script executável cp contendo: -

/bin/bash
[ $# == 1 ] && /bin/cp "$@" . || /bin/cp "$@"

Você precisará adicionar export PATH=$HOME/bin:$PATH a ~/.bashrc

Note também que quaisquer opções antes do primeiro arquivo invalida o teste para um único parâmetro. Você precisará varrer os parâmetros na função para verificar os parâmetros que não começam com - , parar o teste em -- e depois verificar se resta apenas um parâmetro.

    
por 15.04.2017 / 00:18

Tags