Да, разница в том, что в первом случае файл заканчивается на \n
(новая строка).
BBBBBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
my_user$
В этом случае у него нет новой строки, поэтому следующая вещь, которую он печатает, это ваше использование (фактически ваше PS1
)
CGAGGTTTCACCATGTTGGCCAGGCTGmy_user$
Вы можете попробовать это:
echo "CCCFFADFHHHHH" # <--- implicitly includes newline at the end
echo -n "CCCFFADFHHHHH" # <--- does not include newline at the end
На самом деле есть два варианта оконечной линии, \r
и \n
, и существуют разные стандарты в зависимости от вашей ОС.Я предполагаю, что вы работаете над Linux, и используется только \n
.Таким образом, в этом примере символ новой строки 0x0a
(номер 10) на карте ASCII.
Если вы хотите узнать последний символ каждого файла, вы можете сделать следующее:
echo -n "CCCFFADFHHHHH" > uglyfile.txt
echo "CCCFFADFHHHHH" > nicefile.txt
for file in *.txt; do
echo -n "$file ends with: 0x";
tail -c 1 $file | xxd -p;
done;
Если вы хотите узнать, какие файлы заканчиваются символом, который не является новой строкой, вы можетеделать:
echo -n "CCCFFADFHHHHH" > uglyfile.txt
echo "CCCFFADFHHHHH" > nicefile.txt
for file in *.txt; do
lastchar_hex=`tail -c 1 $file | xxd -p`
if [[ $lastchar_hex != '0a' ]]; then
echo "File $file does not end with newline"
fi;
done;