Apenas um palpite, mas parece que você tem um processo repetível, que é um bom candidato para um alias ou uma função. Os aliases são geralmente atalhos para invocar comandos bash, como abreviação, em um único fluxo de entrada como seu argumento / s.
alias hg="history | grep"
No entanto, nesse caso, uma função seria mais legível, já que você está combinando vários fluxos de entrada discretos (2), bem como vários comandos bash. Você tem dois argumentos, o primeiro sendo uma string e o outro um caminho de arquivo. No final, você quer que o resultado seja gravado no fluxo de saída stdout.
Em um prompt da CLI, digite:
# ecat()
{
echo ${1}
cat ${2}
}
Sua função é chamada ecat, que é memorável.
Agora você pode invocar como
ecat "abc" 1.txt
Para acrescentar, basta fornecer um destino de saída diferente para stdout:
ecat "abc" 1.txt >> 2.txt
O operador de redirecionamento append '> >' irá adicionar a saída ao final do arquivo especificado.
Se você gostar, acrescente ao seu arquivo ~ / .bashrc para reutilização.
declare -f ecat >> ~/.bashrc
Isso também significa que você pode decorar, etc., dentro de sua definição de função.
Também é uma boa ideia proteger os arquivos contra serem sobrescritos adicionando isso ao seu ~ / .bashrc
set noclobber