Linux学习笔记
资料下载:
- 链接: https://pan.baidu.com/s/1UvwkJaEJO7W3sU5qkCgKzA?pwd=fe2f
- 提取码: fe2f
本篇文章主要适用0基础的读者,内容会比较通俗易懂,也会有详细的图解教程,以及运行后的返回结果。我本人在系统性的学习linux系统之前,几乎可以说是0基础,仅仅会使用ssh远程连接linux,执行指令。但是对于指令的具体内容也是完全不懂的。故本文的目标是尽最大可能的去解决一些新手在学习中的常见但是又不容易被发现的错误。很多时候遇到的问题其实是很简单的,但是由于不知道如何去解决,问题过于简单,但自己又无法解决,相信读者肯定有过这种体会,因为问题难以解决,故迫不得已放弃学习。网络上有这样一句话,学习编程语言最难的就是基础环境的搭建,也就是设置环境变量。故《从入门到精通》很多人把重点放在了精通上,但我觉得最重要的是入门。——一个切身体会过的入门coder。
本文的内容分为两大部分,Linux系统和Linux命令两大部分,读者不必从头观看。只需要选择自己想要学习的部分即可。
二、Linux命令
在正式学习linux命令之前,我们必须再次了解一下linux 的目录系统。尽管在第一个章节中已经了解了linux的系统目录,但是侧重点在于系统根目录下各文件夹的具体含义。那么什么是根目录呢?这个问题值得说明。
/
,根目录是最顶级的目录了- Linux只有一个顶级目录:
/
,而windows中每个盘符都是一个跟目录。可以理解为Linux的目录是一个数型结构,而Windows中是一个森林。 - 路径描述的层次关系同样适用
/
来表示 - /home/codermast/a.txt,表示根目录下的home文件夹内有codermast文件夹,内有a.txt
1.Yum命令
yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。
基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum 语法
yum [options] [command] [package ...]
- **options:**可选,选项包括-h(帮助),-y(当安装过程提示选择全部为 “yes”),-q(不显示安装的过程)等等。
- **command:**要进行的操作。
- **package:**安装的包名。
yum常用命令
- \1. 列出所有可更新的软件清单命令:yum check-update
- \2. 更新所有软件命令:yum update
- \3. 仅安装指定的软件命令:yum install <package_name>
- \4. 仅更新指定的软件命令:yum update <package_name>
- \5. 列出所有可安裝的软件清单命令:yum list
- \6. 删除软件包命令:yum remove <package_name>
- \7. 查找软件包命令:yum search
- \8. 清除缓存命令:
- yum clean packages: 清除缓存目录下的软件包
- yum clean headers: 清除缓存目录下的 headers
- yum clean oldheaders: 清除缓存目录下旧的 headers
- yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers
实例 1
安装 pam-devel
[root@www ~]# yum install pam-devel
Setting up Install Process
Parsing package install arguments
Resolving Dependencies <==先检查软件的属性相依问题
--> Running transaction check
---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be updated
--> Processing Dependency: pam = 0.99.6.2-4.el5 for package: pam-devel
--> Running transaction check
---> Package pam.i386 0:0.99.6.2-4.el5 set to be updated
filelists.xml.gz 100% |=========================| 1.6 MB 00:05
filelists.xml.gz 100% |=========================| 138 kB 00:00
-> Finished Dependency Resolution
……(省略)
实例 2
移除 pam-devel
[root@www ~]# yum remove pam-devel
Setting up Remove Process
Resolving Dependencies <==同样的,先解决属性相依的问题
--> Running transaction check
---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be erased
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Removing:
pam-devel i386 0.99.6.2-4.el5 installed 495 k
Transaction Summary
=============================================================================
Install 0 Package(s)
Update 0 Package(s)
Remove 1 Package(s) <==还好,并没有属性相依的问题,单纯移除一个软件
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Erasing : pam-devel ######################### [1/1]
Removed: pam-devel.i386 0:0.99.6.2-4.el5
Complete!
实例 3
利用 yum 的功能,找出以 pam 为开头的软件名称有哪些?
[root@www ~]# yum list pam*
Installed Packages
pam.i386 0.99.6.2-3.27.el5 installed
pam_ccreds.i386 3-5 installed
pam_krb5.i386 2.2.14-1 installed
pam_passwdqc.i386 1.0.2-1.2.2 installed
pam_pkcs11.i386 0.5.3-23 installed
pam_smb.i386 1.1.7-7.2.1 installed
Available Packages <==底下则是『可升级』的或『未安装』的
pam.i386 0.99.6.2-4.el5 base
pam-devel.i386 0.99.6.2-4.el5 base
pam_krb5.i386 2.2.14-10 base
国内 yum 源
网易(163)yum源是国内最好的yum源之一 ,无论是速度还是软件版本,都非常的不错。
将yum源设置为163 yum,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到。
安装步骤
首先备份/etc/yum.repos.d/CentOS-Base.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载对应版本 repo 文件, 放入 /etc/yum.repos.d/ (操作前请做好相应备份)
- CentOS5 :http://mirrors.163.com/.help/CentOS5-Base-163.repo
- CentOS6 :http://mirrors.163.com/.help/CentOS6-Base-163.repo
- CentOS7 :http://mirrors.163.com/.help/CentOS7-Base-163.repo
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
mv CentOS6-Base-163.repo CentOS-Base.repo
运行以下命令生成缓存
yum clean all
yum makecache
除了网易之外,国内还有其他不错的 yum 源,比如中科大和搜狐。
中科大的 yum 源,安装方法查看:https://lug.ustc.edu.cn/wiki/mirrors/help/centos
sohu 的 yum 源安装方法查看: http://mirrors.sohu.com/help/centos.html
2.Apt命令
apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。
apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
apt 命令执行需要超级管理员权限(root)。
apt 语法
apt [options] [command] [package ...]
- **options:**可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
- **command:**要进行的操作。
- package:安装的包名。
apt 常用命令
-
列出所有可更新的软件清单命令:sudo apt update
-
升级软件包:sudo apt upgrade
列出可更新的软件包及版本信息:apt list --upgradeable
升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade
-
安装指定的软件命令:sudo apt install <package_name>
安装多个软件包:sudo apt install <package_1> <package_2> <package_3>
-
更新指定的软件命令:sudo apt update <package_name>
-
显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show <package_name>
-
删除软件包命令:sudo apt remove <package_name>
-
清理不再使用的依赖和库文件: sudo apt autoremove
-
移除软件包及配置文件: sudo apt purge <package_name>
-
查找软件包命令: sudo apt search
-
列出所有已安装的包:apt list --installed
-
列出所有已安装的包的版本信息:apt list --all-versions
实例
查看一些可更新的包:
sudo apt update
升级安装包:
sudo apt upgrade
在某些时候,需要进行确认安装。在交互式输入字母 Y 即可开始升级。
可以将以下两个命令组合起来,一键升级:
sudo apt update && sudo apt upgrade -y
安装 mplayer 包:
sudo apt install mplayer
3.ls命令
这个指令我们在前面也已经接触到了,相信大家都能够了解其的功能。这里做系统性的讲解。
功能:列出文件夹信息
语法:ls [-l -h -a] [参数]
- 参数:被查看的文件夹,不提供参数,表示查看当前工作目录
- -l,以列表形式查看
- -h,配合-l,以更加人性化的方式显示文件大小
- -a,显示隐藏文件
隐藏文件、文件夹,在Linux中以
.
开头的,均是隐藏的。默认不显示出来,需要-a
选项才可查看到。
4.ll命令
ll命令的功能是显示指定文件或目录的详细属性信息,实际它不是一个真实存在的命令文件,而是”ls -l --color=auto“的别名而已。ll命令可以默认列出当前目录内文件的详细属性信息,包含权限、所属、修改时间以及容量占用大小等等信息。
**语法格式:**ll [参数] 文件
常用参数:
-a | 列出目录下的所有文件(含隐藏文件) |
---|---|
-A | 显示除 “.”和“…”外的所有文件 |
-k | 以字节的形式表示文件的大小 |
-h | 以更易读的容量单位显示文件大小 |
-s | 在每个文件名后输出该文件的大小 |
-N | 不限制文件长度 |
-t | 以文件上次被修改的时间排序 |
-u | 以文件上次被访问的时间排序 |
5.pwd命令
功能:展示当前工作目录
语法:pwd
6.cd命令
功能:切换工作目录
语法:cd [目标目录]
参数:目标目录,要切换去的地方,不提供默认切换到当前登录用户HOME目录
7.home目录
每一个用户在Linux系统中都有自己的专属工作目录,称之为HOME目录。
- 普通用户的HOME目录,默认在:
/home/用户名
如:/home/codermast - root用户的HOME目录,在:
/root
在登录系统以后,默认直接进入登录用户home目录。在使用codermast账户登录后,默认进入到的是/home/codermast目录
8.相对、绝对路径
-
相对路径,非
/
开头的称之为相对路径相对路径表示以
当前目录
作为起点,去描述路径,如test/a.txt
,表示当前工作目录内的test文件夹内的a.txt文件 -
绝对路径,以
/
开头的称之为绝对路径绝对路径从
根
开始描述路径
这里和url中的相对地址和绝对地址是类似的。
9.特殊路径符
.
,表示当前,比如./a.txt,表示当前文件夹内的a.txt
文件..
,表示上级目录,比如../
表示上级目录,../../
表示上级的上级目录~
,表示用户的HOME目录,比如cd ~
,即可切回用户HOME目录
10.mkdir
可以看作是make directory的缩写
功能:创建文件夹
语法:mkdir [-p] 参数
- 参数:被创建文件夹的路径
- 选项:-p,可选,表示创建前置路径
11.touch命令
功能:创建文件
语法:touch 参数
- 参数:被创建的文件路径
12.cat命令
功能:查看文件内容
语法:cat 参数
- 参数:被查看的文件路径
13.more命令
功能:查看文件,可以支持翻页查看
语法:more 参数
- 参数:被查看的文件路径
- 在查看过程中:
空格
键翻页q
退出查看
14.cp命令
功能:复制文件、文件夹
语法:cp [-r] 参数1 参数2
- 参数1,被复制的
- 参数2,要复制去的地方
- 选项:-r,可选,复制文件夹使用
示例:
- cp a.txt b.txt,复制当前目录下a.txt为b.txt
- cp a.txt test/,复制当前目录a.txt到test文件夹内
- cp -r test test2,复制文件夹test到当前文件夹内为test2存在
15.mv命令
功能:移动文件、文件夹
语法:mv 参数1 参数2
- 参数1:被移动的
- 参数2:要移动去的地方,参数2如果不存在,则会进行改名
16.rm命令
功能:删除文件、文件夹
语法:rm [-r -f] 参数...参数
- 参数:支持多个,每一个表示被删除的,空格进行分隔
- 选项:-r,删除文件夹使用
- 选项:-f,强制删除,不会给出确认提示,一般root用户会用到
rm命令很危险,一定要注意,特别是切换到root用户的时候。千万不要使用rm -rf在根目录下。
17.which命令
功能:查看命令的程序本体文件路径
语法:which 参数
- 参数:被查看的命令
18.find命令
功能:搜索文件
语法1按文件名搜索:find 路径 -name 参数
- 路径,搜索的起始路径
- 参数,搜索的关键字,支持通配符*, 比如:
*
test表示搜索任意以test结尾的文件
19.grep命令
功能:过滤关键字
语法:grep [-n] 关键字 文件路径
- 选项-n,可选,表示在结果中显示匹配的行的行号。
- 参数,关键字,必填,表示过滤的关键字,带有空格或其它特殊符号,建议使用””将关键字包围起来
- 参数,文件路径,必填,表示要过滤内容的文件路径,可作为内容输入端口
参数文件路径,可以作为管道符的输入
20.wc命令
功能:统计
语法:wc [-c -m -l -w] 文件路径
- 选项,-c,统计bytes数量
- 选项,-m,统计字符数量
- 选项,-l,统计行数
- 选项,-w,统计单词数量
- 参数,文件路径,被统计的文件,可作为内容输入端口
参数文件路径,可作为管道符的输入
21.管道符|
写法:|
功能:将符号左边的结果,作为符号右边的输入
示例:
cat a.txt | grep itheima
,将cat a.txt的结果,作为grep命令的输入,用来过滤itheima
关键字
可以支持嵌套:
cat a.txt | grep itheima | grep itcast
22.echo命令
功能:输出内容
语法:echo 参数
- 参数:被输出的内容
23.`反引号
功能:被两个反引号包围的内容,会作为命令执行
示例:
- echo `pwd`,会输出当前工作目录
24.tail命令
功能:查看文件尾部内容
语法:tail [-f] 参数
- 参数:被查看的文件
- 选项:-f,持续跟踪文件修改
25.head命令
功能:查看文件头部内容
语法:head [-n] 参数
- 参数:被查看的文件
- 选项:-n,查看的行数
26.重定向符
功能:将符号左边的结果,输出到右边指定的文件中去
>
,表示覆盖输出>>
,表示追加输出
27.systemctl
功能:控制系统服务的启动关闭等
语法:systemctl start | stop | restart | disable | enable | status 服务名
- start,启动
- stop,停止
- status,查看状态
- disable,关闭开机自启
- enable,开启开机自启
- restart,重启
28.软链接
功能:创建文件、文件夹软链接(快捷方式)
语法:ln -s 参数1 参数2
- 参数1:被链接的
- 参数2:要链接去的地方(快捷方式的名称和存放位置)
29.日期
语法:date [-d] [+格式化字符串]
- -d 按照给定的字符串显示日期,一般用于日期计算
- 格式化字符串:通过特定的字符串标记,来控制显示的日期格式
- %Y 年%y 年份后两位数字 (00…99)
- %m 月份 (01…12)
- %d 日 (01…31)
- %H 小时 (00…23)
- %M 分钟 (00…59)
- %S 秒 (00…60)
- %s 自 1970-01-01 00:00:00 UTC 到现在的秒数
30.修改时区
修改时区为中国时区
sudo rm -f /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
31.ntp
功能:同步时间
安装:yum install -y ntp
启动管理:systemctl start | stop | restart | status | disable | enable ntpd
手动校准时间:ntpdate -u ntp.aliyun.com
32.ip地址
格式:a.b.c.d
- abcd为0~255的数字
特殊IP:
- 127.0.0.1,表示本机
- 0.0.0.0
- 可以表示本机
- 也可以表示任意IP(看使用场景)
查看ip:ifconfig
33.主机名
功能:Linux系统的名称
查看:hostname
设置:hostnamectl set-hostname 主机名
34.ps命令
功能:查看进程信息
语法:ps -ef
,查看全部进程信息,可以搭配grep做过滤:ps -ef | grep xxx
35.kill命令
kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
参数说明:
- -l <信息编号> 若不加<信息编号>选项,则 -l 参数会列出全部的信息名称。
- -s <信息名称或编号> 指定要送出的信息。
- [程序] [程序]可以是程序的PID或是PGID,也可以是工作编号。
使用 kill -l 命令列出所有可用信号。
最常用的信号是:
- 1 (HUP):重新加载进程。
- 9 (KILL):杀死一个进程。
- 15 (TERM):正常停止一个进程。
36.nmap
在使用nmap指令之前,我们需要先安装nmap,centos中执行
sudo yum install nmap
,需要管理员权限。
功能:查看端口的占用情况
语法:nmap ip地址
例如:nmap 127.0.0.1
37.netstat命令
功能:查看端口占用
用法:netstat -anp | grep xxx
38.ping命令
测试网络是否联通
语法:ping [-c num] 参数
- 选项:-c 检查的次数,不使用-c时会一直检测下去。
- 参数:ip地址或者url地址
39.wegt
wegt是非交互式的文件下载器,可以在命令行内直接从互联网上下载文件。
-
语法:
wegt [-b] url
-
选项:-b 可选,后台下载,会将日志自动写入到当前工作目录的
wegt-log
文件 -
参数:url,下载链接
-
查看后台下载:可以使用tail命令查看后台下载进度,
tail -f wget-log
注意:无论文件是否下载成功,只要下载了部分的文件,就一定会生成下载的残留文件,需要及时清理这些下载未完成不可用的文件。
40.curl命令
curl可以发送http网络请求,可用于:下载文件、获取信息等
语法:curl [-o] url
- 选项:-o,用于下载文件,当url是下载链接时,可以使用此选项保存下载文件。
- 参数:url,要发起请求的网络地址。
41.top命令
功能:实时查看主机运行状态
语法:top
,查看基础信息
参数说明:
- d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
- q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
- c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
- S : 累积模式,会将己完成或消失的子进程 ( dead child process ) 的 CPU time 累积起来
- s : 安全模式,将交谈式指令取消, 避免潜在的危机
- i : 不显示任何闲置 (idle) 或无用 (zombie) 的进程
- n : 更新的次数,完成后将会退出 top
- b : 批次档模式,搭配 “n” 参数一起使用,可以用来将 top 的结果输出到档案内
交互模式中,可以使用快捷键:
42.df命令
查看磁盘占用情况
-
语法:
df [-h]
-
选项:-h,以更加人性化的单位显示
43.iostat命令
查看CPU、磁盘的相关信息
- 语法:
iostat [-x] [num1] [num2]
- 选项:
- -x,显示更多信息
- num1:数字,刷新间隔
- num2:数字,刷新次数
44.sar命令
查看网络统计
- 语法:
sar -n DEV num1 num2
- 选项:
- -n,查看网络,DEV表示查看网络接口
- num1:刷新间隔(不填就查看一次就结束)
- num2:查看次数(不填就是无限次)
45.环境变量
- 临时设置:export 变量名=变量值
- 永久设置:
- 针对用户,设置用户HOME目录内:
.bashrc
文件 - 针对全局,设置
/etc/profile
- 针对用户,设置用户HOME目录内:
46.PATH变量
记录了执行程序的搜索路径
可以将自定义路径加入PATH内,实现自定义命令在任意地方均可执行的效果
47.$符号
可以取出指定的环境变量的值
语法:$变量名
示例:
echo $PATH
,输出PATH环境变量的值
echo ${PATH}ABC
,输出PATH环境变量的值以及ABC
如果变量名和其它内容混淆在一起,可以使用${}
48.压缩解压
压缩
tar类型
-
语法:
tar -zcvf 压缩包 被压缩1...被压缩2...被压缩N
-
-z表示使用gzip,可以不写
zip类型
zip [-r] 参数1 参数2 参数N
- -r:被压缩的包含文件夹的时候,需要使用-r选项,和rm、cp等命令的效果一致。
解压
tar类型
tar -zxvf 被解压的文件 -C 要解压去的地方
- -z表示使用gzip,可以省略
- -C,可以省略,指定要解压去的地方,不写解压到当前目录
zip类型
- 语法:
unzip [-d] 参数
- 选项:-d,指定要解压去的位置,同tar的-c选项
- 参数:被解压的zip压缩包文件
49.su命令
切换用户
- 语法:
su [-] [用户]
- 选项:- 表示切换后加载环境变量,建议带上
- 参数:用户,可以省略,默认切换到root用户
50.sudo命令
-
语法:
sudo 其他命令
-
功能:
-
可以让一条普通命令带有root权限
-
需要以root用户执行visudo命令,增加配置方法可以让普通用户有sudo命令的权限。
-
在visudo中配置以后,可以让指定用户,无需密码使用sudo
50.chmod命令
修改文件、文件夹权限
-
语法:
chmod [-R] 权限 参数
-
权限,要设置的权限,比如755,表示:
rwxr-xr-x
权限值 | 含义 | 表示 |
---|---|---|
0 | 无任何权限 | — |
1 | 仅有x权限 | –x |
2 | 仅有w权限 | -w- |
3 | 有w和x权限 | -wx |
4 | 仅有r权限 | r– |
5 | 有r和x权限 | r-x |
6 | 有r和w权限 | rw- |
7 | 有全部权限 | rwx |
权限值:r=4,w=2,x=1
- 参数,被修改的文件、文件夹
- 选项-R,设置文件夹和其内部全部内容一样生效
51.chown命令
修改文件、文件夹所属用户、组
- 语法:
chown [-R] [用户][:][用户组] 文件或文件夹
- 选项:
- -R,同chmod,对文件夹内全部内容应用相同规则。
- 用户,修改所属用户
- 用户组,修改所属用户组
- :,用于分隔用户和用户组
52.用户组管理
以下命令需要root用户执行
- 创建用户组:
groupadd 用户组名
- 删除用户组:
groupdel 用户组名
53.用户管理
以下命令需要root用户执行
- 创建用户:
useradd [-g] [-d] 用户名
- 选项:
- -g,指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如存在同名组,必须使用-g
- -d,指定用户home路径,不指定,home目录默认在
/home/用户名
- 选项:
- 删除用户:
userdel [-r] 用户名
- 选项:-r,删除用户的home目录,不实用-r,删除用户时,home目录保留
- 查看用户所属组:
id [用户名]
- 参数:用户名,被查看的用户,如果不提供,则默认查看自身用户组
- 修改用户所属组:
usermod -aG 用户组 用户名
将指定用户加入指定用户组
54.genenv命令
-
getenv group
,查看系统全部的用户组 -
getenv passwd
,查看系统全部的用户
55.env命令
查看系统全部的环境变量
- 语法:
env
以上就是我们经常使用的一些指令,其余指令并不经常使用,配合linux指令文档即可。
三、查看帮助
查看命令的帮助手册
可以通过:命令 --help
查看命令的帮助手册
查看命令的详细手册
可以通过:man 命令
查看某命令的详细手册
可以在命令行内查看指令的帮助文档。