А именно: эти программы читают файлы не по буквам, а по байтам. Что видно из следующего примера.
Но перед этим скажу, что я эти программы взял из CentOS и записал в ~/bin, так что по умолчанию вызываются они.
Shell
mik13@md5:~$ echo -e "dddddd\nвввввв" | /bin/cut -c1-4
dddd
вв
mik13@md5:~$ echo -e "dddddd\nвввввв" | cut -c1-4
dddd
вввв
mik13@md5:~$ echo -e "dddddd\nвввввв" | cut -b1-4
dddd
вв
Shell
mik13@md5:~$ echo -e "🤧🤧🤧🤧🤧🤧🤧🤧\ndddddd\nвввввв" | cut --characters=1-4
🤧🤧🤧🤧
dddd
вввв
mik13@md5:~$ echo -e "🤧🤧🤧🤧🤧🤧🤧🤧\ndddddd\nвввввв" | /bin/cut --characters=1-4
🤧
dddd
вв
Shell
mik13@md5:~$ echo -e "ыыы\tввв" | expand
ыыы ввв
mik13@md5:~$ echo -e "ыыы\tввв" | /bin/expand
ыыы ввв
Сначала я подумал, что просто разработчики этих программ не подумали о том, что знаки могут быть не только однобайтовыми. Но, ведь в RHEL и CentOS (наверняка и в Федоре) это сделано корректно.
Чем это можно объяснить?
Может быть есть и другие программы, в которых это не учитывается?