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
Linux 就该这么学 CH02新手必须掌握的Linux命令的更多相关文章
- linux就该这么学之新手必须掌握的linux命令
常用的系统工作命令 1echo:用于在终端显示字符串或变量 格式为:“echo [字符串|变量]” 2date:用于显示/设置系统的时间或日期 格式为:“data[选项][+指定格式]” 3rebot ...
- 《linux就该这么学》找到一本不错的Linux电子书,《Linux就该这么学》。
本帖不是广告贴,只是感觉有好的工具书而已 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材,目前是国 ...
- 《Linux就该这么学》培训笔记_ch00_认识Linux系统和红帽认证
<Linux就该这么学>培训笔记_ch00_认识Linux系统和红帽认证 文章最后会post上书本的笔记照片. 文章主要内容: 认识开源 Linux系统的种类及优势特性 认识红帽系统及红帽 ...
- Linux系统学习之 一:新手必须掌握的Linux命令1
2018-10-03 16:04:12 一.常用系统工作命令 1.wget 命令 作用:用于在终端中下载网络文件. 格式:wget [参数] 下载地址 参数及作用: -b : 后台下载模式 -d:显示 ...
- 《linux就该这么学》第三节课 第二节命令笔记
命令笔记 (随笔原创,借鉴请修改) linux系统中一切都是文件 2.4 系统状态的命令: ifconfig : 查看系统网卡信息,包括网卡名称,ip地址,掩码,mac地址,收到数据包大 ...
- Linux系统学习之 三:新手必须掌握的Linux命令3
内容预览 1.输入输出重定向 2.管道命令符 3.命令行的通配符 4.常用的转义符号 5.重要的环境变量 一.输入输出重定向 重定向技术的5种模式:1 标准覆盖输出重定向 错误覆盖输出重定向 错误追加 ...
- Linux系统学习之 二:新手必须掌握的Linux命令2
2018-10-03 22:20:48 一.文件目录管理命令 1.touch 命令 用于创建空白文件或设置文件的时间,格式为“touch [选项] [文件]”. 参数: -a :仅修改“读取时间(at ...
- 《Linux就该这么学》
参加了第19期课程的培训,感谢刘老师的辛苦付出,课程讲的很好,真心推荐老刘的这本书真是<Linux就该这么学>!!! 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的 ...
- 《Linux就该这么学》day3
ps:原谅我的书法出自鲁迅的<野草> <Linux就该这么学>书本介绍: 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极 ...
随机推荐
- Linux输入输出重定向练习
1.date >> 123 date > 123 2.abc 2>123 abc 2>>123 abc 2>/dev/null 标准输出重定向到回收站 3. ...
- 在阿里云CentOS服务器上安装Python3.7并设置为默认Python
1.引言 Linux操作系统自带一个python2.7,没有python3,在开发的时候非常不便,因此需要安装一个python3,并且将python3设置系统默认python,同时还不能影响那些Lin ...
- LeetCode 865. Smallest Subtree with all the Deepest Nodes
原题链接在这里:https://leetcode.com/problems/smallest-subtree-with-all-the-deepest-nodes/ 题目: Given a binar ...
- sqlg rdbms 上实现的Apache TinkerPop
sqlg 可以让关系型数据库支持Apache TinkerPop,当前支持的数据库有postgresql,hsqldb,h2,mariadb,mysql,mssqlserver 以下是一个简单的使用 ...
- 使用openrc 管理容器中的服务
对于后台任务一般是不建议在容器中运行的,但是如果我们为了简化应用的部署,可能会使用后台任务进行服务的管理,类似的 工具很多,supervisor,systemd , init.d 同时对于docker ...
- CF241E Flights 题解
题目 做了一下这道题,突然发现自己忘了差分约束,赶紧复习一下. 设当前有n个变量 a1,a2,...,an ,有若干组限制形如 ai≤aj+k (其中k为常数),则由点j向点i连一条边权为k的边,再从 ...
- ex3
#include <stdio.h> int main() { char ch; printf("please input:\n"); scanf("%c&q ...
- MySQL性能优化 分区
简述 分区是指根据一定的规则,数据库将表分解为多个更小的,更容易管理的部分,就访问数据库而言,逻辑上只有一张表或一个索引,但实际上这张表可能又多个物理分区共同构成,每一个分区都是一个独立的对象,可以独 ...
- 欧拉法求解常微分方程(c++)
#include<iostream> #include<iomanip> using namespace std; int main() { double x, y, h; ...
- Android Studio 之 ViewModel
ViewModel 是 JetPack 类库中的一个功能,可以保存控件的状态 ,在整个Activity 生命周期中,状态不会失效 如屏幕翻转时,状态可保留,不会失效! 与 LiveData 配合使用! ...