标签 RHCSA 下的文章

和管理其它Linux服务器一样,管理一个 RHEL 7 服务器要求你能够添加、修改、暂停或删除用户帐户,并且授予他们执行其分配的任务所需的文件、目录、其它系统资源所必要的权限。

User and Group Management in Linux

RHCSA: 用户和组管理 – Part 3

管理用户帐户

如果想要给RHEL 7 服务器添加账户,你需要以root用户执行如下两条命令之一:

# adduser [new_account]
# useradd [new_account]

当添加新的用户帐户时,默认会执行下列操作。

  • 它/她的主目录就会被创建(一般是"/home/用户名",除非你特别设置)
  • 一些隐藏文件 如.bash_logout, .bash_profile 以及 .bashrc 会被复制到用户的主目录,它们会为用户的回话提供环境变量。你可以进一步查看它们的相关细节。
  • 会为您的账号添加一个邮件池目录。
  • 会创建一个和用户名同样的组(LCTT 译注:除非你给新创建的用户指定了组)。

用户帐户的全部信息被保存在/etc/passwd文件。这个文件以如下格式保存了每一个系统帐户的所有信息(字段以“:”分割)

[username]:[x]:[UID]:[GID]:[Comment]:[Home directory]:[Default shell]
  • [username][Comment] 其意自明,就是用户名和备注
  • 第二个‘x’表示帐户的启用了密码保护(记录在/etc/shadow文件),密码用于登录[username]
  • [UID][GID]是整数,它们表明了[username]的用户ID 和所属的主组ID

最后。

  • [Home directory]显示[username]的主目录的绝对路径
  • [Default shell] 是当用户登录系统后使用的默认shell

另外一个你必须要熟悉的重要的文件是存储组信息的/etc/group。和/etc/passwd类似,也是每行一个记录,字段由“:”分割

[Group name]:[Group password]:[GID]:[Group members]
  • [Group name] 是组名
  • 这个组是否使用了密码 (如果是"x"意味着没有)
  • [GID]: 和/etc/passwd中一样
  • [Group members]:用户列表,使用“,”隔开。里面包含组内的所有用户

添加过帐户后,任何时候你都可以通过 usermod 命令来修改用户账户信息,基本的语法如下:

# usermod [options] [username]

相关阅读

示例1 : 设置帐户的过期时间

如果你的公司有一些短期使用的帐户或者你要在有限时间内授予访问,你可以使用 --expiredate 参数 ,后加YYYY-MM-DD 格式的日期。为了查看是否生效,你可以使用如下命令查看

# chage -l [username]

帐户更新前后的变动如下图所示

Change User Account Information

修改用户信息

示例 2: 向组内追加用户

除了创建用户时的主用户组,一个用户还能被添加到别的组。你需要使用 -aG或 -append -group 选项,后跟逗号分隔的组名。

示例 3: 修改用户主目录或默认Shell

如果因为一些原因,你需要修改默认的用户主目录(一般为 /home/用户名),你需要使用 -d 或 -home 参数,后跟绝对路径来修改主目录。

如果有用户想要使用其它的shell来取代默认的bash(比如zsh)。使用 usermod ,并使用 -shell 的参数,后加新的shell的路径。

示例 4: 展示组内的用户

当把用户添加到组中后,你可以使用如下命令验证属于哪一个组

# groups [username]
# id [username]

下面图片的演示了示例2到示例4

Adding User to Supplementary Group

添加用户到额外的组

在上面的示例中:

# usermod --append --groups gacanepa,users --home /tmp --shell /bin/sh tecmint

如果想要从组内删除用户,取消 --append 选项,并使用 --groups 和你要用户属于的组的列表。

示例 5: 通过锁定密码来停用帐户

如果想要关闭帐户,你可以使用 -l(小写的L)或 -lock 选项来锁定用户的密码。这将会阻止用户登录。

示例 6: 解锁密码

当你想要重新启用帐户让它可以继续登录时,使用 -u 或 –unlock 选项来解锁用户的密码,就像示例5 介绍的那样

# usermod --unlock tecmint

下面的图片展示了示例5和示例6:

Lock Unlock User Account

锁定上锁用户

示例 7:删除组和用户

如果要删除一个组,你需要使用 groupdel ,如果需要删除用户 你需要使用 userdel (添加 -r 可以删除主目录和邮件池的内容)。

# groupdel [group_name]        # 删除组
# userdel -r [user_name]       # 删除用户,并删除主目录和邮件池

如果一些文件属于该组,删除组时它们不会也被删除。但是组拥有者的名字将会被设置为删除掉的组的GID。

列举,设置,并且修改标准 ugo/rwx 权限

著名的 ls 命令 是管理员最好的助手. 当我们使用 -l 参数, 这个工具允许您以长格式(或详细格式)查看一个目录中的内容。

而且,该命令还可以用于单个文件中。无论哪种方式,在“ls”输出中的前10个字符表示每个文件的属性。

这10个字符序列的第一个字符用于表示文件类型:

  • – (连字符): 一个标准文件
  • d: 一个目录
  • l: 一个符号链接
  • c: 字符设备(将数据作为字节流,例如终端)
  • b: 块设备(以块的方式处理数据,例如存储设备)

文件属性的接下来的九个字符,分为三个组,被称为文件模式,并注明读(r)、写(w)、和执行(x)权限授予文件的所有者、文件的所有组、和其它的用户(通常被称为“世界”)。

同文件上的读取权限允许文件被打开和读取一样,如果目录同时有执行权限时,就允许其目录内容被列出。此外,如果一个文件有执行权限,就允许它作为一个程序运行。

文件权限是通过chmod命令改变的,它的基本语法如下:

# chmod [new_mode] file

new\_mode 是一个八进制数或表达式,用于指定新的权限。随意试试各种权限看看是什么效果。或者您已经有了一个更好的方式来设置文件的权限,你也可以用你自己的方式自由地试试。

八进制数可以基于二进制等价计算,可以从所需的文件权限的文件的所有者、所有组、和世界组合成。每种权限都等于2的幂(R = 2^2,W = 2^1,x = 2^0),没有时即为0。例如:

File Permissions

文件权限

在八进制形式下设置文件的权限,如上图所示

# chmod 744 myfile

请用马上来对比一下我们以前的计算,在更改文件的权限后,我们的实际输出为:

Long List Format

长列表格式

示例 8: 寻找777权限的文件

出于安全考虑,你应该确保在正常情况下,尽可能避免777权限(任何人可读、可写、可执行的文件)。虽然我们会在以后的教程中教你如何更有效地找到您的系统的具有特定权限的全部文件,你现在仍可以组合使用ls 和 grep来获取这种信息。

在下面的例子,我们会寻找 /etc 目录下的777权限文件。注意,我们要使用第二章:文件和目录管理中讲到的管道的知识:

# ls -l /etc | grep rwxrwxrwx

Find All Files with 777 Permission

查找所有777权限的文件

示例 9: 为所有用户指定特定权限

shell脚本,以及一些二进制文件,所有用户都应该有权访问(不只是其相应的所有者和组),应该有相应的执行权限(我们会讨论特殊情况下的问题):

# chmod a+x script.sh

注意: 我们可以使用表达式设置文件模式,表示用户权限的字母如“u”,组所有者权限的字母“g”,其余的为“o” ,同时具有所有权限为“a”。权限可以通过+- 来授予和收回。

Set Execute Permission on File

为文件设置执行权限

长目录列表还用两列显示了该文件的所有者和所有组。此功能可作为系统中文件的第一级访问控制方法:

Check File Owner and Group

检查文件的所有者和所有组

改变文件的所有者,您应该使用chown命令。请注意,您可以在同时或分别更改文件的所有组:

# chown user:group file

你可以更改用户或组,或在同时更改两个属性,但是不要忘记冒号区分,如果你想要更新其它属性,让另外的部分为空:

# chown :group file              # 仅改变所有组
# chown user: file               # 仅改变所有者

示例 10:从一个文件复制权限到另一个文件

如果你想“克隆”一个文件的所有权到另一个,你可以这样做,使用–reference参数,如下:

# chown --reference=ref_file file

ref\_file的所有信息会复制给 file

Clone File Ownership

复制文件属主信息

设置 SETGID 协作目录

假如你需要授予在一个特定的目录中拥有访问所有的文件的权限给一个特定的用户组,你有可能需要使用给目录设置setgid的方法。当setgid设置后,该真实用户的有效GID会变成属主的GID。

因此,任何访问该文件的用户会被授予该文件的属组的权限。此外,当setgid设置在一个目录中,新创建的文件继承组该目录的组,而且新创建的子目录也将继承父目录的setgid权限。

# chmod g+s [filename]

要以八进制形式设置 setgid,需要在基本权限前缀以2。

# chmod 2755 [directory]

总结

扎实的用户和组管理知识,以及标准和特殊的 Linux权限管理,通过实践,可以帮你快速解决 RHEL 7 服务器的文件权限问题。

我向你保证,当你按照本文所概述的步骤和使用系统文档(在本系列的第一章 回顾基础命令及系统文档中讲到), 你将掌握基本的系统管理的能力。

请随时使用下面的评论框让我们知道你是否有任何问题或意见。


via: http://www.tecmint.com/rhcsa-exam-manage-users-and-groups/

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

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

在本篇中,我们将回顾一些系统管理员日常任务需要的技能。

RHCSA: Perform File and Directory Management – Part 2

RHCSA: 运行文件以及进行文件夹管理 - 第二部分

创建、删除、复制和移动文件及目录

文件和目录管理是每一个系统管理员都应该掌握的必备技能。它包括了从头开始的创建、删除文本文件(每个程序的核心配置)以及目录(你用来组织文件和其它目录),以及识别已有文件的类型。

touch 命令 不仅仅能用来创建空文件,还能用来更新已有文件的访问时间和修改时间。

touch command example

touch 命令示例

你可以使用 file [filename]来判断一个文件的类型 (在你用文本编辑器编辑之前,判断类型将会更方便编辑)。

file command example

file 命令示例

使用rm [filename] 可以删除文件。

Linux rm command examples

rm 命令示例

对于目录,你可以使用mkdir [directory]在已经存在的路径中创建目录,或者使用 mkdir -p [/full/path/to/directory]带全路径创建文件夹。

mkdir command example

mkdir 命令示例

当你想要去删除目录时,在你使用rmdir [directory] 前,你需要先确保目录是空的,或者使用更加强力的命令(小心使用它!)rm -rf [directory]。后者会强制删除[directory]以及它的内容,所以使用这个命令存在一定的风险。

输入输出重定向以及管道

命令行环境提供了两个非常有用的功能:允许重定向命令的输入和输出为另一个文件,以及发送命令的输出到另一个命令,这分别称为重定向和管道。

为了理解这两个重要概念,我们首先需要理解三个最重要的字符输入输出流类型,以 *nix 的话来说,它们实际上是特殊的文件。

  • 标准输入 (即 stdin),默认连接到键盘。 换句话说,键盘是输入命令到命令行的标准输入设备。
  • 标准输出 (即 stdout),默认连接到屏幕。 找个设备“接受”命令的输出,并展示到屏幕上。
  • 标准错误 (即 stderr),默认是命令的状态消息出现的地方,它也是屏幕。

在下面的例子中,ls /var的结果被发送到stdout(屏幕展示),ls /tecmint 的结果也一样。但在后一种情况下,它显示在标准错误输出上。

Linux input output redirect

输入和输出命令实例

为了更容易识别这些特殊文件,每个文件都被分配有一个文件描述符,这是用于访问它们的抽象标识。主要要理解的是,这些文件就像其它的一样,可以被重定向。这就意味着你可以从一个文件或脚本中捕获输出,并将它传送到另一个文件、命令或脚本中。这样你就可以在磁盘上存储命令的输出结果,用于稍后的分析。

要重定向 stdin (fd 0)、 stdout (fd 1) 或 stderr (fd 2),可以使用如下操作符。

转向操作效果
>重定向标准输出到一个文件。如果目标文件存在,内容就会被重写。
>>添加标准输出到文件尾部。
2>重定向标准错误输出到一个文件。如果目标文件存在,内容就会被重写。
2>>添加标准错误输出到文件尾部。
&>重定向标准错误和标准输出到一个文件。如果目标文件存在,内容就会被重写。
<使用特定的文件做标准输入。
<>使用特定的文件做标准输入和标准输出。

与重定向相比,管道是通过在命令后和另外一个命令前之间添加一个竖杠(|)

记得:

  • 重定向是用来定向命令的输出到一个文件,或把一个文件发送作为到一个命令的输入。
  • 管道是用来将命令的输出转发到另一个命令作为其输入。

重定向和管道的使用实例

例1:将一个命令的输出到文件

有些时候,你需要遍历一个文件列表。要做到这样,你可以先将该列表保存到文件中,然后再按行读取该文件。虽然你可以直接遍历ls的输出,不过这个例子是用来说明重定向。

# ls -1 /var/mail > mail.txt

Redirect output of command tot a file

将一个命令的输出重定向到文件

例2:重定向stdout和stderr到/dev/null

如果不想让标准输出和标准错误展示在屏幕上,我们可以把这两个文件描述符重定向到 /dev/null。请注意对于同样的命令,重定向是如何改变了输出。

# ls /var /tecmint
# ls /var/ /tecmint &> /dev/null

Redirecting stdout and stderr ouput to /dev/null

重定向stdout和stderr到/dev/null

例3:使用一个文件作为命令的输入

cat 命令的经典用法如下

# cat [file(s)]

您还可以使用正确的重定向操作符发送一个文件作为输入。

# cat < mail.txt

Linux cat command examples

cat 命令实例

例4:发送一个命令的输出作为另一个命令的输入

如果你有一个较大的目录或进程列表,并且想快速定位,你或许需要将列表通过管道传送给grep。

接下来我们会在下面的命令中使用管道,第一个管道是查找所需的关键词,第二个管道是除去产生的 grep command。这个例子列举了所有与apache用户有关的进程:

# ps -ef | grep apache | grep -v grep

Send output of command as input to another

发送一个命令的输出作为另一个命令的输入

归档,压缩,解包,解压文件

如果你需要传输、备份、或者通过邮件发送一组文件,你可以使用一个存档(或打包)工具,如 tar,通常与gzip,bzip2,或 xz 等压缩工具配合使用。

您选择的压缩工具每一个都有自己不同的压缩速度和压缩率。这三种压缩工具,gzip是最古老和可以较小压缩的工具,bzip2提供经过改进的压缩,以及xz是最新的而且压缩最大。通常情况下,使用这些压缩工具压缩的文件的扩展名依次是.gz、.bz2或.xz。

命令缩写描述
–createc创建一个tar归档
–concatenateA添加tar归档到另外一个归档中
–appendr添加非tar归档到另外一个归档中
–updateu添加比归档中的文件更新的文件
–diff or –compared将归档中的文件和硬盘的文件进行对比
–listt列举一个tar压缩包的内容
–extract or –getx从归档中提取文件
操作参数缩写描述
—directory dirC在执行操作前更改目录
—same-permissions and —same-ownerp分别保留权限和所有者信息
–verbosev列举所有读取或提取的文件,如果和 --list 参数一起使用,也会显示文件的大小、所有权和时间戳
—exclude file从存档中排除文件。在这种情况下,文件可以是一个实际的文件或匹配模式。
—gzip or —gunzipz使用gzip压缩归档
–bzip2j使用bzip2压缩归档
–xzJ使用xz压缩归档

例5:创建一个tar文件,然后使用三种压缩工具压缩

在决定使用这个还是那个工具之前,您可能想比较每个工具的压缩效率。请注意压缩小文件或几个文件,结果可能不会有太大的差异,但可能会给你看出它们的差异。

# tar cf ApacheLogs-$(date +%Y%m%d).tar /var/log/httpd/*        # Create an ordinary tarball
# tar czf ApacheLogs-$(date +%Y%m%d).tar.gz /var/log/httpd/*    # Create a tarball and compress with gzip
# tar cjf ApacheLogs-$(date +%Y%m%d).tar.bz2 /var/log/httpd/*   # Create a tarball and compress with bzip2
# tar cJf ApacheLogs-$(date +%Y%m%d).tar.xz /var/log/httpd/*    # Create a tarball and compress with xz

Linux tar command examples

tar 命令实例

例6:归档时同时保存原始权限和所有权

如果你正在从用户的主目录创建备份,你需要要存储的个人文件与原始权限和所有权,而不是通过改变它们的用户帐户或守护进程来执行备份。下面的命令可以在归档时保留文件属性。

# tar cJf ApacheLogs-$(date +%Y%m%d).tar.xz /var/log/httpd/* --same-permissions --same-owner

创建软连接和硬链接

在Linux中,有2种类型的链接文件:硬链接和软(也称为符号)链接。因为硬链接文件只是现存文件的另一个名字,使用相同的 inode 号,它指向实际的数据;而符号链接只是指向的文件名。

此外,硬链接不占用磁盘上的空间,而符号链接则占用少量的空间来存储的链接本身的文本。硬链接的缺点就是要求它们必须在同一个文件系统内,因为 inode 在一个文件系统内是唯一的。而符号链接没有这个限制,它们通过文件名而不是 inode 指向其它文件或目录,所以可以跨文件系统。

创建链接的基本语法看起来是相似的:

# ln TARGET LINK_NAME               #从LINK_NAME到Target的硬链接
# ln -s TARGET LINK_NAME            #从LINK_NAME到Target的软链接

例7:创建硬链接和软链接

没有更好的方式来形象的说明一个文件和一个指向它的硬链接或符号链接的关系,而不是创建这些链接。在下面的截图中你会看到文件和指向它的硬链接共享相同的inode,都是使用了相同的466个字节的磁盘。

另一方面,在别的磁盘创建一个硬链接将占用5个字节,这并不是说你将耗尽存储容量,而是这个例子足以说明一个硬链接和软链接之间的区别。

Difference between a hard link and a soft link

软连接和硬链接之间的不同

在Linux系统上符号链接的典型用法是指向一个带版本的文件。假设有几个程序需要访问文件fooX.Y,但麻烦是版本经常变化(像图书馆一样)。每次版本更新时我们都需要更新指向 fooX.Y 的单一引用,而更安全、更快捷的方式是,我们可以让程序寻找名为 foo 的符号链接,它实际上指向 fooX.Y。

这样的话,当你的X和Y发生变化后,你只需更新符号链接 foo 到新的目标文件,而不用跟踪每个对目标文件的使用并更新。

总结

在这篇文章中,我们回顾了一些基本的文件和目录管理技能,这是每个系统管理员的工具集的一部分。请确保阅读了本系列的其它部分,并将这些主题与本教程所涵盖的内容相结合。

如果你有任何问题或意见,请随时告诉我们。我们总是很高兴从读者那获取反馈.


via: http://www.tecmint.com/file-and-directory-management-in-linux/

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

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

RHCSA (红帽认证系统工程师) 是由 RedHat 公司举行的认证考试,这家公司给商业公司提供开源操作系统和软件,除此之外,还为这些企业和机构提供支持、训练以及咨询服务等。

RHCSA Exam Guide

RHCSA 考试准备指南

RHCSA 考试(考试编号 EX200)通过后可以获取由 RedHat 公司颁发的证书. RHCSA 考试是 RHCT(红帽认证技师)的升级版,而且 RHCSA 必须在新的 Red Hat Enterprise Linux(红帽企业版)下完成。RHCT 和 RHCSA 的主要变化就是 RHCT 基于 RHEL5,而 RHCSA 基于 RHEL6 或者7,这两个认证的等级也有所不同。

红帽认证管理员最起码可以在红帽企业版的环境下执行如下系统管理任务:

  • 理解并会使用命令管理文件、目录、命令行以及系统/软件包的文档
  • 在不同的启动等级操作运行中的系统,识别和控制进程,启动或停止虚拟机
  • 使用分区和逻辑卷管理本地存储
  • 创建并且配置本地文件系统和网络文件系统,设置他们的属性(权限、加密、访问控制表)
  • 部署、配置、并且控制系统,包括安装、升级和卸载软件
  • 管理系统用户和组,以及使用集中制的 LDAP 目录进行用户验证
  • 确保系统安全,包括基础的防火墙规则和 SELinux 配置

关于你所在国家的考试注册和费用请参考 RHCSA 认证页面

在这个有15章的 RHCSA(红帽认证管理员)备考系列中,我们将覆盖以下的关于红帽企业 Linux 第七版的最新的信息:

在第一章,我们讲解如何在终端或者 Shell 窗口输入和运行正确的命令,并且讲解如何找到、查阅,以及使用系统文档。

RHCSA: Reviewing Essential Linux Commands – Part 1

RHCSA:回顾必会的 Linux 命令 - 第一部分

前提:

至少你要熟悉如下命令

在这篇文章中你将会找到更多的关于如何更好的使用他们的正确用法和特殊用法.

虽然没有严格的要求,但是作为讨论常用的 Linux 命令和在 Linux 中搜索信息方法,你应该安装 RHEL7 来尝试使用文章中提到的命令。这将会使你学习起来更省力。

使用 Shell 进行交互

如果我们使用文本模式登录 Linux,我们就会直接进入到我们的默认 shell 中。另一方面,如果我们使用图形化界面登录,我们必须通过启动一个终端来开启 shell。无论那种方式,我们都会看到用户提示符,并且我们可以在这里输入并且执行命令(当按下回车时,命令就会被执行)。

命令是由两个部分组成的:

  • 命令本身
  • 参数

某些参数,称为选项(通常使用一个连字符开头),会改变命令的行为方式,而另外一些则指定了命令所操作的对象。

type 命令可以帮助我们识别某一个特定的命令是由 shell 内置的还是由一个单独的包提供的。这样的区别在于我们能够在哪里找到更多关于该命令的更多信息。对 shell 内置的命令,我们需要看 shell 的手册页;如果是其他的,我们需要看软件包自己的手册页。

Check Shell built in Commands

检查Shell的内置命令

在上面的例子中, cdtype 是 shell 内置的命令,topless 是由 shell 之外的其他的二进制文件提供的(在这种情况下,type将返回命令的位置)。

其他的内置命令:

More Built in Shell Commands

其它内置命令

exec 命令

它用来运行我们指定的外部程序。请注意在多数情况下,只需要输入我们想要运行的程序的名字就行,不过exec 命令有一个特殊的特性:不是在 shell 之外创建新的进程运行,而是这个新的进程会替代原来的 shell,可以通过下列命令来验证。

# ps -ef | grep [shell 进程的PID]

当新的进程终止时,Shell 也随之终止。运行 exec top ,然后按下 q 键来退出 top,你会注意到 shell 会话也同时终止,如下面的屏幕录像展示的那样:

export 命令

给之后执行的命令的输出环境变量。

history 命令

展示数行之前的历史命令。命令编号前面前缀上感叹号可以再次执行这个命令。如果我们需要编辑历史列表中的命令,我们可以按下 Ctrl + r 并输入与命令相关的第一个字符。我们可以看到的命令会自动补全,可以根据我们目前的需要来编辑它:

命令列表会保存在一个叫 .bash_history 的文件里。history 命令是一个非常有用的用于减少输入次数的工具,特别是进行命令行编辑的时候。默认情况下,bash 保留最后输入的500个命令,不过可以通过修改 HISTSIZE 环境变量来增加:

Linux history Command

Linux history 命令

但上述变化,在我们的下一次启动不会保留。为了保持 HISTSIZE 变量的变化,我们需要通过手工修改文件编辑:

# 要设置 history 长度,请看 bash(1)文档中的 HISTSIZE 和 HISTFILESIZE
HISTSIZE=1000

重要: 我们的更改不会立刻生效,除非我们重启了 shell 。

alias 命令

没有参数或使用 -p 选项时将会以“名称=值”的标准形式输出别名列表。当提供了参数时,就会按照给定的名字和值定义一个别名。

使用 alias ,我们可以创建我们自己的命令,或使用所需的参数修改现有的命令。举个例子,假设我们将 ls 定义别名为 ls –color=auto ,这样就可以使用不同颜色输出文件、目录、链接等等。

# alias ls='ls --color=auto'

Linux alias Command

Linux 别名命令

注意: 你可以给你的“新命令”起任何的名字,并且使用单引号包括很多命令,但是你要用分号区分开它们。如下:

# alias myNewCommand='cd /usr/bin; ls; cd; clear'

exit 命令

exitlogout 命令都可以退出 shell 。exit 命令可以退出所有的 shell,logout 命令只注销登录的 shell(即你用文本模式登录时自动启动的那个)。

man 和 info 命令

如果你对某个程序有疑问,可以参考它的手册页,可以使用 man 命令调出它。此外,还有一些关于重要文件(inittab、fstab、hosts 等等)、库函数、shell、设备及其他功能的手册页。

举例:

  • man uname (输出系统信息,如内核名称、处理器、操作系统类型、架构等)
  • man inittab (初始化守护进程的设置)

另外一个重要的信息的来源是由 info 命令提供的,info 命令常常被用来读取 info 文件。这些文件往往比手册页 提供了更多信息。可以通过 info keyword 调用某个命令的信息:

# info ls
# info cut

另外,在 /usr/share/doc 文件夹包含了大量的子目录,里面可以找到大量的文档。它们是文本文件或其他可读格式。

你要习惯于使用这三种方法去查找命令的信息。重点关注每个命令文档中介绍的详细的语法。

使用 expand 命令把制表符转换为空格

有时候文本文档包含了制表符,但是程序无法很好的处理。或者我们只是简单的希望将制表符转换成空格。这就是用到 expand 地方(由GNU核心组件包提供) 。

举个例子,我们有个文件 NumberList.txt,让我们使用 expand 处理它,将制表符转换为一个空格,并且显示在标准输出上。

# expand --tabs=1 NumbersList.txt

Linux expand Command

Linux expand 命令

unexpand命令可以实现相反的功能(将空格转为制表符)

使用 head 输出文件首行及使用 tail 输出文件尾行

通常情况下,head 命令后跟着文件名时,将会输出该文件的前十行,我们可以通过 -n 参数来自定义具体的行数。

# head -n3 /etc/passwd
# tail -n3 /etc/passwd

Linux head and tail Command

Linux 的 head 和 tail 命令

tail 最有意思的一个特性就是能够显示增长的输入文件(tail -f my.log,my.log 是我们需要监视的文件。)这在我们监控一个持续增加的日志文件时非常有用。

使用 paste 按行合并文本文件

paste 命令一行一行的合并文件,默认会以制表符来区分每个文件的行,或者你可以自定义的其它分隔符。(下面的例子就是输出中的字段使用等号分隔)。

# paste -d= file1 file2

Merge Files in Linux

Linux 中的 merge 命令

使用 split 命令将文件分块

split 命令常常用于把一个文件切割成两个或多个由我们自定义的前缀命名的文件。可以根据大小、区块、行数等进行切割,生成的文件会有一个数字或字母的后缀。在下面的例子中,我们将切割 bash.pdf ,每个文件 50KB (-b 50KB),使用数字后缀 (-d):

# split -b 50KB -d bash.pdf bash_

Split Files in Linux

在 Linux 下切割文件

你可以使用如下命令来合并这些文件,生成原来的文件:

# cat bash_00 bash_01 bash_02 bash_03 bash_04 bash_05 > bash.pdf

使用 tr 命令替换字符

tr 命令多用于一对一的替换(改变)字符,或者使用字符范围。和之前一样,下面的实例我们将使用之前的同样文件file2,我们将做:

  • 小写字母 o 变成大写
  • 所有的小写字母都变成大写字母
cat file2 | tr o O
cat file2 | tr [a-z] [A-Z]

Translate Characters in Linux

在 Linux 中替换字符

使用 uniq 和 sort 检查或删除重复的文字

uniq 命令可以帮我们查出或删除文件中的重复的行,默认会输出到标准输出,我们应当注意,uniq只能查出相邻的相同行,所以,uniq 往往和 sort 一起使用(sort 一般用于对文本文件的内容进行排序)

默认情况下,sort 以第一个字段(使用空格分隔)为关键字段。想要指定不同关键字段,我们需要使用 -k 参数,请注意如何使用 sortuniq 输出我们想要的字段,具体可以看下面的例子:

# cat file3
# sort file3 | uniq
# sort -k2 file3 | uniq
# sort -k3 file3 | uniq

删除文件中重复的行

删除文件中重复的行

从文件中提取文本的命令

cut 命令基于字节(-b)、字符(-c)、或者字段(-f)的数量,从输入文件(标准输入或文件)中提取到的部分将会以标准输出上。

当我们使用字段 cut 时,默认的分隔符是一个制表符,不过你可以通过 -d 参数来自定义分隔符。

# cut -d: -f1,3 /etc/passwd # 这个例子提取了第一和第三字段的文本
# cut -d: -f2-4 /etc/passwd # 这个例子提取了第二到第四字段的文本

从文件中提取文本

从文件中提取文本

注意,简洁起见,上方的两个输出的结果是截断的。

使用 fmt 命令重新格式化文件

fmt 被用于去“清理”有大量内容或行的文件,或者有多级缩进的文件。新的段落格式每行不会超过75个字符宽,你能通过 -w (width 宽度)参数改变这个设定,它可以设置行宽为一个特定的数值。

举个例子,让我们看看当我们用 fmt 显示定宽为100个字符的时候的文件 /etc/passwd 时会发生什么。再次,输出截断了。

# fmt -w100 /etc/passwd

File Reformatting in Linux

Linux 文件重新格式化

使用 pr 命令格式化打印内容

pr 分页并且在按列或多列的方式显示一个或多个文件。 换句话说,使用 pr 格式化一个文件使它打印出来时看起来更好。举个例子,下面这个命令:

# ls -a /etc | pr -n --columns=3 -h "Files in /etc"

以一个友好的排版方式(3列)输出/etc下的文件,自定义了页眉(通过 -h 选项实现)、行号(-n)。

File Formatting in Linux

Linux的文件格式化

总结

在这篇文章中,我们已经讨论了如何在 Shell 或终端以正确的语法输入和执行命令,并解释如何找到,查阅和使用系统文档。正如你看到的一样简单,这就是你成为 RHCSA 的第一大步。

如果你希望添加一些其他的你经常使用的能够有效帮你完成你的日常工作的基础命令,并愿意分享它们,请在下方留言。也欢迎提出问题。我们期待您的回复。


via: http://www.tecmint.com/rhcsa-exam-reviewing-essential-commands-system-documentation/

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

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