分类 技术 下的文章

30. 用密码保护 GRUB

用密码保护你的 boot 引导程序这样你就可以在启动时获得额外的安全保障。同时你也可以在实物层面获得保护。通过在引导时给 GRUB 加锁防止任何无授权访问来保护你的服务器。

首先备份两个文件,这样如果有任何错误出现,你可以有回滚的选择。备份 ‘/etc/grub2/grub.cfg’ 为 ‘/etc/grub2/grub.cfg.old’。

# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.old

同样,备份 ‘/etc/grub.d/10\_linux’ 为 ‘/etc/grub.d/10\_linux.old’。

# cp /etc/grub.d/10_linux /etc/grub.d/10_linux.old

打开文件 ‘/etc/grub.d/10\_linux’ 并在文件末尾添加下列行。

cat <<EOF
set superusers="tecmint"
Password tecmint avi@123
EOF

密码保护 Grub

密码保护 Grub

注意在上面的文件中,用你自己的用户名和密码代替 “tecmint” 和 “avi@123”。

现在通过运行下面的命令生成新的 grub.cfg 文件。

# grub2-mkconfig --output=/boot/grub2/grub.cfg

生成 Grub 文件

生成 Grub 文件

创建 grub.cfg 文件之后,重启机器并敲击 ‘e’ 进入编辑。你会发现它会要求你输入 “有效验证” 来编辑 boot 菜单。

有密码保护的 Boot 菜单

有密码保护的 Boot 菜单

输入登录验证之后,你就可以编辑 grub boot 菜单。

Grub 菜单文件

Grub 菜单文件

你也可以用加密的密码代替上一步的明文密码。首先按照下面推荐的生成加密密码。

# grub2-mkpasswd-pbkdf2

[两次输入密码]

生成加密的 Grub 密码

生成加密的 Grub 密码

打开 ‘/etc/grub.d/10\_linux’ 文件并在文件末尾添加下列行。

cat <<EOF
set superusers=”tecmint”
Password_pbkdf2 tecmint
grub.pbkdf2.sha512...你的加密密码...
EOF

加密 Grub 密码

加密 Grub 密码

用你系统上生成的密码代替原来的密码,别忘了交叉检查密码。

同样注意在这种情况下你也需要像上面那样生成 grub.cfg。重启并敲击 ‘e’ 进入编辑,会提示你输入用户名和密码。

我们已经介绍了大部分工业标准发行版 RHEL 7 和 CentOS 7 安装后必要的操作。如果你发现我们缺少了一些点或者你有新的东西可以扩充这篇文章,你可以和我们一起分享,我们会通过扩充在这篇文章中包括你的分享。


via: http://www.tecmint.com/things-to-do-after-minimal-rhel-centos-7-installation/6/

作者:vishek Kumar 译者:ictlyh 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Sort是用于对单个或多个文本文件内容进行排序的Linux程序。Sort命令以空格作为字段分隔符,将一行分割为多个关键字对文件进行排序。需要注意的是除非你将输出重定向到文件中,否则Sort命令并不对文件内容进行实际的排序(即文件内容没有修改),只是将文件内容按有序输出。

本文的目标是通过14个实际的范例让你更深刻的理解如何在Linux中使用sort命令。

1、 首先我们将会创建一个用于执行‘sort’命令的文本文件(tecmint.txt)。工作路径是‘/home/$USER/Desktop/tecmint’。

下面命令中的‘-e’选项将启用‘\’转义,将‘\n’解析成换行

$ echo -e "computer\nmouse\nLAPTOP\ndata\nRedHat\nlaptop\ndebian\nlaptop" > tecmint.txt

Split String by Lines in Linux

2、 在开始学习‘sort’命令前,我们先看看文件的内容及其显示方式。

$ cat tecmint.txt

Check Content of File

3、 现在,使用如下命令对文件内容进行排序。

$ sort tecmint.txt

Sort Content of File linux

注意:上面的命令并不对文件内容进行实际的排序,仅仅是将其内容按有序方式输出。

4、 对文件‘tecmint.txt’文件内容排序,并将排序后的内容输出到名为sorted.txt的文件中,然后使用cat命令查看验证sorted.txt文件的内容。

$ sort tecmint.txt > sorted.txt
$ cat sorted.txt

Sort File Content in Linux

5、 现在使用‘-r’参数对‘tecmint.txt’文件内容进行逆序排序,并将输出内容重定向到‘reversesorted.txt’文件中,并使用cat命令查看文件的内容。

$ sort -r tecmint.txt > reversesorted.txt
$ cat reversesorted.txt

Sort Content By Reverse

6、 创建一个新文件(lsl.txt),文件内容为在home目录下执行‘ls -l’命令的输出。

$ ls -l /home/$USER > /home/$USER/Desktop/tecmint/lsl.txt
$ cat lsl.txt

Populate Output of Home Directory

我们将会看到对其他字段进行排序的例子,而不是对默认的开始字符进行排序。

7、 基于第二列(符号连接的数量)对文件‘lsl.txt’进行排序。

$ sort -nk2 lsl.txt

注意:上面例子中的‘-n’参数表示对数值内容进行排序。当想基于文件中的数值列对文件进行排序时,必须要使用‘-n’参数。

Sort Content by Column

8、 基于第9列(文件和目录的名称,非数值)对文件‘lsl.txt’进行排序。

$ sort -k9 lsl.txt

Sort Content Based on Column

9、 sort命令并非仅能对文件进行排序,我们还可以通过管道将命令的输出内容重定向到sort命令中。

$ ls -l /home/$USER | sort -nk5

Sort Content Using Pipe Option

10、 对文件tecmint.txt进行排序,并删除重复的行。然后检查重复的行是否已经删除了。

$ cat tecmint.txt
$ sort -u tecmint.txt

Sort and Remove Duplicates

目前我们发现的排序规则:

除非指定了‘-r’参数,否则排序的优先级按下面规则排序

  • 以数字开头的行优先级最高
  • 以小写字母开头的行优先级次之
  • 待排序内容按字典序进行排序
  • 默认情况下,‘sort’命令将带排序内容的每行关键字当作一个字符串进行字典序排序(数字优先级最高,参看规则 1)

11、 在当前位置创建第三个文件‘lsla.txt’,其内容用‘ls -lA’命令的输出内容填充。

$ ls -lA /home/$USER > /home/$USER/Desktop/tecmint/lsla.txt
$ cat lsla.txt

Populate Output With Hidden Files

了解ls命令的读者都知道‘ls -lA’ 等于 ‘ls -l’ + 隐藏文件,所以这两个文件的大部分内容都是相同的。

12、 对上面两个文件内容进行排序输出。

$ sort lsl.txt lsla.txt

Sort Contents of Two Files

注意文件和目录的重复

13、 现在我们看看怎样对两个文件进行排序、合并,并且删除重复行。

$ sort -u lsl.txt lsla.txt

Sort, Merge and Remove Duplicates from File

此时,我们注意到重复的行已经被删除了,我们可以将输出内容重定向到文件中。

14、 我们同样可以基于多列对文件内容进行排序。基于第2,5(数值)和9(非数值)列对‘ls -l’命令的输出进行排序。

$ ls -l /home/$USER | sort -t "," -nk2,5 -k9

Sort Content By Field Column

先到此为止了,在接下来的文章中我们将会学习到‘sort’命令更多的详细例子。届时敬请关注我们。保持分享精神。若喜欢本文,敬请将本文分享给你的朋友。


via: http://www.tecmint.com/sort-command-linux/

作者:Avishek Kumar 译者:cvsher 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

25. 安装 Linux Malware Detect (LMD)

Linux Malware Detect (LMD) 是 GNU GPLv2 协议下发布的开源 Linux 恶意程序扫描器,它是特别为面临威胁的主机环境所设计的。LMD 完整的安装、配置以及使用方法可以查看:

26. 用 Speedtest-cli 测试服务器带宽

speedtest-cli 是用 python 写的用于测试网络下载和上传带宽的工具。关于 speedtest-cli 工具的完整安装和使用请阅读我们的文章用命令行查看 Linux 服务器带宽

27. 配置 Cron 任务

这是最广泛使用的软件工具之一。它是一个任务调度器,比如,现在安排一个以后可以自动运行的作业。它用于未处理记录的日志和维护,以及其它日常工作,比如常规备份。所有的调度都写在文件 /etc/crontab 中。

crontab 文件包含下面的 6 个域:

    分          时                日期                      月份                  星期                  命令
(0-59)           (0-23)       (1-31)                (1/jan-12/dec)       (0-6/sun-sat)          Command/script

Crontab 域

Crontab 域

要在每天 04:30 运行一个 cron 任务(比如运行 /home/$USER/script.sh)。

分             时         日期              月份      星期                  命令
30              4             *              *       *            speedtest-cli

就把下面的条目增加到 crontab 文件 ‘/etc/crontab/’。

30  4  *  *  *  /home/$user/script.sh

把上面一行增加到 crontab 之后,它会在每天的 04:30 am 自动运行,输出取决于脚本文件的内容。另外脚本也可以用命令代替。关于更多 cron 任务的例子,可以阅读Linux 上的 11 个 Cron 任务例子

28. 安装 Owncloud

Owncloud 是一个基于 HTTP 的数据同步、文件共享和远程文件存储应用。更多关于安装 owncloud 的内容,你可以阅读这篇文章:在 Linux 上创建个人/私有云存储

29. 启用 Virtualbox 虚拟化

虚拟化是创建虚拟操作系统、硬件和网络的过程,是当今最热门的技术之一。我们会详细地讨论如何安装和配置虚拟化。

我们的最小化 CentOS 服务器是一个无用户界面服务器(LCTT 译注:无用户界面[headless]服务器指没有监视器和鼠标键盘等外设的服务器)。我们通过安装下面的软件包,让它可以托管虚拟机,虚拟机可通过 HTTP 访问。

# yum groupinstall 'Development Tools' SDL kernel-devel kernel-headers dkms

安装开发工具

安装开发工具

更改工作目录到 ‘/etc/yum.repos.d/’ 并下载 VirtualBox 库。

# wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc

安装刚下载的密钥。

# rpm --import oracle_vbox.asc

升级并安装 VirtualBox。

# yum update && yum install virtualbox-4.3

下一步,下载和安装 VirtualBox 扩展包。

# wget http://download.virtualbox.org/virtualbox/4.3.12/Oracle_VM_VirtualBox_Extension_Pack-4.3.12-93733.vbox-extpack
# VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.3.12-93733.vbox-extpack

安装 VirtualBox 扩展包

安装 VirtualBox 扩展包

正在安装 VirtualBox 扩展包

正在安装 VirtualBox 扩展包

添加用户 ‘vbox’ 用于管理 VirtualBox 并把它添加到组 vboxusers 中。

# adduser vbox
# passwd vobx
# usermod -G vboxusers vbox

安装 HTTPD 服务器。

# yum install httpd

安装 PHP (支持 soap 扩展)。

# yum install php php-devel php-common php-soap php-gd

下载 phpVirtualBox(一个 PHP 写的开源的 VirtualBox 用户界面)。

# wget http://sourceforge.net/projects/phpvirtualbox/files/phpvirtualbox-4.3-1.zip

解压 zip 文件并把解压后的文件夹复制到 HTTP 工作目录。

# unzip phpvirtualbox-4.*.zip
# cp phpvirtualbox-4.3-1 -R /var/www/html

下一步,重命名文件 /var/www/html/phpvirtualbox/config.php-example 为 var/www/html/phpvirtualbox/config.php。

# mv config.php.example config.php

打开配置文件并添加我们上一步创建的 ‘username ’ 和 ‘password’。

# vi config.php

最后,重启 VirtualBox 和 HTTP 服务器。

# service vbox-service restart
# service httpd restart

转发端口并从一个有用户界面的服务器上访问它。

http://192.168.0.15/phpvirtualbox-4.3-1/

登录 PHP Virtualbox

登录 PHP Virtualbox

PHP Virtualbox 面板

PHP Virtualbox 面板


via: http://www.tecmint.com/things-to-do-after-minimal-rhel-centos-7-installation/5/

作者:Avishek Kumar 译者:ictlyh 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

17. 安装 Webmin

Webmin 是基于 Web 的 Linux 配置工具。它像一个中央系统,用于配置各种系统设置,比如用户、磁盘分配、服务以及 HTTP 服务器、Apache、MySQL 等的配置。

# wget http://prdownloads.sourceforge.net/webadmin/webmin-1.740-1.noarch.rpm
# rpm -ivh webmin-*.rpm

在 CentOS 7 上安装 Webmin

安装 Webmin

安装完 webmin 后,你会在终端上得到一个消息,提示你用 root 密码在端口 10000 登录你的主机 (http://ip-address:10000)。 如果运行的是无用户界面服务器你可以转发端口然后从有用户界面的机器上访问它。(LCTT 译注:无用户界面[headless]服务器指没有监视器和鼠标键盘等外设的服务器,在此次场景,你可以用其他有显示器和键盘鼠标的机器上访问它。)

18. 启用第三方库

添加不受信任的库并不是一个好主意,尤其是在生产环境中,这可能导致致命的问题。但仅作为例子在这里我们会添加一些社区证实可信任的库,以安装第三方工具和软件包。

为企业版 Linux(EPEL)库添加额外的软件包。

# yum install epel-release

添加社区企业版 Linux (Community Enterprise Linux)库:

# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

安装 Epel 库

安装 Epel 库

注意! 添加第三方库的时候尤其需要注意。

19. 安装 7-zip 工具

在最小化安装 CentOS 时你并没有获得类似 unzip 或者 untar 的工具。我们可以选择根据需要来安装每个工具,或一个能处理所有格式的工具。7-zip 就是一个能压缩和解压所有已知类型文件的工具。

# yum install p7zip

安装 7zip 工具

安装 7zip 工具

注意: 该软件包从 Fedora EPEL 7 的库中下载和安装。

20. 安装 NTFS-3G 驱动

NTFS-3G,一个很小但非常有用的 NTFS 驱动,在大部分类 UNIX 发行版上都可用。它对于挂载和访问 Windows NTFS 文件系统很有用。尽管也有其它可用的替代品,比如 Tuxera,但 NTFS-3G 是使用最广泛的。

# yum install ntfs-3g

在 CentOS 上安装 NTFS-3G

安装 NTFS-3G 用于挂载 Windows 分区

ntfs-3g 安装完成之后,你可以使用以下命令挂载 Windows NTFS 分区(我的 Windows 分区是 /dev/sda5)。

# mount -ro ntfs-3g /dev/sda5 /mnt
# cd /mnt
# ls -l

21. 安装 Vsftpd FTP 服务器

VSFTPD 表示 Very Secure File Transfer Protocol Daemon,是用于类 UNIX 系统的 FTP 服务器。它是现今最高效和安全的 FTP 服务器之一。

# yum install vsftpd

在 CentOS 7 上安装 Vsftpd

安装 Vsftpd FTP

编辑配置文件 ‘/etc/vsftpd/vsftpd.conf’ 用于保护 vsftpd。

# vi /etc/vsftpd/vsftpd.conf

编辑一些值并使其它行保留原样,除非你知道自己在做什么。

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES

你也可以更改端口号,记得让 vsftpd 端口通过防火墙。

# firewall-cmd --add-port=21/tcp
# firewall-cmd --reload

下一步重启 vsftpd 并启用开机自动启动。

# systemctl restart vsftpd
# systemctl enable vsftpd

22. 安装和配置 sudo

sudo 通常被称为 super do 或者 suitable user do,是一个类 UNIX 操作系统中用其它用户的安全权限执行程序的软件。让我们来看看怎样配置 sudo。

# visudo

这会打开 /etc/sudoers 并进行编辑

sudoers 文件

sudoers 文件

  1. 给一个已经创建好的用户(比如 tecmint)赋予所有权限(等同于 root)。
tecmint   ALL=(ALL)    ALL
  1. 如果给一个已经创建好的用户(比如 tecmint)赋予除了重启和关闭服务器以外的所有权限(等同于 root)。

首先,再一次打开文件并编辑如下内容:

cmnd_Alias nopermit = /sbin/shutdown, /sbin/reboot

然后,用逻辑操作符(!)添加该别名。

tecmint   ALL=(ALL)    ALL,!nopermit
  1. 如果准许一个组(比如 debian)运行一些 root 权限命令,比如(增加或删除用户)。
cmnd_Alias permit = /usr/sbin/useradd, /usr/sbin/userdel

然后,给组 debian 增加权限。

debian ALL=(ALL) permit

23. 安装并启用 SELinux

SELinux 表示 Security-Enhanced Linux,是内核级别的安全模块。

# yum install selinux-policy

在 CentOS 7 上安装 SElinux

安装 SElinux 策略

查看 SELinux 当前模式。

# getenforce

查看 SELinux 模式

查看 SELinux 模式

输出是 Enforcing,意味着 SELinux 策略已经生效。

如果需要调试,可以临时设置 selinux 模式为允许。不需要重启。

# setenforce 0

调试完了之后再次设置 selinux 为强制模式,无需重启。

# setenforce 1

(LCTT 译注:在生产环境中,SELinux 固然会提升安全,但是也确实会给应用部署和运行带来不少麻烦。具体是否部署,需要根据情况而定。)

24. 安装 Rootkit Hunter

Rootkit Hunter,简写为 RKhunter,是在 Linux 系统中扫描 rootkits 和其它可能有害攻击的程序。

# yum install rkhunter

安装 Rootkit Hunter

安装 Rootkit Hunter

在 Linux 中,从脚本文件以计划作业的形式运行 rkhunter 或者手动扫描有害攻击。

# rkhunter --check

扫描 rootkits

扫描 rootkits

RootKit 扫描结果

RootKit 扫描结果


via: http://www.tecmint.com/things-to-do-after-minimal-rhel-centos-7-installation/4/

作者:Avishek Kumar 译者:ictlyh 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

无论你是在网站托管业务,还是在自己的VPS上运行几个网站,你总会有需要显示访客统计信息,例如前几的访客、访问请求的文件(无论动态或者静态)、所用的带宽、客户端的浏览器,和访问的来源网站,等等。

GoAccess 是一款用于Apache或者Nginx的命令行日志分析器和交互式查看器。使用这款工具,你不仅可以浏览到之前提及的相关数据,还可以通过分析网站服务器日志来进一步挖掘数据 - 而且这一切都是在一个终端窗口实时输出的。由于今天的大多数web服务器都使用Debian的衍生版或者基于RedHat的发行版来作为底层操作系统,所以本文中我告诉你如何在Debian和CentOS中安装和使用GoAccess。

在Linux系统安装GoAccess

在Debian,Ubuntu及其衍生版本,运行以下命令来安装GoAccess:

# aptitude install goaccess 

在CentOS中,你将需要使你的EPEL 仓库可用然后执行以下命令:

# yum install goaccess

在Fedora,同样使用yum命令:

# yum install goaccess 

如果你想从源码安装GoAccess来使用更多功能(例如 GeoIP 定位功能),需要在你的操作系统安装必需的依赖包,然后按以下步骤进行:

# wget http://tar.goaccess.io/goaccess-0.8.5.tar.gz   
# tar -xzvf goaccess-0.8.5.tar.gz
# cd goaccess-0.8.5/
# ./configure --enable-geoip
# make
# make install 

以上安装的版本是 0.8.5,但是你也可以在该软件的网站下载页确认是否是最新版本。

由于GoAccess不需要后续的配置,一旦安装你就可以马上使用。

运行 GoAccess

开始使用GoAccess,只需要对它指定你的Apache访问日志。

对于Debian及其衍生版本:

# goaccess -f /var/log/apache2/access.log

基于红帽的发行版:

# goaccess -f /var/log/httpd/access_log 

当你第一次启动GoAccess,你将会看到如下的屏幕中选择日期和日志格式。正如前面所述,你可以按空格键进行选择,并按F10确认。至于日期和日志格式,你可能需要参考Apache 文档来刷新你的记忆。

在这个例子中,选择常见日志格式(Common Log Format(CLF)):

然后按F10 确认。你将会从屏幕上看到统计数据。为了简洁起见,这里只显示了首部,也就是日志文件的摘要,如下图所示:

通过 GoAccess来浏览网站服务器统计数据

你可以按向下的箭头滚动页面,你会发现以下区域,它们是按请求排序的。这里提及的目录顺序可能会根据你的发行版或者你所选的安装方式(从源和库)不同而不同:

  1. 每天唯一访客(来自同样IP、同一日期和同一浏览器的请求被认为是是唯一访问)

  1. 请求的文件(网页URL)

  1. 请求的静态文件(例如,.png文件,.js文件等等)
  2. 来源的URLs(每一个URL请求的出处)
  3. HTTP 404 未找到的响应代码

  1. 操作系统
  2. 浏览器
  3. 主机地址(客户端IP地址)

  1. HTTP 状态代码

  1. 前几位的来源站点
  2. 来自谷歌搜索引擎的前几位的关键字

如果你想要检查已经存档的日志,你可以通过管道将它们发送给GoAccess,如下:

在Debian及其衍生版本:

# zcat -f /var/log/apache2/access.log* | goaccess 

在基于红帽的发行版:

# cat /var/log/httpd/access* | goaccess 

如果你需要上述部分的详细报告(1至11项),直接按下其序号再按O(大写o),就可以显示出你需要的详细视图。下面的图像显示5-O的输出(先按5,再按O)

如果要显示GeoIP位置信息,打开主机部分的详细视图,如前面所述,你将会看到正在请求你的服务器的客户端IP地址所在的位置。

如果你的系统还不是很忙碌,以上提及的章节将不会显示大量的信息,但是这种情形可以通过在你网站服务器越来越多的请求发生改变。

保存用于离线分析的报告

有时候你不想每次都实时去检查你的系统状态,可以保存一份在线的分析文件或打印出来。要生成一个HTML报告,只需要通过之前提到GoAccess命令,将输出来重定向到一个HTML文件即可。然后,用web浏览器来将这份报告打开即可。

# zcat -f /var/log/apache2/access.log* | goaccess > /var/www/webserverstats.html

一旦报告生成,你将需要点击展开的链接来显示每个类别详细的视图信息:

可以查看youtube视频:https://youtu.be/UVbLuaOpYdg

正如我们通过这篇文章讨论,GoAccess是一个非常有价值的工具,它能给系统管理员实时提供可视的HTTP 统计分析。虽然GoAccess的默认输出是标准输出,但是你也可以将他们保存到JSON,HTML或者CSV文件。这种转换可以让 GoAccess在监控和显示网站服务器的统计数据时更有用。


via: http://xmodulo.com/interactive-apache-web-server-log-analyzer-linux.html

作者:Gabriel Cánepa 译者:disylee 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

这是关于文件列表命令的第二篇文章,继续探讨‘ls’命令的其他方面。该系列的第一篇文章受到了社区的高度关注,如果你错过了该系列的第一部分,可以访问以下地址:

这篇文章通过样例来很好地展现‘ls’命令的深入应用,我们加倍小心地来写这篇文章来保持其简洁可理解性,同时又能提供最全面的服务。

10 Interview Questions on ls Command

10 ‘ls’ 命令面试的问题

16. 假如你想要以长列表的形式列出目录中的内容,但是不打印文件创建者名称以及文件所属组。看看输出有何不同之处。

a. ls 命令在与‘-l’选项一起使用时会将文件以长列表格式输出。

# ls -l

List Files in- Long List Format

以长格式列出文件

b. ls 命令在与‘-l’和‘--author’一起使用时,会将文件以长列表格式输出并带有文件创建者的名称信息。

# ls -l --author

List Files By Author

列出文件的创建者

c. ls 命令在与‘-g’选项 一起将会列出文件名但是不带属主名称。

# ls -g

List Files Without Printing Owner Name

列出文件但不列出属主

d. ls 命令在与'-G'和‘-l’选项一起将会使用长列表格式列出文件名称但是不带文件所属组名称。

# ls -Gl

List Files Without Printing Group

列出文件但是不列出所属组

17. 使用易读格式打印出当前目录中的文件以及文件夹的大小,你会如何做?

这里我们需要使用'-h'选项(人类可阅读的、易读的)同‘-l’或‘-s’选项与ls命令一起使用来得到想要的输出。

# ls -hl

List Files in Human Readable Format

以易读格式的长列表列出文件

# ls -hs

List File Sizes in Long List Format

以易读格式的短列表列出文件

注意: ‘-h’选项使用1024(计算机中的标准)的幂,文件或文件夹的大小分别以K,M和G作为输出单位。

18. 既然‘-h’选项是使用1024的幂作为标准来输出大小,那么ls命令是否还支持其他的幂值呢?

存在一个选项 ‘--si’与选项‘-h’相似,不同之处在于前者以使用1000的幂,后者使用1024的幂。

# ls --si

所以'--si'也可以与‘-l’选项一起使用来按照1000的幂来输出文件夹的大小,并且以长列表格式显示。

# ls --si -l

(LCTT 译注:此处原文参数有误,附图也不对,因此删除之。--si 参数是双连线参数,而且有的版本的 ls 并不支持该参数)

19. 假如要你使用逗号‘,’作为分隔符来打印一个目录中的内容,可以吗? 对于长列表形式也可行吗?

当然!linux的ls命令当与其选项‘-m’一起使用时可以在打印目录内容时以逗号‘,’分割。由于逗号分割的内容是水平填充的,ls命令不能在垂直列出内容时使用逗号来分割内容。

# ls -m

Print Contents of Directory by Comma

以逗号分隔显示内容

当使用长列表格式时,‘-m’选项就没有什么效果了。

# ls -ml

Listing Content Horizontally

长列表不能使用逗号分隔列表

20. 有办法将目录的内容逆序打印出来吗?

可以!上面的情形可以轻松地通过'-r'选项搞定,该选项将输出顺序倒置。这个选项也可以与‘-l’选项一起使用。

# ls -r

List Content in Reverse Order

逆序列出

# ls -rl

Long List Content in Reverse Order

逆序长列表

21. 如果你被分配一个任务,来递归地打印各个子目录,你会如何应付?注意,只针对子目录而不是文件哦。

小意思!使用“-R”选项就可以轻轻松松拿下,它也可以更进一步地与其他选项如‘-l’和‘-m’选项等组合使用。

# ls -R

Print Sub Directories in Recursively

递归列出子目录

22. 如何按照文件大小对其进行排序?

linux命令行选项'-S'赋予了ls命令这个超能力。按照文件大小从大到小的顺序排序:

# ls -S

Sort Files with ls Command 按文件大小排序

按照文件大小从小到大的顺序排序。

# ls -Sr

Sort Files in Descending Order

从小到大的排序

23. 按照一行一个文件列出目录中的内容,并且不带额外信息的方式

选项‘-1’在此可以解决这个问题,使用‘-1’选项来使用ls命令可以将目录中的内容按照一行一个文件并且不带额外信息的方式进行输出。

# ls -1

List Files Without Information

不带其他信息,一行一个列出文件

24. 现在委派给你一个任务,你必须将目录中的内容输出到终端而且需要使用双引号引起来,你会如何做?

有一个选项‘-Q’会将ls命令的输出内容用双引号引起来。

# ls -Q

Print Files with Double Quotes

输出的文件名用引号引起来

25. 想象一下你正在与一个包含有很多文件和文件夹的目录打交道,你需要使目录名显示在文件名之前,你如何做?

# ls --group-directories-first

Print Directories First

目录优先显示

先点到为止,我们会马上提供该系列文章的下一部分。别换频道,关注我们。 另外别忘了在下面的评论中提出你们宝贵的反馈信息,喜欢就分享,帮助我们得到更好的传播吧!


via: http://www.tecmint.com/ls-interview-questions/

作者:Ravi Saive 译者:theo-l 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出