Alias para copiar um arquivo para um arquivo específico

1

Eu tenho um cenário em que tenho um script que monitora um local de arquivo e esse local de arquivo tem arquivos copiados para ele, ou seja, /home/matt/thefile .

Eu quero um alias que, se eu fizer place myfile.txt , substituirá /home/matt/thefile por myfile.txt .

    
por NolanPower 18.09.2017 / 21:07

1 resposta

3

Uma função seria mais apropriada.

Em conchas semelhantes a Bourne:

place() { cp -- "$1" /home/matt/thefile; }

Em shells que não sejam bash , yash e posh , você pode simplificá-lo para:

place() cp -- "$1" /home/matt/thefile

Em fish :

function place
  cp -- $argv[1] /home/matt/thefile
end

em rc / es :

fn place {
  cp -- $1 /home/matt/the/file
}

É em (t)csh que você precisa usar um alias , pois esses shells não têm funções (também é csh que introduziu aliases em primeiro lugar). Em (t)csh , você pode usar a substituição de histórico para permitir que algum tipo de argumento passe para aliases.

alias place 'cp -- \!:1 /home/matt/the/file'

Quando chamado como place myfile.txt , eles copiam myfile.txt para ~/thefile

Se você quisesse algo que funcionasse independentemente do shell do usuário, em vez de adicionar uma função / alias específica do shell ao arquivo de personalização do shell, criaria um script que você adicionaria em um diretório que está em seu caminho de pesquisa de comando. Algo como:

#! /bin/sh -
exec cp -- "${1?Please give the file to copy as argument}" /home/matt/thefile
    
por 18.09.2017 / 21:47

Tags