覆盖了 less 命令,如何重新安装它?

覆盖了 less 命令,如何重新安装它?

我尝试使用以下命令将结果传送至 less,以便我可以完整地读取列表:

ls -lh | less

根据各种消息来源,这会将内容传输到 less 并允许在新文件中查看列表。然而,它却覆盖了我的 less 命令。我使用 vi 查看 less,它确实是我所在文件夹的列表。

我认为原因是我在使用该命令时处于 /usr/bin/ 文件夹中,less 就位于该文件夹中。是的,我查看了命令日志中的步骤,只有 cd 和 ls 在被覆盖之前和之后,并且修改时间与我运行上述命令时相匹配。是的,我是唯一具有 root 访问权限的用户。

那么,既然 less 已经被破坏了,我该如何重新安装该文件呢?

服务器是 CENTOS 4.9 (Final) 并且 uname -a 返回:

Linux server.name.com 2.6.9-89.0.16.EL #1 星期二 11 月 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 的人,除了上述命令之外没有运行任何其他命令。不管怎样,也许这是一个错误,如果您在包含 less 链接的 /usr/bin/ 文件夹中运行 ls -lh | less,它可能会覆盖您的 less 文件。如果您 100% 确定这种情况不会发生,请务必尝试。同样,它可能仅限于 CENTOS 4.9。

答案1

您发布的命令不应该覆盖较少的内容,但我们不要纠结于细节。

我不确定“cPanel 不再支持 CENTOS 4”是什么意思,但如果 CentOS 4 存储库不再适用于您的系统,请从 CentOS 发行版下载较少的 RPM 并强制重新安装它。

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

这将强制覆盖由 less RPM 安装的任何软件包,包括修改后的 less 二进制文件。

相关内容