LINUX学习(2)

Linux 指令

文本文件编辑命令

cat

cat 命令用于查看纯文本文件(内容较少的),格式为“cat [选项] [文件]”
如果在查看文本内容时还想顺便显示行号的话,不妨在cat命令后面追加一个-n参数:

[root@RICARDOfs ~]# cat -n index.html
     1	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
     2	<html>
     3	<head>
     4	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     5	<meta http-equiv="Content-Script-Type" content="text/javascript">
     6	<script type="text/javascript">
     7	function getCookie(c_name) { // Local function for getting a cookie value
     8	    if (document.cookie.length > 0) {
     9	        c_start = document.cookie.indexOf(c_name + "=");

more

more 命令用于查看纯文本文件(内容较多的),格式为“more [选项]文件”。
可以使用空格键或回车 键向下翻页:

[root@RICARDOfs ~]# more index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri
---此处省略一万字---

head

head 命令用于查看纯文本文档的前 N 行,格式为“head [选项] [文件]”。

[root@RICARDOfs ~]# head -n 10 index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script type="text/javascript">
function getCookie(c_name) { // Local function for getting a cookie value
    if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(c_name + "=");
        if (c_start!=-1) {

tail

tail命令用于查看纯文本文档的后 N 行或持续刷新内容,格式为“tail [选项] [文件]”。
tail 命令的操作方法与 head 命令非常相似,只需要执行“tail -n 20 文件名”命令 就可以达到这样的效果。tail 命令最强悍的功能是可以持续刷新一个文件的内容,当想要实时 查看最新日志文件时,这特别有用,此时的命令格式为tail -f 文件名

[root@RICARDOfs ~]# tail -f /var/log/messages
Mar 23 19:01:01 RICARDOfs systemd: Started Session 1168 of user root.
Mar 23 19:01:01 RICARDOfs systemd: Removed slice User Slice of root.
Mar 23 19:21:04 RICARDOfs rsyslogd: imjournal: journal reloaded... [v8.24.0-41.el7_7.2 try http://www.rsyslog.com/e/0 ]
Mar 23 20:01:01 RICARDOfs systemd: Created slice User Slice of root.
Mar 23 20:01:02 RICARDOfs systemd: Started Session 1169 of user root.
Mar 23 20:01:02 RICARDOfs systemd: Removed slice User Slice of root.
Mar 23 20:54:29 RICARDOfs systemd: Created slice User Slice of root.
Mar 23 20:54:29 RICARDOfs systemd: Started Session 1170 of user root.
Mar 23 20:54:29 RICARDOfs systemd-logind: New session 1170 of user root.
Mar 23 21:01:01 RICARDOfs systemd: Started Session 1171 of user root.

tr

tr命令用于替换文本文件中的字符,格式为“tr [原始字符] [目标字符]”
在很多时候,我们想要快速地替换文本中的一些词汇,又或者把整个文本内容都进行替 换,如果进行手工替换,难免工作量太大,尤其是需要处理大批量的内容时,进行手工替换更 是不现实。这时,就可以先使用 cat 命令读取待处理的文本,然后通过 管道符 把这些文本内容传递给 tr 命令进行替换操作即可。
在这里插入图片描述

wc

wc命令用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”。
在这里插入图片描述

[root@linuxprobe ~]# wc -l /etc/passwd 
38 /etc/passwd 

stat

stat命令用于查看文件的具体存储信息和时间等信息,格式为“stat 文件名称”。
stat 命令可以用于查看文件的存储信息和时间等信息,命令 stat anaconda-ks.cfg会显示出 文件的三种时间状态(已加粗):Access、Modify、Change。这三种时间的区别将在下面的 touch 命令中详细详解:

[root@linuxprobe ~]# stat anaconda-ks.cfg 
File: ‘anaconda-ks.cfg’ 
Size: 1213 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 68912908 Links: 1 Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:admin_home_t:s0 
Access: 2017-07-14 01:46:18.721255659 -0400 Modify: 2017-05-04 15:44:36.916027026 -0400 Change: 2017-05-04 15:44:36.916027026 -0400 Birth: 

cut

cut 命令用于按“列”提取文本字符,格式为“cut [参数] 文本”。
不仅要使用-f 参数来设置需要看的列数,还需要使用-d 参数来设置间隔符号。 passwd在保存用户数据信息时,用户信息的每一项值之间是采用冒号来间隔的,接下来我们使用 下述命令尝试提取出 passwd 文件中的用户名信息,即提取以冒号(:)为间隔符号的第一列内容

[root@linuxprobe ~]# head -n 2 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin 
[root@linuxprobe ~]# cut -d: -f1 /etc/passwd 
root 
bin 
daemon 

diff

diff命令用于比较多个文本文件的差异,格式为diff [参数] 文件。使用--brief参数来确认两个文件是否不同,还可以使用-c参数来详细比较出多个文件的差异之处

[root@linuxprobe ~]# diff --brief diff_A.txt diff_B.txt 
Files diff_A.txt and diff_B.txt differ 
[root@linuxprobe ~]# diff -c diff_A.txt diff_B.txt 
*** diff_A.txt 2017-08-30 18:07:45.230864626 +0800 
--- diff_B.txt 2017-08-30 18:08:52.203860389 +0800

文件目录管理命令

touch

touch命令用于创建空白文件或设置文件的时间,格式为touch [选项] [文件]
touch linuxprobe命令可以创建出一个名为 linuxprobe 的空白文本文件。有难度的操作主要是体现在设置文件内容的修改时间(mtime)、文件权限或属性 的更改时间(ctime)与文件的读取时间(atime
在这里插入图片描述

[root@linuxprobe ~]# ls -l anaconda-ks.cfg  
-rw-------. 1 root root 1213 May  4 15:44 anaconda-ks.cfg 
[root@linuxprobe ~]# echo "Visit the LinuxProbe.com to learn linux skills" >>  anaconda-ks.cfg 
[root@linuxprobe ~]# ls -l anaconda-ks.cfg 
-rw-------. 1 root root 1260 Aug  2 01:26 anaconda-ks.cfg 
[root@linuxprobe ~]# touch -d "2017-05-04 15:44" anaconda-ks.cfg  
[root@linuxprobe ~]# ls -l anaconda-ks.cfg  
-rw-------. 1 root root 1260 May  4 15:44 anaconda-ks.cfg 

mkdir

mkdir命令用于创建空白的目录,格式为mkdir [选项] 目录
除了能创建单个空白目录外,mkdir 命令还可以结合-p参数来递归创建出具有嵌套叠层关系的文件目录。

[root@linuxprobe ~]# mkdir linuxprobe 
[root@linuxprobe ~]# cd linuxprobe 
[root@linuxprobe linuxprobe]# mkdir -p a/b/c/d/e [root@linuxprobe linuxprobe]# cd a 
[root@linuxprobe a]# cd b 
[root@linuxprobe b]# 

cp

cp命令用于复制文件或目录,格式为cp [选项] 源文件 目标文件
➢ 如果目标文件是目录,则会把源文件复制到该目录中;
➢ 如果目标文件也是普通文件,则会询问是否要覆盖它;
➢ 如果目标文件不存在,则执行正常的复制操作。
在这里插入图片描述

mv

mv 命令用于剪切文件或将文件重命名,格式为mv [选项] 源文件 [目标路径|目标文件名],如果在同一个目录中对一个文件进行剪切操作,其实也就是对其进行重命名

[root@linuxprobe ~]# mv x.log linux.log [root@linuxprobe ~]# ls install.log linux.log 

rm

rm命令用于删除文件或目录,格式为rm [选项] 文件
在 Linux 系统中删除文件时,系统会默认向您询问是否要执行删除操作,如果不想总是 看到这种反复的确认信息,可在rm命令后跟上-f参数来强制删除。另外,想要删除一个目录, 需要在 rm 命令后面一个-r参数才可以,否则删除不掉

[root@RICARDOfs ~]# rm x.log
rm: remove regular empty file ‘x.log’? y
[root@RICARDOfs a]# rm -r ./b
rm: remove directory ‘./b’? y

dd

dd命令用于按照指定大小和个数的数据块来复制文件或转换文件,格式为dd [参数]
Linux 系统中有一个名为/dev/zero 的设备文件,这个文件不会占用系统存储空间,但却可以提供无穷无尽的数据,因此可以使用它作为 dd 命令的输入文件,来生成一个指定大小的文件
在这里插入图片描述
例如我们可以用 dd 命令从/dev/zero 设备文件中取出一个大小为 5MB 的数据块,然后 保存成名为 560_file 的文件。

[root@RICARDOfs ~]# dd if=/dev/zero of=560_file count=1 bs=5M
1+0 records in
1+0 records out
5242880 bytes (5.2 MB) copied, 0.0291219 s, 180 MB/s

dd 命令的功能也绝不仅限于复制文件这么简单。如果您想把光驱设备中的光盘制作成 iso格 式的镜像文件,在Windows 系统中需要借助于第三方软件才能做到,但在 Linux系统中可以直接 使用 dd 命令来压制出光盘镜像文件,将它变成一个可立即使用的 iso 镜像:

[root@linuxprobe ~]# dd if=/dev/cdrom of=RHEL-server-7.0-x86_64-LinuxProbe.Com.iso 
7311360+0 records in 
7311360+0 records out 
3743416320 bytes (3.7 GB) copied, 370.758 s, 10.1 MB/s 

考虑到有些读者会纠结 bs 块大小与 count 块个数的关系,下面举一个吃货的例子进行 解释。假设小明的饭量(即需求)是一个固定的值,用来盛饭的勺子的大小即 bs 块大小, 而用勺子盛饭的次数即 count 块个数。小明要想吃饱(满足需求),则需要在勺子大小(bs 块 大小)与用勺子盛饭的次数(count 块个数)之间进行平衡。

file

file命令用于查看文件的类型,格式为file 文件名
在 Linux 系统中,由于文本、目录、设备等所有这些一切都统称为文件,而我们又不能 单凭后缀就知道具体的文件类型,这时就需要使用 file 命令来查看文件类型了

[root@linuxprobe ~]# file anaconda-ks.cfg  
anaconda-ks.cfg: ASCII text 
[root@linuxprobe ~]# file /dev/sda 
/dev/sda: block special

打包压缩与搜索命令

tar

tar命令用于对文件进行打包压缩或解压,格式为tar [选项] [文件]
在这里插入图片描述
一般使用tar -czvf 压缩包名称.tar.gz 要打包的目录命令把指定的文件进行打包压缩;相应的解压命令为tar -xzvf 压缩包名称.tar.gz。下面我们来逐个演示下打包压缩与解压的操作。先使用 tar 命令把/etc 目录通 过 gzip 格式进行打包压缩,并把文件命名为 etc.tar.gz

[root@linuxprobe ~]# tar -czvf etc.tar.gz /etc 
tar: Removing leading '/' from member names 
/etc/ 
/etc/fstab 
/etc/crypttab
………………省略部分压缩过程信息………………

接下来将打包后的压缩包文件指定解压到/root/etc 目录中(先使用 mkdir 命令来创建 /root/etc 目录)

[root@linuxprobe ~]# mkdir /root/etc 
[root@linuxprobe ~]# tar xzvf etc.tar.gz -C /root/etc etc/ 
etc/fstab 
etc/crypttab 
………………省略部分解压过程信息……………… 

grep

grep命令用于在文本中执行关键词搜索,并显示匹配的结果,格式为grep [选项] [文件]
在这里插入图片描述

[root@RICARDOfs ~]# grep -n /sbin/nologin /etc/passwd
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin

find

find命令用于按照指定条件来查找文件,格式为find [查找路径] 寻找条件 操作
在这里插入图片描述
在这里插入图片描述

[root@RICARDOfs ~]# find /etc -name "host*" -print
/etc/host.conf
/etc/v2ray/233boy/v2ray/config/hosts.sh
/etc/hosts
/etc/selinux/targeted/active/modules/100/hostname
/etc/hostname
/etc/hosts.allow
/etc/hosts.deny

如果要在整个系统中搜索权限中包括 SUID 权限的所有文件(详见第 5 章),只需使用4000 即可

[root@RICARDOfs ~]# find / -perm -4000 
/usr/bin/chfn
/usr/bin/crontab
/usr/bin/pkexec
/usr/bin/sudo
/usr/bin/gpasswd

复习题

1.在 RHEL 7 系统及众多的 Linux 系统中,最常使用的 Shell 终端是什么?
Bash(Bourne-Again SHell)解释器。

2.执行 Linux 系统命令时,添加参数的目的是什么?
为了让 Linux 系统命令能够更贴合用户的实际需求进行工作。

3.Linux 系统命令、命令参数及命令对象之间,普遍应该使用什么来间隔?
应该使用一个或多个空格进行间隔。

4.请写出用 echo 命令把 SHELL 变量值输出到屏幕终端的命令。
echo $SHELL。

5.简述 Linux 系统中 5 种进程的名称及含义。
在 Linux 系统中,有下面 5 种进程名称。
➢ 进程正在运行或在运行队列中等待。
➢ 进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态。
➢ 进程不响应系统异步信号,即便用 kill 命令也不能将其中断。
➢ 进程已经终止,但进程描述符依然存在, 直到父进程调用 wait4()系统函数
后将进程释放。
➢ 进程收到停止信号后停止运行

6.请尝试使用 Linux 系统命令关闭 PID 为 5529 的服务进程。
执行 kill 5529 命令即可;若知道服务的名称,则可以使用 killall 命令进行关闭。

7.使用 ifconfig 命令查看网络状态信息时,需要重点查看的 4 项信息分别是什么?
这 4 项重要信息分别是网卡名称、IP 地址、网卡物理地址以及 RX/TX 的收发流量数据大小。

8.使用 uptime 命令查看系统负载时,对应的负载数值如果是 0.91、0.56、0.32,那么最近 15 分钟内负载压力最大的是哪个时间段?
通过负载数值可以看出,最近 1 分钟内的负载压力是最大的。

9.使用 history命令查看历史命令的执行记录时,命令前面的数字除了排序外还有什么用处?
还可以用“!数字”的命令格式重复执行某一次的命令记录,从而避免了重复输入较长命令的麻烦。

10.若想查看的文件具有较长的内容,那么使用 cat、more、head、tail 中的哪个命令最合适?
文件内容较长,使用 more 命令;反之使用 cat 命令。

11.在使用 mkdir 命令创建有嵌套关系的目录时,应该加上什么参数呢?
应该加上-p 递归迭代参数,从而自动化创建有嵌套关系的目录。

12.在使用 rm 命令删除文件或目录时,可使用哪个参数来避免二次确认呢?
可使用-f 参数,这样即可无需二次确认。

13.若有一个名为 backup.tar.gz 的压缩包文件,那么解压的命令应该是什么?
应该用 tar 命令进行解压,执行 tar -xzvf backup.tar.gz 命令即可。

14.使用 grep 命令对某个文件进行关键词搜索时,若想要进行文件内容反选,应使用什么 参数?
可使用-v 参数来进行匹配内容的反向选择,即显示出不包含某个关键词的行

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值