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