Concordo com o Bruno, o script de shell é mais a norma para adicionar funcionalidade de tipo de comando. Eu ofereço sugestões adicionais:
1- para o uso, não inclua o período no final da mensagem. Você está tentando mostrar a sintaxe e a mensagem
"Uso: trocar arquivo1 arquivo2."
é possivelmente enganosa, não é uma sentença e deve apenas dizer:
"Uso: trocar arquivo1 arquivo2"
2- Colocar o arquivo em / use / bin faz dele um comando do sistema. Enquanto sua instalação pessoal do Ubuntu pode tolerar isso, quando você decidiu reinstalar do zero, você captura seu diretório pessoal, não o / usr / bin. Eu sugiro que você crie $ HOME / bin, adicione isso ao seu caminho de busca, e coloque todos os seus scripts nesse diretório. Seu diretório bin é o seu tesouro pessoal de comandos adicionais.
3- Se você colocar a função em bashrc, então, ela estará disponível apenas em um shell bash, se você quiser que a troca esteja disponível independentemente do shell, então um script shell em um diretório bin é mais universal e padrão.
4- No script, sugiro que a saída após a saída Usage seja alterada para "exit 1" e depois da última linha (third mv command) adicione "exit 0". O código de saída indica sucesso ou falha. Se você escrever outros scripts que usem swap, eles poderão verificar o código de saída para ver se houve sucesso ou falha.
5- Em vez de cop_ $ 1, que assume que o arquivo cop_ não existe, sugiro a função mktemp, usando a opção --tmpdir que cria o arquivo temporário no diretório atual. Isso não garante nomes de arquivos conflitantes.
Colocando isso tudo junto, ofereço o seguinte:
#!/bin/sh
if [ ! $# = 2 ] ; then
echo "Usage: 'basename $0' file1 file2"
echo "Two file names are required."
exit 1
fi
if [ ! -f $1 -o ! -f $2 ] ; then
echo "Usage: 'basename $0' file1 file2"
echo "Only file names are allowed."
exit 1
fi
TEMP='mktemp --tmpdir=.'
mv $1 ${TEMP}
mv $2 $1
mv ${TEMP} $2
exit 0
Agora coloque isso no diretório bin no seu diretório home. Certifique-se de que sua variável PATH apanha este diretório base echo $PATH
. Se não, o PATH é definido em seus recursos de inicialização do shell (.bashrc ou .cshrc ou ???).
cd
mkdir bin
nano swap
< now paste the above script into the file, save, and exit>
chmod 755 swap
nano $HOME/.bashrc
< now add the following 2 lines at the end of the file, save, and exit>
# user specific pathing
PATH="$HOME/bin:$PATH"
Agora, você inicia um novo shell bash ou reprocessa o arquivo .bashrc:
source .bashrc
Novo login ou shells devem ser automáticos.
É isso. Teste com apenas um comando de troca e você deverá ver o texto de uso.