Linux 就该这么学 CH02新手必须掌握的Linux命令

0 概述

本章内容如下

  • 强大的shell.
  • 帮助文档命令(1)
  • 系统工作命令(10)
  • 系统状态监测命令(8)
  • 工作目录切换命令(3)
  • 文本文件编辑命令(9)
  • 文件目录管理命令(7)
  • 打包压缩或搜索命令(3)

1 强大的shell

2 帮助文档命令

3 系统工作命令

4 系统状态监测命令

1)ifconfig

ifconfig 用于获取网卡配置与网络状态的命令,格式为:ifconfig [网络设备] [参数]。

  • 查看网络配置前的状态:ifconfig
    在这里插入图片描述
    上图可以看出:网卡名是 eno16777736,MAC地址:000C2918DCD9. 没有IP地址。
  • 配置网络:ifconfig 网卡名 IP netmask 掩码
    在这里插入图片描述
    配置之后可以看到:网卡名,MAC,IP,掩码,网关,发送字节,接收字节。

2)uname

uname用于查看系统内核与系统版本等信息,格式为:uname [-a].
在这里插入图片描述
-a 可以完整查看信息,上图从左到右分别是:系统的内核名称,主机名,内核发行版本,节点名,系统时间,硬件名称,硬件平台,处理器类型和操作系统名称。
如果要查看当前系统版本的详细信息,则需要查看 redhat-release。

[root@RHEL Desktop]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.0 (Maipo)

3) uptime

uptime用于查看系统的负载信息。格式为 uptime.

[root@RHEL Desktop]# uptime
21:46:41 up 4 min,  2 users,  load average: 0.04, 0.19, 0.11

上面最后三个数值代表之前1分钟,5分钟,15分钟内的平均负载。该负载值越低越好,尽量不要长期超过1,在生成环境中不要超过5.

4) free

free用于显示当前系统中内存的使用情况,格式为: free [-h/-m].
-h 和-m效果一样,不同的是单位不一样。

[root@RHEL Desktop]# free -h
             total       used       free     shared    buffers     cached
Mem:          3.8G       889M       3.0G       9.9M       928K       301M
-/+ buffers/cache:       587M       3.3G
Swap:         2.0G         0B       2.0G
[root@RHEL Desktop]# free -m
             total       used       free     shared    buffers     cached
Mem:          3939        889       3049          9          0        301
-/+ buffers/cache:        587       3352
Swap:         2047          0       2047
[root@RHEL Desktop]# 

上面每列数据分别代表的意思是:
在这里插入图片描述

5) who

who用于查看当前登入主机的用户终端信息,格式为: who [参数]。
在这里插入图片描述

6) last

last用于查看所有系统的登录记录,格式为: last [参数]。
在这里插入图片描述

7) history

history用于显示历史执行过的命令。格式为: history [-c].
默认1000条,可以修改/etc/profile 中的HISTSIZE变量值来更改最大值值。

[root@RHEL Desktop]# vim /etc/profile

在这里插入图片描述
history如下:

[root@RHEL Desktop]# history
    1  man man
    2  man ls
    3  man echo
    4  man man
		、、、

使用 “! 编码数字” 来重复执行某一次命令。
-c参数会清空所有的history命令。

[root@RHEL Desktop]# history -c
[root@RHEL Desktop]# history
    1  history

历史命令保存在 .bash_history 文件中。

[root@RHEL Desktop]# cat ~/.bash_history
man man
man ls

8) sosreport

sosreport用于收集系统配置以及架构信息并输出诊断文档,格式为:sosreport.
sosreport命令执行过程中需要敲3次回车键。
在打印的最后,有下面的提示:
在这里插入图片描述
加粗部分是收集好的资料压缩文件和校验码,发送给技术人员就可以了。

5 工作目录切换命令

1) pwd

pwd用于显示用户当前所处的工作目录。格式:pwd.

2) cd

cd 用来切换工作路径,格式: cd [目录]。

 cd /etc           #切换到/etc目录
 cd /bin           #切换到/bin目录
 cd -              #返回到上一次的目录(即/etc)
 cd ..             #返回到上一级的目录(即/etc的上一级,即/)
 cd ~linuxprobe    #切换到用户linuxprobe的家目录
 cd ~              #切换到当前用户的家目录(其实直接cd就行)

3) ls

ls 用于查看目录中的文件信息,格式: ls [选项] [文件]。
-a :查看全部文件,包括隐藏文件。
-l :查看文件的属性,大小等详细信息。
-d :查看目录的属性信息。

 ls -al                    #查看当前目录的所有文件(包括隐藏文件)的详细信息
 ls -ld /etc               #查看/etc目录的详细信息
 ls -Zd anaconda-ks.cfg    #查看文件或目录的详细信息以及SELinux安全上下文值

在这里插入图片描述
上图中,文件前缀为.的是隐藏文件,文件名是黑色的是普通文件,蓝色的是目录文件。

6 文本文件编辑命令

1) cat

cat用于查看纯文本文件(内容较少),格式: cat [选项] [文件]。
-n则可以显示行号。
cat -n initial-setup-ks.cfg
作用等同于less.
[root@RHEL Desktop]# less man.txt

2) more

more用于查看内容较多的纯文本文件。格式:more [选项] 文件。
more 会在最下面用百分数显示已经阅读了多少。
可以用空格或者回车键向下翻页,按q键退出。
more man.txt

3) head

head 用于查看纯文本文档的前N行,格式:head [选项] [文件]。
-n 用于指定多上行,后面跟具体数字。如
head -n 10 man.txt
在这里插入图片描述

4) tail

tail 用于查看纯文本文档的后N行或持续刷新内容,格式为: tail [参数] [文件]。
tail -n 10 man.txt #可查看man.txt的后10行内容。
tail的强悍功能是可以持续刷新一个文件的内容。
tail -f man.txt #可以实时查看man.txt内容

5) tr

tr 用于替换文本文件中的字符,格式为:tr [原始字符] [目标文件]。
tr [a-z] [A-Z] #将小写替换为大写

[root@RHEL Desktop]# tr [a-z] [A-Z]
i love you     #这行是输入
I LOVE YOU    #这行是打印,ctrl +c 退出

6) wc

wc用于统计文本的行数,字数,字节数,格式为: wc [参数] 文本。
-l :显示行数。
-w:显示单词数。
-c :显示字节数。

[root@RHEL Desktop]# wc -lwc man.txt
  728  4880 37341 man.txt

7) stat

stat 用于查看文件的具体存储信息和时间等信息,格式为:stat 文件名。
该命令会显示出文件的三种状态(已加粗):access ,Modify,Change。
Access: 文件访问时间,也叫atime.
Modify: 文件修改时间,也叫mtime.
Change: 文件权限修改时间,也叫ctime.
在这里插入图片描述

8) cut

cut用于按“列”提取出文本字符,格式为:cut [参数] 文本。
-f:设置需要看的列数。可以是单个,也可是范围。
-d:设置间隔符号。

#查询passwd的1到3和第6列的数据,分隔符为:#
[root@RHEL ~]# cut -d : -f 1-3,6 /etc/passwd   
root:x:0:/root
bin:x:1:/bin
daemon:x:2:/sbin
adm:x:3:/var/adm
lp:x:4:/var/spool/lpd

9) diff

diff用于比较多个文本文件的差异,格式为:diff [参数] 文件。
–brief:用于确认两个文件是否相同,只输出结果。
-c 详细比较出多个文件的差异之处,输出具体的差异之处。

[root@RHEL Desktop]# diff --brief test.txt test2.txt
Files test.txt and test2.txt differ
[root@RHEL Desktop]# diff -c test.txt test2.txt
*** test.txt	2019-08-26 01:49:31.318430043 -0400
--- test2.txt	2019-08-26 01:50:16.518435344 -0400
***************
*** 1,5 ****
! i
  love
! you
  !
- 
--- 1,6 ----
! I
! 
  love
! yoU
! too
  !

上面可以看出,前面有!表示不一样。

7 文件目录管理命令

1) touch

touch用于创建空白文件或设置文件的时间,格式为:touch [选项] [文件]。
touch 简单用法是创建空白文件。
touch 的困难操作是 修改文件的时间。
在这里插入图片描述
[root@RHEL7 Desktop]# touch -d "2019-10-01 22:30" test.txt

2) mkdir

mkdir 用于创建空白的目录,格式为:mkdir [选项] 目录。
-p 参数来递归创建出具有嵌套层关系的文件目录。

[root@RHEL Desktop]# mkdir -p a/b/c

3) cp

cp 命令用于复制文件或目录, 格式为:cp [选项] 源文件 目标文件。
有三种情况:

  • 如果目标文件是目录,则会把源文件复制到该目录文件中。
  • 如果目标文件也是普通文件,则会询问是否覆盖它。
  • 如果目标文件不存在,则执行正常的操作。
    在这里插入图片描述
[root@RHEL Desktop]# cp test.txt a/b
[root@RHEL Desktop]# cp test.txt test2.txt
cp: overwrite ‘test2.txt’? y    #这里需要输入y,直接按enter无用。
[root@RHEL Desktop]# cat test.txt test2.txt

4) mv

mv用来剪切文件或者将文件重命名。格式为:mv [选项] 源文件 [目标文件|目标路径]。
在同一个目录对同一个文件进行剪切,则是对该文件进行重命名。
[root@linuxprobe ~]# mv x.log linux.log
## 将x.log重命名为linux.log

5) rm

rm用于删除文件或目录,格式为:rm [选项] 文件。
-f 用于强制删除。
-r 用于删除
[root@RHEL Desktop]# rm -rf a/b/

6) dd

dd命令用于按照指定大小和个数的数据块来复制文件和转换文件,格式为 dd [参数]。
dd命令比较重要且有特色,可以让用户按照指定大小和个数的数据块来复制文件的内容。
linux 系统中的/dev/zero 设备文件,不会占用系统存储空间,却可以提供无穷的数据,所以可以作为dd命令的输入文件或测试文件。
在这里插入图片描述

[root@RHEL ~]# dd if=/dev/zero of=mytest.txt count=1 bs=512M
1+0 records in
1+0 records out
536870912 bytes (537 MB) copied, 9.53711 s, 56.3 MB/s

linux系统下还可以直接用dd命令来压制光盘镜像文件,是它变成一个可立即执行的iso镜像。

[root@RHEL ~]# dd if=/dev/zero of=mytest.txt count=1 bs=512M
1+0 records in
1+0 records out
536870912 bytes (537 MB) copied, 9.53711 s, 56.3 MB/s

7) file

file 用于查看文件的类型,格式为 file 文件名。

[root@RHEL Desktop]# file test.txt
test.txt: ASCII text

8 打包压缩或搜索命令

1) tar

tar用于对文件进行打包压缩或者解压, 格式为:tar [选项] [文件]。
可以用来生成或解压.tar 或.tar.gz 或.tar.bz2 格式文件。
在这里插入图片描述
比较常用的参数为 c ,x ,z, j ,v ,C, f,其中f必须放到最后来指定目标名称。
“tar -czvf 压缩包名.tar.gz 待压缩文件|目录” 来打包文件。
"tar -xzvf filename.tar.gz " 来解压缩文件。也可以指定文件夹。

[root@linuxprobe ~]# tar -czvf etc.tar.gz /etc   ##压缩整个etc文件夹
[root@linuxprobe ~]# tar xzvf etc.tar.gz -C /root/etc  ##将压缩包解压到指定的目录

2)grep

grep用于在文本中执行关键词搜索,并显示匹配的结果,格式为:grep [选项] [文件]。
在这里插入图片描述
-n 用来显示搜索到的信息的行号。
-v 用于反选,即没有包含的信息。

[root@RHEL ~]# grep -n /sbin/nologin /etc/passwd   ##在/etc/passwd中查找包含 /sbin/nologin 的行,并显示行号
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
#############################################
[root@RHEL ~]# grep -nv /sbin/nologin /etc/passwd  #和上一个搜索结果相反,即不包含 /sbin/nologin
1:root:x:0:0:root:/root:/bin/bash
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
38:felix:x:1000:1000:felix:/home/felix:/bin/bash

3) find

find用于按照指定条件查找文件,格式为 find [路径] 寻找条件 操作。
在这里插入图片描述在这里插入图片描述
其中 -exec 参数比较重要,它是把find的结果交给其他命令做进一步处理。其中find结果存在{}中, \;在最后结束时必须用的。

[root@linuxprobe ~]# find /etc -name "host*" -print  # 在etc下查找名字包含host的文件或文件夹
/etc/avahi/hosts
/etc/host.conf
/etc/hosts
######################
[root@linuxprobe ~]# find / -perm -4000 -print   ##查找权限为SUID 的文件
/usr/bin/fusermount 
/usr/bin/su
/usr/bin/umount
#################
#在整个系统中查找归属linuxprobe 的文件并复制到/root/findresults 目录下。如果在当前目录中查找则可以使用.代表当前目录。
[root@linuxprobe ~]# find / -user linuxprobe -exec cp -a {} /root/findresults/ \; 

#############
[root@RHEL Desktop]# find .  -user root -exec cp -a {} a/ \;  
cp: cannot copy a directory, ‘.’, into itself, ‘a/.’
cp: cannot copy a directory, ‘./a’, into itself, ‘a/a’
cp: ‘./a/linucprobe’ and ‘a/linucprobe’ are the same file

posted @ 2019-08-27 09:32  远航路上ing  阅读(175)  评论(0编辑  收藏  举报