A maioria das ferramentas unix é projetada para funcionar bem com arquivos de texto. Um arquivo de texto consiste em uma sequência de linhas. Uma linha consiste em uma sequência de caracteres imprimíveis que terminam com um caractere de nova linha. Em particular, o último caractere de um arquivo de texto não vazio é sempre um caractere de nova linha. Evidentemente, example.txt
contém apenas some text
sem nova linha final, por isso não é um arquivo de texto.
cat
faz um trabalho simples; transformar arquivos arbitrários em arquivos de texto não faz parte desse trabalho. Algumas outras ferramentas sempre transformam sua entrada em arquivos de texto; Se você não tiver certeza de que o arquivo que está sendo exibido termina com uma nova linha, tente executar awk 1
em vez de cat
.
Você pode fazer com que o bash exiba seu prompt na próxima linha se o comando anterior tiver deixado o cursor em algum lugar diferente da última margem. Coloque isso no seu .bashrc
(variação por GetFree de uma proposta por Dennis Williamson ):
shopt -s promptvars
PS1='$(printf "%$((COLUMNS-1))s\r")'$PS1