文章目录
(一). 前言
在学习Linux
前,我们需要了解Linux
的相关知识。
1. 什么是Linux
Linux
是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。
2. 为什么要学习Linux
在日常生活工作中,我们大部分人都是用的Windows
系统,而开发出来的程序一般都是在Linux
下运行的。Windows
是单用户的操作系统,而Linux
是支持多用户
、多任务
、多层次
的操作系统。Linux
同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。
3. Linux优点
1.免费
2.很多软件原生都是在Linux
下运行的,庞大的社区支持,生态环境好。
3.开源,可被定制,开放,多用户的网络操作系统。
4.相对稳定
4. Linux内核及发行版
Linux
内核版本只有一个,发行版本有多个。
5. 操作系统的作用
使用操作系统来直接操作硬件。把操作硬件的代码封装出一个又一个的系统调用,供其他的应用程序通过系统调用间接的操作计算机的硬件
6. Linux系统文件/目录
/etc
: 系统配置文件的目录
/bin
: 可执行二进制文件的目录(例如终端命令)
在Linux
系统中,文件的操作都是在/home
目录里边,其他的都是系统文件。
7. Linux终端命令格式
1.command [-options] [parameter]
command
: 命令名
[-options]
: 选项(可选),可用来对命令进行控制
parameter
:传给命令的参数
(二). Linux的基本使用
一. 查阅命令帮助信息
-help
- 显示
command
命令的帮助信息
查看ls
命令的帮助信息
ls --help
-man
- 查阅
command
命令的使用手册
查看ls
命令的使用手册
man ls
小技巧
ctrl
+ shift
+ =
放大终端
ctrl
+ -
缩小终端
Tab
键 补全代码
.
当前目录
..
上一级目录
二. Linux常用命令
序号 | 命令 | 英文 | 描述 |
---|---|---|---|
01 | ls | list | 查看当前文件下的内容 |
02 | cd[目录名] | changge diretory | 切换目录 |
03 | touch[文件名] | touch | 新建文件 |
04 | mkdir[目录名] | make diretory | 创建目录 |
05 | rm[文件名] | remove | 删除指定文件 |
06 | pwd | print work diretory | 查看当前所在的工作目录 |
07 | clear | clear | 清空屏幕内容 |
1. ls命令的使用
ls常用选项
参数 | 含义 |
---|---|
-a | 显示目录下的所有子目录和文件,包括隐藏文件 |
-l | 列表方式显示文件的详细信息 |
-h | 和-l配合使用,人性化的方式显示文件大小 |
ls基本操作
ls -l # 列出当前目录下的文件详细信息
ls -a # 显示所有目录包括隐藏文件
ls -h # 显示文件大小
ls联合使用
ls -lha # 显示目录下的所有文件(包括隐藏文件),人性化方式显示文件大小
2. cd命令的使用
命令 | 描述 |
---|---|
cd | 切换到当前用户的家目录(home/用户目录) |
cd ~ | 切换到当前用户的家目录(home/用户目录) |
cd . | 保持当前目录 |
cd … | 返回上一级目录 |
cd - | 可以切换最近两次使用的工作目录 |
绝对路径和相对路径
cd
后边可以是绝对路径,也可以是相对路径。
cd
绝对路径
cd /home/pancc/Desktop # 切换到 /home/pancc/Desktop目录
cd
相对路径
cd Desktop/ # 切换到 Desktop目录
cd ~/Desktop/ # 切换到 家目录下的Desktop目录
3. touch命令的使用
touch
命令新建的是文件,如过没有此文件,则直接新建。若一开始就有指定过的,则修改文件的创建时间。
touch a.txt 新建a.txt文件
4. mkdir命令的使用
选项 | 描述 |
---|---|
-p | 加入该选项后,可以递归创建目录 |
mkdir的基本操作
mkdir test1 创建test1目录
加入-p
选项,表示递归创建目录
mkdir -p test1/test2/test3 创建test1/test2/test3目录
Linux
系统中同一目录下不能出现同名的文件名
例如: touch
test1 和 mkdir
test1
5. rm命令的使用
选项 | 描述 |
---|---|
-r | 递归删除目录下的内容,删除目录时,要带上r |
-f | 强制删除 (如果要删除的目录不存在,也不会有提示) |
rm的基本操作
删除文件
rm a.txt # 删除 a.txt文件
删除目录(删除目录要带上r
)
rm -r test1 # 删除test1目录并且可以递归删除
rm -f test1 # 强制删除目录(如果要删除的目录不存在,也不会有提示)
在Linux
系统中,以d
开头的表示目录,以r
开头的表示文件
6. 通配符
linux
中的通配符可以与命令配合在一起使用
通配符 | 描述 |
---|---|
* | 表示任意个字符 |
? | 代表一个字符,也至少有一个字符 |
[] | 可以匹配到字符组中的任何一个 |
[abc] | 匹配abc中的任意一个 |
[a-f] | 匹配从a-f内的任意一个字符 |
1. ls与通配符的使用
ls a* # 查看以a开头的文件
ls *ab* # 查看文件中有ab的文件
ls *.py # 查看以.py结尾的文件
ls ?a?.txt # 查看文件中至少有a的文件
ls [test]es.txt # 根据字符组test,查看有es的文件
ls [1-5]* # 根据[1-5]字符组,查看任意个文件
2. rm与通配符的使用
rm *3.txt # 删除文件名以3结尾的文件
rm -r * # 删除所有文件
7. tree命令
tree
命令可以以树形结构来显示文件目录
选项 | 描述 |
---|---|
-d | 只显示目录 |
tree # 树形展示目录下的文件
tree -d # 只显示目录的结构
tree -[目录名] # 显示指定目录结构
查看test
目录的树形结构,并且只显示目录,不显示文件:
tree -d test
8. cp命令
cp
命令可以将文件或目录复制到另一个目录中,相当于我们常对文件进行的copy
操作
选项 | 描述 |
---|---|
-i | 添加提示(当出现同名文件时,会有提示)–推荐使用 |
-r | 复制目录 |
复制操作: cp 原路径 目标路径
复制文件
cp ~/Desktop/test/a.py . # 将~/Desktop/test/ 目录下的a.py文件 复制到 当前目录下
cp a.py ~/Desktop/test # 将当前目录下的a.py复制到~/Desktop/test目录下
cp -i a.py ~/Desktop/test # 复制文件时设置提示
复制目录
cp -r a ~/Desktop/test # 将a目录复制到~/Desktop/test目录下
- 复制目录时,一定要有
-r
(递归目录下的所有子文件)
9. mv命令
mv
可以用来移动文件或目录,也可以用来重命名文件或目录
选项 | 描述 |
---|---|
i | 覆盖文件前会有提示信息 |
移动操作:mv 文件名 目标路径
mv test ~/Desktop # 将test目录移动到Desktop目录下
mv test/a.txt . # 将a.txt文件移动到当前目录下
mv -i test/a.txt . # 将a.txt文件移动到当前目录下(覆盖前会有提示)
重命名操作:mv 原文件名 要修改的文件名
mv test test01 # 将test文件重命名为test01
10. cat、more、grep命令
序号 | 命令 | 作用 |
---|---|---|
01 | cat | 查看文件内容、创建文件、合并文件、追加文件内容等 |
02 | more | 分屏显示内容 |
03 | grep | 搜索文本内容(相当于平常使用的 ctrl + f ) |
cat
cat
可以用来查看文件内容、创建文件、合并文件、追加文件内容等cat
可以一次性显示所有的文本内容,适合查看内容较少的文件
选项 | 描述 |
---|---|
-n | 显示行号(包含空行) |
-b | 显示行号(不包含空行) |
cat 文件名
cat a.py # 查看文件a.py的内容
cat -n a.py # 查看文件a.py的内容并显示行数
cat -b a.py # 查看文件a.py的内容并显示行数
cat -n test/a.py # 查看文件a.py的内容并显示行数
more
more
可以分屏显示文件的内容,每次分屏显示一页- 适合文本内容较多的文件
more 文件名
more a.py #分屏显示a.py的内容
more test/a.py #分屏显示a.py
grep
grep
命令在Linux
系统中是一种强大的文本搜索工具grep
可以对文本文件进行模式查找,模式查找也称为正则表达式
选项 | 描述 |
---|---|
-n | 显示匹配行以及行号 |
-v | 显示不包含匹配文本的所有行(相当于!n) |
-i | 忽略大小写 |
grep 搜索内容 文件名
grep python a.py # 在a.py文件中搜索"python"
grep -n python a.py # 显示匹配行以及行号
grep -v python a.py # 显示非匹配行
grep -i python a.py # 忽略大小写
grep
的联合使用
grep -ni python a.py
常用的两种模式查找
参数 | 描述 |
---|---|
^i | 行首模式(显示以i开头的行) |
i$ | 行尾模式(显示以i结尾的行) |
grep ^i a.py # 搜索以"i"开头的行
grep i$ a.py # 搜索以"i"结尾的行
grep -n ^i a.py # 搜索以"i"开头的行并显示行
11. echo命令
echo
会在终端中显示指定的参数,一般会和重定向一起使用
echo hello # 终端中显示hello
重定向 >
和 追加>>
>
: 表示输出,文件的原有内容会被覆盖
>>
:表示追加,会将文件内容追加到已有的文件末尾
echo python > a.py # 文件a.py的内容是 "python"(覆盖了文件原来的内容)
echo java >> a.py # 文件a.py的末尾添加了 "java"
Linux
允许将命令显示结果重定向/追加
到一个文件
ls -l > a.py # 重定向
ls -l >> a.py # 追加
12. | 管道
Linux
中,一个命令的输出结果作为另一个命令的输入,可以通过管道来实现- 常用的管道命令有:
more
和grep
ls -lh ~ | more # ls -lh的结果分屏显示
ls -lh ~ | grep abc # ls -lh的结果中搜索"abc"
ls -lh ~| grep -ni abc # ls -lh的结果中搜索"abc"
三. shutdown关机
- 在
Linux
系统中可以使用命令shutdown
进行关机
命令 | 描述 |
---|---|
shutdown | 1分钟后关机 |
shutdown -r | 1分钟后重启 |
shutdown -r now | 1分中后重启 |
shutdown 17:20 | 17:30关机 |
shutdown -c | 取消之前的计划 |
四. 网络
-
网卡是一个专门负责网络通讯的硬件设备
-
ip
地址是设置在网卡上的地址信息(通过ip
可以找到网络上的计算机) -
网卡相当于
SIM
卡ip
地址相当于电话号码ip
地址标识网卡
ifconfig
查看网络配置信息
ifconfig
如果查不到本地的ip
地址,可以使用
sudo ifconfig ens33
通过 |
管道查看网络配置
ifconfig | grep inet
ping ip
地址–(查看两机之间通讯是否正常)
ping 170.120.110.31
查看本地网络是否工作正常
ping 127.0.0.1
五. 远程管理
1. SSH的使用
- 用
SSH
(对数据进行了加密和压缩)目的是维护、管理远程的服务器 Linux
中SSH
是非常常用的工具,通过SSH
客户端我们可以连接到运行的SSH
服务器的远程机器上
ssh
客户端的使用:
ssh [-p port] user@remote
user
: 是远程机器上的用户名,如果不指定默认为当前用户remote
: 是远程服务器的地址,可以是ip/域名
或者是别名port
: 为ssh server
监听的端口,如果不指定,就默认为22
ssh
客户端登录到另一台机器的用户上
ssh -[p 22] user@remote
这里,我们使用ssh
登录到用户是pancc
,ip
地址是192.168.241.131
的服务器上:
ssh pancc@192.168.241.131
- 默认端口是
22
安装ssh
:
apt-get install openssh-server
开启SSH
服务:
service sshd start
若开启SSH
服务前出现Unit sshd.service not found
,则:
systemctl enable ssh.service
2. scp的使用
- 在
linux
系统中,远程拷贝文件时,可以使用scp
- 在
windows
系统中要在FileZillia
中使用FTP
和远程服务器
进行文件传输
选项 | 描述 |
---|---|
-r | 传送文件夹需要-r |
-P | 若不是默认端口,则要设置-P来指定端口 |
scp -[P port] 文件名 user@remote:远程服务器文件
本地a.py
拷贝到远程服务器Desktop
目录下
scp a.py pancc@192.168.241.128:Desktop/
远程服务器的a.py
文件拷贝到当前目录下
scp pancc@192.168.241.128:Desktop/a.py .
3. 远程登录
- 客户端->服务端 私钥对文件进行加密
- 服务端->客户端 公钥对文件进行加密
- 公钥解密私钥,私钥解密公钥
1. 配置公钥
执行ssh-keygen
,生成SSH
钥匙:
ssh-keygen
2. 上传公钥到服务器
执行ssh-copy-id -p port user@remote
,可以让远程服务器记住我们的公钥:
ssh-copy-id pancc@192.168.241.128
查看公钥:
cd ~/.ssh
cat id_rsa.pub
3. 设置远程服务器别名
cd
到.ssh
目录下,新建一个config
文件,在config
文件中进行配置
# 1.进入.ssh目录
cd ~/.ssh
# 2.新建config文件
touch config
# 3.编辑config
vi config
# 4.配置config
Host 别名
HostName ip地址
User 用户名
Port 22
在这里,设置远程服务器的别名为pcc
Host pcc # 远程服务器别名
HostName 192.168.241.128 # 远程服务器的ip地址
User pancc # 远程服务器的用户名
Port 22 # 端口号
1.有了别名就可以很简便的登录上远程服务器
ssh pcc
2.有了别名传输文件到远程服务器时也可以很简便
scp a.py pcc:Desktop/
六. 用户权限
在linux
系统中,用户分别有: 拥有者、用户组、其他用户
。
如何确定硬链接数?
-
如果是文件,一般只有一个硬链接(一种方式找到文件->绝对路径)。
-
如果是目录取决于它的子目录,子目录越多硬链接数越多。
1. chmod
chmod
可以修改用户/组 对 文件/目录 的权限
chmod
+rwx 文件名/目录
#增加权限: 可读可写可执行
chmod +rwx a.py
#减少权限
chmod -rwx a.py
chmod 777 文件名
#1. 修改文件
chmod 777 a.py
#2. 修改目录
chmod 777 test
Linux
目录中的权限:
#1.若无执行x,无法cd(Linux目录中必须要有可执行x)
chmod -x test # bash: cd: test: 权限不够
#2.若无可读r,无法ls
chmod -r test # ls: 无法打开目录'.': 权限不够
#3.若无可写,无法touch
chmod -w test # touch: 无法创建'a.py': 权限不够
2. 超级用户: sudo
- 以
root
的身份进行登录 - 平常我们登录的是
标准
用户 root
账号通常用于系统的维护和管理
3. 组管理
- 在使用组管理时,最前面需要使用
sudo
序号 | 命令 | 描述 |
---|---|---|
01 | groupadd 组名 | 增加组 |
02 | groupdel 组名 | 删除组 |
03 | cat /etc/group | 查看组信息 |
04 | chgrd -R 组名 文件/目录名 | 修改文件/目录的所属组( -R递归) |
/etc/group
: 用来保存组信息/etc
是专门用来保存系统信息的目录
增加test
测试组
sudo groupadd test
删除dev
开发组
sudo groupdel dev
查看组信息
cat /etc/group
修改a.py
文件的所属组
sudo chgrp test a.py
修改test
目录的所属组
sudo -R chgrp dev test01 (使用R选项递归)
4. 用户管理
- 在使用用户管理时,最前面需要加上
sudo
序号 | 命令 | 描述 | 说明 |
---|---|---|---|
01 | useradd -m -g 组名 用户名 | 添加用户 | -m 自动建立用户家目录 -g指定用户所在组 |
02 | userdel -r 用户名 | 删除用户 | -r 选项会自动删除用户家目录 |
03 | passwd | 设置密码 | 如果是标准用户,直接passwd就可以对密码进行修改 |
04 | cat /etc/passwd | 查看用户信息 | 新建用户后,用户保存信息会在,etc/passwd文件中 |
- 创建用户时,默认会创建一个和用户名同名的组名
- 创建用户时,若忘记添加
-m
选项指定新用户的家目录—(解决办法:删除用户,重新创建) - 用户信息保存在
/etc/passwd
文件中
查看有哪些用户
ls -l /home
添加pcc用户
sudo useradd -m -g dev pcc
删除python用户
sudo userdel -r python
设置pcc用户密码
sudo passwd pcc
查看用户信息
cat /etc/passwd
5. 查看用户信息
序号 | 命令 | 描述 |
---|---|---|
01 | id | 查看用户uid(用户代号)和gid(组代号) |
02 | who | 查看当前所有登录的用户列表 |
03 | whoami | 查看当前登录的用户账户名 |
查看pcc
用户id
id pcc
查看当前登录的用户列表
who
查看当前登录的用户账户名
whoami
查看用户信息
cat /etc/group | grep dev
cat /etc/passwd | grep pcc # 用户名-密码(x)-用户代号-组代号-
usermod
命令 | 描述 |
---|---|
usermod -g 组名 用户名 | 修改用户的主组 |
usermod -G 组名 用户名 | 修改用户的附加组 |
- 主组:
/etc/passwd
的第四列对应的组 - 附加组:
/etc/group
最后一列的用户列表,用于指定用户的附加权限
修改pcc
用户的主组(dev
),修改后的主组为(test
):
sudo usermod -g test pcc
修改pcc
用户的附加组(sudo
),使得pcc
用户拥有sudo
权限:
sudo usermod -G sudo pcc
pcc
用户添加了附加组sudo
,有了sudo
权限
which
which
可以用来查询终端命令的所在位置
which 终端命令
查询ls
命令的位置
which ls # /bin/ls
查询passwd
命令的位置
which passwd # /usr/bin/passwd
ls -l /usr/bin/passwd
/etc/passwd
是保存用户信息的文件- 而
/usr/bin/passwd
是用于修改用户密码的程序
su
su
可以用来切换当前用户名
su
用户名
切换到pcc
用户
su pcc
七. 系统信息
1. 时间和日期
序号 | 命令 | 描述 |
---|---|---|
01 | date | date查看系统日期 |
02 | cal -[y] | cal查看日历,-y查看当年的日历 |
查看系统日期
date
查看日历
cal
cal -y # 当年日历
2. 磁盘信息
序号 | 命令 | 描述 |
---|---|---|
01 | df -h | 显示磁盘剩余空间 |
02 | du -h [目录名] | 显示目录下的文件大小,不指定的话则是当前目录 |
显示磁盘剩余空间
df -h
显示当前目录的文件大小
du -h
显示当前目录下test目录的文件大小
du -h test
3. 进程信息
序号 | 命令 | 描述 |
---|---|---|
01 | ps [aux] | 显示进程的信息,一般都使用ps au |
02 | top | 动态的显示进程并且排序 |
03 | kill [-9] 进程代号 | 强制结束进程(指定的进程代号) |
a
: 终端上的所有进程包括其他用户进程u
: 进程的详细状态x
: 非终端上的进程
显示进程信息
ps au
动态显示进程
top
强制结束进程
kill -9 2472 # 结束代号为2472的进程
八. 其他命令
1. 查找命令
- 在我们不记得文件全名的时候,可以使用
find
进行搜索
序号 | 命令 | 描述 |
---|---|---|
01 | find [路径] -name " " | 查找指定路径下扩展名是" "的文件,包括子目录 |
- 如果省略路径,表示在当前文件夹下查找
find
命令可以同时配合通配符使用
查找所有的.py
文件
find -name "*.py"
查找指定路径下所有的.py
文件
find ~/Desktop/test -name "*.py"
2. 软链接
- 添加了软链接的文件,就类似
windows
的快捷方式
序号 | 命令 | 描述 |
---|---|---|
01 | ln -s [源文件] [目标文件或目录] | 软链接一般的都是以绝对路径来创建 |
-
如果以相对路径移动文件到别的目录很可能会出问题,文件打不开
-
不加
s
则创建的是硬链接,硬链接几乎不使用 -
源文件删除,软链接也就失效
创建软链接
ln -s /home/pancc/test/hello.txt link_01
- 在当前目录下创建的软链接
删除软链接
rm -rf link_01
3. 打包/解包
1. tar -[xcvf]
选项 | 描述 |
---|---|
c | 创建打包文件 |
x | 解开打包文件 |
v | 列出打包解包的详细过程,显示进度 |
f | 指定文件名称,f后面一定是.tar文件,必须放选项最后 |
-
打包
tar -xvf 包名 文件名
-
解包
tar-cvf 包名
将a.py
,b.py
,c.py
打包成pack01.tar
tar -cvf pack01.tar a.py b.py c.py
将pack01.tar
进行解包
tar -xvf pack01.tar
2. gzip解压缩
压缩文件
tar -zcvf pack02.tar.gz a.py b.py c.py
解压文件
tar -zxvf pack02.tar.gz
若在后面加 -C 文件名
,则表示解压到指定文件夹
tar -zxvf pack02.tar.gz -C test02
3. bzip解压缩
压缩文件
tar -jcvf pack03.tar.bz2 a.py b.py c.py
解压文件
tar -jxvf pack03.tar.bz2
解压到指定文件夹
tar -jxvf pack03.tar.bz2 -C test03
4. 安装软件/卸载/更新
安装
sudo apt install 软件名
卸载
sudo apt remove 软件名
更新
sudo apt apgrade 更新已安装的包