Назад | Перейти на главную страницу

Команда less перезаписана, как ее переустановить?

Я пытался использовать следующую команду для передачи результатов в less, чтобы я мог полностью прочитать листинг:

ls -lh | less

Это, согласно различным источникам, передает содержимое по каналу less и позволяет просматривать список в новом файле. Однако вместо этого он перезаписал мою команду less. Я использовал vi, чтобы просматривать меньше, и теперь это действительно был список папки, в которой я находился.

Я считаю, что причина заключалась в том, что я находился в папке / usr / bin /, когда использовал команду, где живет меньше. Да, я просмотрел свои шаги в журнале команд, только cd и ls были до и после перезаписи, и время модификации совпадает, когда я запускал указанную выше команду. И да, я единственный пользователь с root-доступом.

Итак, теперь, когда было уничтожено меньше, как мне переустановить только этот файл?

Сервер - CENTOS 4.9 (Final) и uname -a возвращает:

Linux server.name.com 2.6.9-89.0.16.EL # 1 Вт, 3 ноября 17:15:02 EST 2009 i686 i686 i386 GNU / Linux

Мне действительно нужно перезагрузить / обновить ОС в какой-то момент, поскольку cPanel больше не поддерживает CENTOS 4, но пока что я хочу вернуть меньше. Я также могу использовать vi или более вместо него.

--- Отредактировано для добавления ---

Я знаю, что все будут постоянно повторять, что этого не может быть, как описано, но вот фактический список того, что было сделано шаг за шагом:

> /usr/sbin/exim -bp > /home/<username>/<filename>.log (created Feb 4 21:03)
> less -N /home/<username>/<filename>.log (less was working fine)
> top
> df -P
> cd /usr
> ls -l
> cd games
> ls -l
> cd ..
> cd lib
> ls -l
> cd ..
> ls -l
> cd etc
> ls -l
> cd ..
> cd bin
> ls -lh
> ls -lh | less (less reports created Feb 4 21:22)
(this started trying to run every line in the listing like a shell script. I was confused about this error, so I did some looking online for an answer - none found. So I decide to send the output to a file instead.)
> ls -lh
> ls -lh > /home/<username>/ls (created Feb 4 21:42)
> less /home/<username>/ls (output is the same with it trying to run every line in the listing as a shell script)
> ls -lh > /home/sbaldwin/ls.log (wondering if calling a file ls messed up things, I retry to > output to a file)
> ls -lh /home/sbaldwin/ls.log (check to see the file size)
> less /home/sbaldwin/ls.log (same result as before)
> less (same result)
> top
> more (functioning normally)
> vi (functioning normally)
> less (same result)
> exit (tried exiting and returning, and seeing if a process is running for less)
> less (same result)
> vi /usr/bin/less (Now I see that it is the directory listing of '/usr/bin'
> ls -lh /usr/bin/less
-rwxr-xr-x  1 root root 74K Feb  4 21:22 /usr/bin/less*

Для скептиков, утверждающих, что этого не может быть, вот оно. Ни у кого другого нет root-доступа, я был единственным, кто вошел в SSH, и никакие другие команды не выполнялись, кроме указанных выше. Чего стоит, может это баг, если вы запустите ls -lh | less в папке / usr / bin /, где находится ссылка на less, он может просто перезаписать ваш файл less. Если вы на 100% уверены, что этого не может быть, обязательно попробуйте. Опять же, это может быть ограничено CENTOS 4.9.

Опубликованную вами команду не следовало перезаписывать меньше, но не будем останавливаться на деталях.

Я не уверен, что значит сказать «cPanel больше не поддерживает CENTOS 4», но если репозитории CentOS 4 больше не работают в вашей системе, загрузите меньший RPM из дистрибутива CentOS и принудительно переустановите его.

wget http://vault.centos.org/4.9/os/i386/CentOS/RPMS/less-382-4.rhel4.i386.rpm
rpm -Uvh --force less-382-4.rhel4.i386.rpm

Это принудительно перезапишет любые пакеты, установленные менее RPM, включая модифицированный less двоичный файл.