目录
- 前言
- 1. 操作系统是干什么的
- 2. Linux 是什么
- 3. `为什么`要学习 Linux
- 4. Linux 发行版本
- 5. Linux 系统特点
- 6. Linux 安装
- 7. Linux 系统启动
- 8. Linux 操作方式
- 9. Shell 与命令
- 10. 命令格式
- 一、 Linux终端命令格式
- 1. 终端命令格式
- 2. 查阅命令帮助信息
- 二、 常用Linux命令的基本实用
- 1. 学习Linux终端命令的原因
- 2. 常用Linux命令的基本使用
- 3. 自动补全
- 4. 命令模式功能——光标移动
- 三、 其它命令
- 1. find 命令:查找文件
- 演练目标
- 2. 软链接
- 2.1 演练目标
- 2.2 硬链接简介(知道)
- 2.3 硬链接演练
- 2.4 文件软硬链接示意图
- 3. 文件打包、压缩
- 3.1 tar 命令:打包 / 解包
- 3.2 压缩/解压缩
- gzip命令:压缩
- 3.3 bzip2(two)
- 3.4 zip 压缩命令
- 4. 软件安装
- 法一:通过 apt 安装/卸载软件
- 法二:rpm 包安装(本地安装包安装,现在基本不用这种方式了)
- 法三:yum 安装(这个是最方便最常用的,它会自动安装自己所需要的依赖)
- 四、 Linux 文件与目录常用命令
- 前言
- Linux 文件系统特点
- 1. 查看目录内容
- 1.1 ls 命令说明(可以查看文件和目录)
- 1.2 Linux 文件名与特殊文件
- 1.3 ls 常用选项
- 1.4 ls 通配符的使用
- 2. 目录操作的常用命令
- 2.1 cd
- 2.2 相对路径和绝对路径
- 2.2.1 相对路径
- 2.2.2 绝对路径
- 3. 创建文件与创建目录操作
- 3.1 touch
- 3.2 mkdir
- 3.3 rm
- 4. 拷贝和移动文件
- 4.1 tree
- 4.2 cp
- 4.3 mv
- 5. 查看文件内容
- 5.1 cat
- 5.2 more
- 5.3 文本关键字搜索 grep 命令
- 6. 文件内容统计(wc)
- 7. 查看目录使用空间(du)
- 8. 文件链接
- 9. 其他
- echo 文字内容
- 10. 注销
- 五、Linux 文件权限管理
- 1. 文件权限管理
- 2. Lunux 文件访问权限和访问者种类
- 2.1 w:写入权限
- 2.2 x:执行权限
- 2.3 文件的访问用户类型
- 3. 改变Linux 文件的访问权限(修改文件权限)和所属用户和用户组
- 3.1 改变Linux 文件的访问权限(修改文件权限)
- 3.2 权限判断的顺序
- 3.3 chown命令:改变文件所有者和所属组
- 3.4 chgrp命令:改变文件的所属组
- 六、用户权限相关命令
- 1. 组管理
- 2. 用户管理
- 2.1 创建用户/设置密码/删除用户
- 2.2 查看用户信息
- 2.2.1 which(重要)
- 2.2.2 bin 和 sbin
- 2.3 切换用户
- 七、系统信息相关命令
- 1. 时间和日期
- 2. 磁盘信息
- 八、进程
- 1. ps命令查看进程
- 2. 后台运行进程
- 3. 标准输入(stdin)、标准输出(stdout)、标准错误(stderr)
- 九、重定向 > 和 >>
- 十、管道 `|`
- 十一、网络操作命令、工具及系统资源查看
- 1. 网络操作命令
- 1.1 查看IP地址的方法
- 1.2 禁用、启用网络接口
- 1.3 netstat命令:查看连接端口
- 1.4 lsof命令:查看端口的占用
- 1.4 top命令
- 2. 网络操作工具
- 3. 系统资源查看
- 3.1 free 命令
- 3.2 df 命令
- 十二、远程管理常用命令
- 1. 关机/重启
- 2. 查看配置网卡信息
- 2.1 ifconfig
- 2.2 ping
- 3. 远程登录和赋值文件
- 3.1 ssh 基础(重点)
- 3.2 scp
前言
1. 操作系统是干什么的
管理硬件和程序的一套系统软件
- 处理器管理
- 内存管理
- 文件系统管理
- 进程管理
- 外设管理
- 用户管理
…
2. Linux 是什么
Linux 是计算机操作系统
- 常见的操作系统有:Windows、Android、苹果IOS、MAC系统、UNIX(和 Linux 类似)
3. 为什么
要学习 Linux
- Linux作为操作系统在企业中广泛使用。
- 大量的公司项目软件安装在 Linux 系统上面。
- 公司软件运行过程中出现问题,需要使用 Linux 知识去排查和解决。
比如:网络故障排查、程序状态查看、查看日志、软件安装/卸载、程序配置文件修改。
4. Linux 发行版本
各种组织或单位采用 Linux 内核和 GNU 工具集以及各类软件,编译及包装成自己的所谓 Linux 发行版本。
服务器常见:
Redhat系列:CentOS、RedHat
Debian系列:Debian、Ubuntu
5. Linux 系统特点
稳定
: Linux 是基于 Unix 的概念开发出来的系统,拥有 Unix 的稳定且效率的特点。运行一年以上而不曾宕机、不必关机是很平常的事情。多用户
:同时支持多个用户登录使用(用户管理)。多任务
:多个任务(程序)可以同时运行(类似于 Windows)。安全
:源代码开源,有问题可以及时发现和优化,安全漏洞的快速修补源码公开——任何人、任何组织只要遵守官方许可条款,就可以自由使用 Linux 源代码。- 广泛的硬件 / 款件支持——常见的应用先为 Linux 版本开发,后续才移植到其他平台。
- 强大的命令工具
6. Linux 安装
- 直接通过光盘安装到硬件上面(比如:方法和 Windows 安装类似)通过虚拟机安装——解决多系统同时并存在一台电脑上的问题。
- 步骤:
-
- 在 windows 上面安装虚拟机软件
-
- 在虚拟机软件里面安装 Linux 系统
7. Linux 系统启动
8. Linux 操作方式
- 命令窗口——更加强大的操作方式
9. Shell 与命令
shell 是用来接受用户从字符终端输入的命令,并调用对应的程序去执行命今的程序
。
- 用户通过命令和 Linux 进行交互的桥梁
- Linux 是通过 Shell 来解释执行命令
- Shell 是一个程序
- Linux 默认的 Shell 是:bash
10. 命令格式
command 参数1 参数2 ... 参数n
Linux 命令由一个命令(command)和本列多个参数构成
命令和参数之间,以及参数与参数之间用空格隔开
例:
ps
Ps -e -f
命令和参数都是 区分大小写的
例:
Ps
- 选项(option)参数可以合并
例:
ps -e -f -> ps -ef
一、 Linux终端命令格式
1. 终端命令格式
command [-options] [parameter]
说明:
command :命令名,相应功能的英文单词或单词的缩写
[-options] :选项,可用来对命令进行控制,也可以省略
parameter :传给命令的参数,可以是 零个、一个 或者 多个
2. 查阅命令帮助信息
-help
说明:
显示 command 命令的帮助信息
-man
说明:
查阅 command 命令的使用手册
man 是 manual 的缩写,是 Linux 提供的一个 手册,包含了绝大部分的命令、函数的详细使用
说明:
使用 man 时的操作键
操作键 | 功能 |
---|---|
空格键 | 显示手册页的下一屏 |
Enter键 | 一次滚动手册页的一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出 |
/word | 搜索 word 字符串 |
二、 常用Linux命令的基本实用
1. 学习Linux终端命令的原因
- Linux 刚面世时并没有图形界面,所有的操作全靠命令完成,如磁盘操作、文件存取、目录操作、进程管理、文件权限 设定等
- 在职场中,大量的 服务器维护 工作 都是在 远程 通过 SSH 客户端 来完成的,并没有图形界面,所有的维护工作都需要通过命令来完成
- 在职场中,作为后端程序员,必须要或多或少的掌握一些 Linux 常用的终端命令
- Linux 发行版本的命令大概有 200 多个,但是常用的命令只有 10 多个而已
2. 常用Linux命令的基本使用
命令 | 对应英文 | 作用 |
---|---|---|
ls | list | 查看当前文件夹下的内容 |
pwd | print work directory | 查看当前所在文件夹 |
cd[目录名] | changge directory | 切换文件夹 |
touch[文件名] | touch | 如果文件不存在,新建文件 |
mkdir[目录名] | make directory | 创建目录 |
rm[文件名] | remove | 删除指定文件 |
clear | clear | 清屏 |
小技巧:
ctrl + shift + = 放大终端窗口的字体显示
ctrl + - 缩小终端窗口的字体显示
3. 自动补全
在敲出 文件 / 目录 / 命令
的前几个字母之后,按下 tab 键
- 如果输入的没有歧义,系统会自动补全
- 如果还存在其他
文件 / 目录 / 命令
,再按一下 tab 键,系统会提示可能存在的命令
小技巧:
3. 按 上 / 下
光标键可以在曾经使用过的命令之间来回切换
4. 如果想要退出选择,并且不想执行当前选中的命令,可以按 ctrl + c
4. 命令模式功能——光标移动
光标移动:
命令 | 作用 |
---|---|
G | 移动到文件最后一行行首 |
gg | 移动到文件的开头 |
按 O 或 ^ | 光标移动到所在行的行首 |
按 $ | 光标移动到所在行的行尾 |
按 ctrl+f | 往下翻一页 |
按 ctrl+b | 往上翻一页 |
三、 其它命令
1. find 命令:查找文件
-
find 命今会在指定目录及其子目录下查找符合条件的特定文件。当我们忘了文件的位置,可以使用该命令。
-
命令格式:
find 目录名 条件
-
find 命令功能非常强大,通常用来在 特定的目录下 搜索 符合条件的文件
命令 | 作用 |
---|---|
find [路径] -name “*.py” | 查找指定路径下扩展名是 .py 的文件,包括子目录 |
- 如果省略路径,表示在当前文件夹下查找
- 之前学习的通配符,在使用 find 命令时同时可用
- 常见条件:
-name
:指定要被寻找的文件或目录名称,可用通配符-type x
:以文件类型作为寻找条件。文件类型 x 如下:d — 目录(directory), f — 文件(file)
例如:
find /temp -name “abc”
find /temp -name “abc*”
find /temp -name “abc*” -type f
演练目标
- 搜索桌面目录下,文件名包含 1 的文件
find -name "*1*"
- 搜索桌面目录下,所有以 .txt 为扩展名的文件
find -name "*.txt"
- 搜索桌面目录下,以数字 1 开头的文件
find -name "1*"
2. 软链接
命令 | 作用 |
---|---|
ln -s 被链接的源文件 链接文件 | 建立文件的软链接,用通俗的方式讲类似于 Windows 下的快捷方式 |
注意
:
- 没有
-s
选项建立的是一个 硬链接文件两个文件占用相同大小的硬盘空间,工作中几乎不会建立文件的硬链接 - 源文件要 使用绝对路径,不能使用相对路径,这样可以方便移动链接文件后,仍然能够正常使用
2.1 演练目标
- 将桌面目录下的 01.py 移动到 demo/b/c 目录下
- 在桌面目录下新建 01.py 的 软链接 FirstPython分别使用 相对路径 和 绝对路径 建立 FirstPython 的软链接
- 将 FirstPython 移动到 demo 目录下,对比使用 相对路径 和 绝对路径 的区别
2.2 硬链接简介(知道)
在使用 ln 创建链接时,如果没有 -s 选项,会创建一个硬链接,而不是软链接
2.3 硬链接演练
- 在
~/Desktop/demo
目录下建立~/Desktop/demo/b/c/01.py
的硬链接01_hard
- 使用 ls -l 查看文件的硬链接数(硬链接——有多少种方式可以访问文件或者目录)
- 删除
~/Desktop/demo/b/c/01.py
,并且使用 tree 来确认 demo 目录下的三个链接文件文件软硬链接的示意图
2.4 文件软硬链接示意图
在 Linux 中,文件名 和 文件的数据 是分开存储的
提示
:
- 在 Linux 中,只有文件的
硬链接数 == 0
才会被删除 - 使用
ls -l
可以查看一个文件的硬链接的数量 - 在日常工作中,几乎不会建立文件的硬链接,知道即可
3. 文件打包、压缩
- 打包压缩 是日常工作中备份文件的一种方式
- 在不同操作系统中,常用的打包压缩方式是不同的选项 含义
- Windows 常用 rar
- Mac 常用 zip
- Linux 常用 tar.gz
打包和压缩的区别:
- 打包是指把文件和目录的结构和内容拷贝到一个文件里
- 压缩是指把文件经过一些算法变成体积上更小的文件
- 一般是既打包也压缩
- 可以不压缩,只打包
3.1 tar 命令:打包 / 解包
tar
是 Linux 中最常用的 备份 工具,此命令可以 把一系列文件 打包到 一个大文件 中,也可以把一个 打包的大文件恢复成一系列文件
tar
的命令格式如下:
打包文件
tar -cvf 打包文件.tar 被打包的文件/路径...
解包文件
tar -xvf 打包文件.tar
tar选项说明:
选项 | 含义 |
---|---|
c | 生成档案文件,创建打包文件 |
x | 解开档案文件 |
v | 列出归档解档的详细过程,显示进度 |
f | 指定档案文件名称,f 后面一定是 .tar 文件,所以必须放选项最后 |
注意
: f 选项必须放在最后,其他选项顺序可以随意
例:
tar -cvf fles.tar 123.txt 456.txt 789.txt
:打包-文件
tar -cvf files.tardir1
:打包-目录
tar -tvf files.tar
:查看包内容
tar -xvf files.tar -C dir1
:解开包
tar -cvf test.tar f1 f2
:把f1 f2文件打包到test.tar文件中
tar -tvf test.tar
:查看包内的内容
tar -xvf test.tar
:解开 test.tar 包
tar -xvf test.tar -C
:目录 解开> test.tax 包到指定的目录下
3.2 压缩/解压缩
gzip命令:压缩
- tar 与 gzip 命令结合可以使用实现文件 打包和压缩
tar 只负责打包文件,但不压缩
用 gzip 压缩 tar 打包后的文件,其扩展名一般用 xxx.tar.gz
在 Linux 中,最常见的压缩文件格式就是 xxx.tar.gz
- 在 tar 命令中有一个选项 -z 可以调用 gzip ,从而可以方便的实现压缩和解压缩的
- 功能命令格式如下:
压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件/路径...
解压缩文件
tar -zxvf 打包文件.tar.gz
解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目标路径
选项 | 含义 |
---|---|
-C | 解压缩到指定目录,注意:要解压缩的目录必须存在 |
压缩多个文件:
语法:gzip 文件名1 文件名2
gzip-dtest.gz :解压文件
与 tar 联合使用:
gzip 不能压编日录,所以我们要和 tar 合用,先打包再压缩。
tar -zcvt test.tar.gz f1 f2
打包并且压缩
tar -zcvf test.tar.gz *
打包并压缩当前目录下所有文件
test -zcvf targ.tar.gz -c
指定目录 解压缩包到指定目录
总结:
- 压缩
一个或多个
文件 - gzip file1 file2
- 压缩完后,原来的文件会被替换 .gz
- gzip -d fle1.gz :解压
- 不能压缩目录
- 与tar合用
- tar
-zcvf
data.tar.gz
file1 d1 :打包并压缩 - tar -zcvf data.tgz *.doc :打包并压输
- tar -zxvf pics.tar.gz -C 目录:解压缩
- tar -ztvf data.tar.gz :查看压缩包内容
3.3 bzip2(two)
tar 与 bzip2 命令结合可以使用实现文件打包和压缩
(用法和 gzip 一样)
tar 只负责打包文件,但不压缩。
用 bzip2 压缩 tar 打包后的文件,其扩展名一般用 xxx.tar.bz2- 在 tar 命令中有一个选项 -j 可以调用 bzip2 ,从而可以方便的实现压缩和解压缩的功能
- 命令格式如下:
压缩文件
tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径...
解压缩文件
tar -jxvf 打包文件.tar.bz2
3.4 zip 压缩命令
- zip zipName.zip file1 dir1:压缩一个或多个文件
- unzip zipName.zip :解压
4. 软件安装
法一:通过 apt 安装/卸载软件
- apt 是
Advanced Packaging Tool
,是 Linux 下的一款安装包管理工具 - 可以在终端中方便的 安装/卸载/更新软件包
安装软件
$ sudo apt install 软件包
卸载软件
$ sudo apt remove 软件名
更新已安装的包
$ sudo apt upgrade
法二:rpm 包安装(本地安装包安装,现在基本不用这种方式了)
命令:
wget
:下载地址 — 从指定下载地址下我文件
rpm -ivh
:发装spm仙
rpm -qa :查看所有安装过的包
rpm -qa|grep :关键字 查询响应找的包
rpm -e :删除指定包
法三:yum 安装(这个是最方便最常用的,它会自动安装自己所需要的依赖)
什么是 yum 安装:
-
在 Fedora 和 RedHat 以及 SUSE、CentOS 中的软件包管理器
-
基于 RPM 包管理
-
能够从指定的服务器自动下载 RPM 包并且安装
-
可以自动处理依赖性关系,并且一次安装所有依赖的软件包
-
yum install :安装
-
yum remove :卸载
-
yum list installed :查看已经安装的软件
四、 Linux 文件与目录常用命令
前言
Linux 文件系统特点
Linux 系统里面所有的东西都当作文件处理
- Linux 中,文件是个非常广泛的概念:磁盘上的文本,图片、视频文件,硬件设备,比如打印机
1. 查看目录内容
1.1 ls 命令说明(可以查看文件和目录)
ls 是英文单词 list 的简写,其功能为列出目录的内容,是用户最常用的命令之一,类似于 DOS下的 dir 命令
1.2 Linux 文件名与特殊文件
- Linux 文件 或者 目录 名称最长可以有 256 个字符参数 含义
- Linux 文件名称:大小写敏感,无专用扩展名
例:/opt/al 和 /opt/Al 是两个文件哦
- Linux 特殊文件
参数 | 含义 |
---|---|
/ | 表示根目录 |
. | 表示当前目录 |
.. | 表示当前目录的父目录 (上一层目录) |
.字符串 | 表示隐藏文件,如 “bash_profile” 文件,这个文件需要用 -a 参数才能显示 |
1.3 ls 常用选项
参数 | 含义 |
---|---|
-a | 显示指定目录下所有子目录与文件,包括隐藏文件 |
-l | 以列表方式显示文件的详细信息 |
-h | 配合 -l 以人性化的方式显示文件大小 |
1.4 ls 通配符的使用
通配符 | 含义 |
---|---|
* | 代表任意个数个字符 |
? | 代表任意一个字符,至少 1 个 |
[] | 表示可以匹配字符组中的任一一个 |
[abc] | 匹配 a、b、c 中的任意一个 |
[a-f] | 匹配从 a 到 f 范围内的的任意一个字符 |
例:
模式 | 匹配对象 |
---|---|
g* | 文件名以 “g” 开头的文件 |
b*.txt | 以 “b” 开头,中间有零个或任意多个字符,并以 “.txt” 结尾的文件 |
Data??? | 以 “Data" 开头,其后紧接着3个字符的文件 |
[abc]* | 文件名以 “a”,“b”,或 “c” 开头的文件 |
注意
:以 .
开头的文件为隐藏文件,需要用 -a 参数才能显示
2. 目录操作的常用命令
2.1 cd
cd
是英文单词 change directory 的简写,其功能为更改当前的工作目录,也是用户最常用的命令之一
注意
:Linux 所有的 目录
和 文件名
都是大小写敏感
的
命令 | 含义 |
---|---|
cd | 切换到当前用户的主目录(/home/用户目录) |
cd /home | 进入 ‘/home’ 目录 |
cd ~ | 切换到当前用户的主目录(/home/用户目录) |
cd . | 保持在当前目录不变 |
cd ... | 切换到上级目录 |
cd - | 可以在最近两次工作目录之间来回切换 |
cd .. | 返回上一级目录 |
pwd | 显示当前工作路径 |
2.2 相对路径和绝对路径
- 当前目录 (工作目录)
- 就是我们(Shell)所在的目录
- 当用户刚登录系统时,当前目录是用户的家目录(home目录)
- 用户家目录在创建用户的时候会产生,一般是 /home/用户名:比如你是用户limin,家目录一般是 /home/limin。
- 当前目录下面的所有文件都可以直接访问,假设当前目录下面有个文件 a.txt。要用 vi 编辑它,就可以直接执行 vi a.txt
- 查看当前目录命令:
pwd
- 改变当前路径命令:
cd
2.2.1 相对路径
- 开始于当前目录,紧跟着目录树的一个个分支,一直到达所期望的目录或文件。
.
和..
.。 - 在输入路径时,最前面不是 / 或者 ~,表示相对 当前目录 所在的目录位置。
2.2.2 绝对路径
- 开始于根目录,紧跟着目录树的一个个分支,一直到达所期望的目录或文件。
- 在输入路径时,最前面是 / 或者 ~,表示从
根目录/目录
开始的具体目录位置
3. 创建文件与创建目录操作
选项 | 含义 |
---|---|
touch a.txt | 创建一个叫做 ‘a.txt’ 的文件 (空文件) |
mkdir dir1 | 创建一个叫做 ‘dir1’ 的目录 |
mkdir -p dir1/ dir2/ dir3 | 创建多层级路径 |
rmdir dir1 | 删除一个叫做 ‘dir1’ 的空目录(只能删除空目录) |
rm-f file | 强制删除一个叫做 ‘file’ 的文件 |
rm -rf dir1 | 强制删除一个叫做 ‘dir1’ 的目录以及目录中所有文件以及子目录内容 |
rm -rf 需要谨慎再谨慎
!
3.1 touch
创建文件或修改文件时间
如果文件 不存在,可以创建一个空白文件
如果文件 已经存在,可以修改文件的末次修改日期
3.2 mkdir
创建一个新的目录
选项 | 含义 |
---|---|
-p | 可以递归创建目录 |
新建目录的名称 不能与当前目录中 已有的目录或文件 同名
3.3 rm
删除文件或目录
使用 rm 命令要小心,因为文件删除后不能恢复
选项 | 含义 |
---|---|
-f | 强制删除,忽略不存在的文件,无需提示 |
-r | 递归地删除目录下的内容,删除文件夹 时必须加此参数 |
4. 拷贝和移动文件
命令 | 对应英文 | 作用 |
---|---|---|
tree [目录名] | tree | 以树状图列出文件目录结构 |
cp 源文件目标文件 | copy | 复制文件或者目录 |
mv 源文件 目标文件 | move | 移动文件或者目录/文件或者目录重命名 |
4.1 tree
tree 命令可以以树状图列出文件目录结构
选项 | 含义 |
---|---|
-d | 只显示目录 |
4.2 cp
cp 命令的功能是将给出的 文件 或 目录 复制到另一个 文件 或 目录 中,相当DOS 下的 copy命令
选项 | 含义 |
---|---|
-i | 覆盖文件前提示 |
-r | 若给出的源文件是目录文件,则 cp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名 |
4.3 mv
mv 命令可以用来 移动 文件 或 目录,也可以给 文件或目录重命名
选项 | 含义 |
---|---|
-i | 覆盖文件前提示 |
5. 查看文件内容
命令 | 对应英文 | 作用 |
---|---|---|
cat 文件名 | concatenate | 查看文件内容、创建文件、文件合并、追加文件内容等功能 |
more 文件名 | more | 分屏显示文件内容 |
grep 搜索文本 文件名 | grep | 搜索文本文件内容 |
5.1 cat
cat 命令可以用来 查看文件内容、创建文件、文件合并、追加文件内容 等功能
cat 会一次显示所有的内容,适合 查看内容较少 的文本文件
选项 | 含义 |
---|---|
-b | 对非空输出行编号 |
-n | 对输出的所有行编号 |
Linux 中还有一个 nl 的命令和 cat -b 的效果等价
5.2 more
- more 命令可以用于分屏显示文件内容,每次只显示一页内容
- 适合于 查看内容较多的文本文件
使用 more 的操作键:
操作键 | 功能 |
---|---|
空格键 | 显示手册页的下一屏 |
Enter | 键 一次滚动手册页的一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出 |
/word | 搜索 word 字符串 |
5.3 文本关键字搜索 grep 命令
- Linux 系统中 grep 命令是一种强大的文本搜索工具,并把匹配的行打印出来。
- 啥时候用?
- 查看日志
- 查看命令输出
- grep root /var/log/messages
- 大小写敏感
- 支持正则表达式搜索文本:grep 允许对文本文件进行 模式查找,所谓模式查找,又被称为正则表达式。
例子:
命令 | 对应英文 | 作用 |
---|---|---|
grep “test" d* | 通配符 | 显示所有以 d 开头的文件中包含 test 的行。 |
grep “test" aa bb cc | 多个文件 | 显示在aa,bb,cc 文件中匹配 test 的行。 |
grep “root" -r /var/log | 目录中通归搜索 | 在 /var/log 所有子目录子文件中搜索包含字符串 “root” 的行 |
grep “^test” /var/log/scp.log | 正则表达式 | 在 scp.log 中搜索以字符串 “test" 开头的行 |
grep 命今常用参数:
选项 | 含义 |
---|---|
-n | 显示匹配行及行号 |
-v | 显示不包含匹配文本的所有行(相当于求反) |
-i | 不区分大小写 |
-c | 只输出匹配行的行数 |
-F | 指明 pattern 非正则表达式 |
常用的两种模式查找:
参数 | 含义 |
---|---|
^a | 行首,搜寻以 a 开头的行 |
ke$ | 行尾,搜寻以 ke 结束的行 |
6. 文件内容统计(wc)
命令 | 含义 |
---|---|
wc -l /etc/passwd | 统计 /etc/passwd 文件有多少行 |
wc -c /etc/passwd | 统计 /etc/passwd 文件有多少个字节 |
7. 查看目录使用空间(du)
- du 命令是查看文件和目录的磁盘使用空间
- df 命令是查看文件系统使用空间的
例如:
- du -sh :显du命令是查看文件和日录的磁盘使用空间
- df :是查看文件系统使用空间的
[jcy@localhost ~]$ du -sh /home/jcy
l.IM /home/jcy
- du -ah :显示指定目录以及其所有子目录和文件的磁盘占用率
[jcy@localhost ~]$ du -ah /home/jcy/aa
4.0K /home/jcy/aa/test
4.0K /home/jcy/aa/pt.py
40K /home/jcy/aa/dirl/ptpy
80K /home/jcy/aa/dirl
20K /home/jcy/aa
8. 文件链接
- 为什么需要链接
- 巨大的文件、目录,复制占空间,不能移动,那个位置也有用
- 和复制的区别:文件在磁盘中只有一份数据,节省磁盘空间
- 创建链接文件:
In -s pig pig-soft
9. 其他
echo 文字内容
echo 会在终端中显示参数指定的文字,通常会和 重定向 联合使用
10. 注销
字符终端: exit 命令
图形界面:
五、Linux 文件权限管理
1. 文件权限管理
- 还是从 Is -l 说起:
文件必有一个所属用户和一个所属的组不同类型的用户有不同的访问权限
2. Lunux 文件访问权限和访问者种类
三种访问权限:读、写、执行
光理解下
权限 | 文件的存取权限 | 目录的存取权限 |
---|---|---|
r | 具有读文件的权限 | 能查看文件夹里面的内容(比如:用 ls 命令能查看文件夹里面的内容) |
w | 具有写文件的权限 | 能创建和删除文件(比如:在文件夹下面,使用 touch 命令创建文件) |
x | 具有执行文件的权限 | 能使用该目录下的文件(如行cd 命令)。能进入该目录 |
2.1 w:写入权限
- 针对文件:其有写文件的权限
- 针对文件夹:可以删除和创建文伴夹下面的文件
2.2 x:执行权限
- 针对文件:具有执行的权限
- 针对目录:能够进入该目录,如 cd 命令,文件夹的读写权限依赖于执行权限,所以一股读写权限和执行权限绑定,不单独管理。
对于目录来说:
- 单独拥有读权限就可以 Is 查看目录内容。但是不能 cd 切换进目录中去
- 单独拥有写权限,什么也干不了,既不能 ls,查看目录内容,也不能切换进目录中去,更不能创建目录造文件
- 单独拥有执行权限,可以 cd 切换进目录,但是不能 ls,查看目录内容和创建文件或者目录
- 拥有读、执行的权限,可以 ls 查看目录内容,可以 cd 切换进目录中去
- 拥有写、执行的权限,可以 cd 切换进目录,可以创建文件或目录
- 拥有读写的权限,可以 ls 查看目录内容,不能切换进目录中,也不能创建目录或文件
对于文件来说:
- 单独拥有读权限就可以 cat 查看文件内容
- 单独拥有写权限,可以往文件中添加内容,只是不能查看添加的内容
- 单独拥有执行权限,如果文件是二进制文件可以执行该文件
- 拥有读、执行的权限,可以 cat 查看文件内容和执行该文件,但是不可以往文件中添加内容
- 拥有写、执行的权限,不能 cat 查看文件内容,但是可以往文件中添加内容和执行该文件
- 拥有读写的权限,可以 cat 查看文件内容,也可以社文件中添加内容
2.3 文件的访问用户类型
对一个文件来说访问它的用户分为三种:拥有者、所属的组、其他用户。
用户类型 | 说明 |
---|---|
owner | 文件的所有者(一般来说,谁创建了该文件,那么他就是所有者) |
group | 文件所属工作组(一般来说,创建文件的用户所在的工作组(主组)— touch file 例说明 |
other | 其他用户,(非 owner 和非 group ) |
all | 所有用户 |
3. 改变Linux 文件的访问权限(修改文件权限)和所属用户和用户组
命令 | 作用 |
---|---|
chown | 修改拥有者 |
chgrp | 修改组 |
chmod | 修改权限 |
命令格式如下:
#修改文件|目录的拥有者
chown 用户名 文件名|目录名
#递归修改文件|目录的组
chgrp -R 组名 文件名|目录名
#递归修改文件权限
chmod -R 755 文件名|目录名
3.1 改变Linux 文件的访问权限(修改文件权限)
- chmod命令
- 谁可以改变文件访问权限? Root 和 Owner
- chmod [who][op][permission] file…
例如:chmod u+x file1
who项表示用户类型,它的内容为以下一项或多项
参数 | 含义 |
---|---|
u | 拥有者(user— owner) |
g | 与拥有者同一组的用户(group) |
o | 其他人(other) |
a | 所有人(all) |
chmod:改变文件权限的命今
只有文件拥有者和 root 用户可以使用 使用 “+
” 号来增加权限:
例如:
参数 | 含义 |
---|---|
chmod u+x 文件名 | 给文件的拥有者增加执行权限 |
chmod g+wr 文件名 | 给文件的组成员增加读写权限 |
chmod o+w 文件名 | 给文件的其他成员增加执行权限chmod a*wtx 文件名 |
chmod u+x,g+wr,o+x 文件名 | 同时针对不同的用户分配权限 |
- 使用 “
-
" 号来取消权限
例如:
参数 | 含义 |
---|---|
chmod u-wx 文件名 | 取消拥有者的写入和执行权限 |
- 使用 “
=
” 来变动权限,不管拥有者之前是什么权限,使用"=
“相当于用目前的权限覆盖之前的权限
参数 | 含义 |
---|---|
chmod u=rw 文件名 | 给文件拥有者读、写、执行的权限 |
- 使用数字来赋权
r=4 w=2 x=1
chmod 777 文件名
给文件所有用户赋于全部权限
3.2 权限判断的顺序
拥有者到组到其他,所以一个文件拥有者有读取权限,组成员没有,如果你是拥有者同时也是组成员,那么你可以读取。如果一个文件组成员有读取权限,拥有者没有。如果你是拥有者同时也是组成员,那么你不可以读取。
3.3 chown命令:改变文件所有者和所属组
chown命令
- 谁可以使用 chown 改变文件所有者和所属组?
- 只有 root,owner 都不行
- chown [选项]…[所有者][:[组]] 文件…
总结:
- 改变文件的拥有者和组
- 只有 root 用户可以使用
例:
chown jack test1
把文件 test1 的拥有者变更为 jack
chown jack:jack test1
把文件 test1 的拥有者变更为 jack,所属组变更为 jack 组
3.4 chgrp命令:改变文件的所属组
chgrp命令
- 谁可以使用 chgrp 改变文件所属组?
- root,owner(只能改变到 owner 所在的组)
- chgrp [选项]…[组] 文件…
- root 和拥有者可以使用,拥有者只能把文件改到自己所属的组
例:
chgrp jack test1
把文件 test1 的所属组变更为jack
chgrp -R jack dir1
把目录 dir1下的所有子目录和文件的所属组变更为 jack
六、用户权限相关命令
1. 组管理
提示:创建组 / 删除组 的终端命令都需要通过 sudo 执行
命令 | 作用 |
---|---|
groupadd 组名 | 添加组 |
groupdel 组名 | 删除组 |
cat /etc/group | 确认组信息 |
chgrp -R 组名 文件/目录名 | 递归修改文件/目录的所属组 |
提示:
- 组信息保存在 /etc/group 文件中
- /etc 目录是专门用来保存 系统配置信息 的目录
2. 用户管理
提示:创建用户 / 删除用户 / 修改其他用户密码 的终端命令都需要通过 sudo 执行
2.1 创建用户/设置密码/删除用户
命令 | 作用 | 说明 |
---|---|---|
useradd -m -g 组 新建用户名 | 添加新用户 | 1. -m :自动建立用户家目录 2. -g :指定用户所在的组,否则会建立一个和同名的组 |
passwd 用户名 | 设置用户密码 | 如果是普通用户,直接用 passwd 可以修改自己的账户密码 |
userdel -r 用户名 | 删除用户 | -r 选项会自动删除用户家目录 |
cat /etc/passwd | grep | 确认用户 | 新建用户后,用户信息会保存在 /etc/passwd 文件中 |
提示:
- 创建用户时,如果忘记添加 -m 选项指定新用户的家目录 —— 最简单的方法就是删除用户,重新创建
- 创建用户时,默认会创建一个和用户名同名的组名
- 用户信息保存在 /etc/passwd 文件中
2.2 查看用户信息
命令 | 作用 |
---|---|
id [用户名] | 查看用户 UID 和 GID 信息 |
who | 查看当前所有登录的用户列表 |
whoami | 查看当前登录用户的账户名 |
2.2.1 which(重要)
提示:
- /etc/passwd 是用于保存用户信息的文件
- /usr/bin/passwd 是用于修改用户密码的程序
which 命令可以查看执行命令所在位置,例如:
which ls
输出
/bin/ls
which useradd
输出
/usr/sbin/useradd
2.2.2 bin 和 sbin
- 在 Linux 中,绝大多数可执行文件都是保存在 /bin 、 /sbin 、 /usr/bin 、 /usr/sbin
- /bin ( binary )是二进制执行文件目录,主要用于具体应用
- /sbin ( system binary )是系统管理员专用的二进制代码存放目录,主要用于系统管理
- /usr/bin ( user commands for applications )后期安装的一些软件
- /usr/sbin ( super user commands for applications )超级用户的一些管理程序
提示:
cd 这个终端命令是内置在系统内核中的,没有独立的文件,因此用 which 无法找到 cd命令的位置
2.3 切换用户
命令 | 作用 | 说明 |
---|---|---|
su - 用户名 | 切换用户,并且切换目录 | - 可以切换到用户家目录,否则保持位置不变 |
exit | 退出当前登录账户 |
su 不接用户名,可以切换到 root ,但是不推荐使用,因为不安全
exit 示意图如下:
七、系统信息相关命令
1. 时间和日期
命令 | 作用 |
---|---|
date | 查看系统时间 |
cal | calendar 查看日历, -y 选项可以查看一年的日历 |
- 查看系统时间后如果不满意该时间的格式可以修改
格式化显示时间语法:date +'%Y-%m-%d %H:%M:%S'
运行效果展示:
2023-03-03 08:54:35
2. 磁盘信息
命令 | 作用 |
---|---|
df -h | disk free 显示磁盘剩余空间 |
du -h | [目录名] disk usage 显示目录下的文件大小 |
八、进程
1. ps命令查看进程
- 不带任何参数
- 同一个用户同一个终端
- -ef 参数
- e 表示所有,f 表示 full-format,尤其是PPID 和 command 内容
所谓进程,通俗地说就是 当前正在执行的一个程序
命令 | 作用 |
---|---|
ps aux | process status 查看进程的详细状况 |
top | 动态显示运行中的进程并且排序 |
kill [-9] 进程代号 | 终止指定代号的进程, -9 表示强行终止 |
ps 默认只会显示当前用户通过终端启动的应用程序
ps 选项说明
选项 | 含义 |
---|---|
a | 显示终端上的所有进程,包括其他用户的进程 |
u | 显示进程的详细状态 |
x | 显示没有控制终端的进程 |
提示:使用 kill 命令时,最好只终止由当前用户开启的进程,而不要终止 root 身份开启的进程,否则可能导致系统崩溃
要退出 top 可以直接输入 q
2. 后台运行进程
- 前台进程和后台进程
- Shell 里正在执行的和用户进行交互的进程叫前台进程
- 举例 ps,Is 分别为前台进程、时间短
- 有的命令执行时间长,比如备份程序
- 可以在后台执行
- 加 &
示例 vi abc.txt &
后台运行意味着不从标准输入读入字符
- 加 &
- 后台运行的进程我们叫后台进程,或者后台任务
3. 标准输入(stdin)、标准输出(stdout)、标准错误(stderr)
stdin、stdout、stderr:
- 用户通过终端与 shell 交互
- shell 缺省打开 3 个文件句柄
- 进程从 stdin 读取用户输入
- 从 stdout、stderr 输出信息
- 指向同一个设备文件——终端
比如你输入命令: ps -ef
这个就是你的标准输入
命令返回给你结果,这个就是标准输出
如果你输入的是 sd,没有 sd 这个命令,系统会返回给你一个报错信息,这个就是标准错误
通常标准输入对应的是键盘
标准输出和标准错误对应的是屏幕
九、重定向 > 和 >>
我们可以通过重定向将标准输出和标准错误重定向到指定的文件中
,而不是屏幕上
将本应显示在终端上的内容 输出/追加 到指定文件中。
其中
>
表示输出,会覆盖文件原有的内容
>>
表示追加,会将内容追加到已有文件的末尾
例1:
ps -ef>test
把 ps -ef 的结果输出到 test 文件中,我们可以查看 test 文件,发现本该展示在屏幕上的进程信息都在 test 文件中
例2:
ps -ef>>test
2个>
代表了把输出结果追加
到文件中,如果一个>
是覆盖
,会把之前的记录覆盖掉。
注意:
ps -ef > test = ps -ef 1> test
- 因为 1 代表了标准输出
- 2 代表了标准错误
如果将报错信息输出到文件中:
sd 2> test
把 sd 执行的报错结果输出到 test文件中
如果想要同时把标准输出和标准错误 输出到同一文件中:
ps -ef > test 2>&1
如果想分别把标准输出和标准错误输出到不同文件中:
ps -ef >test 2>test2
这里的 >test 相当于 1>test
我们也可以通过重定向从文件里读取内容:
wc -l < test
统计 test 文件中有多少行 其实和 wc -l test
差不多,只不过一个是根据文件来统计,一个是文本内容
wc -l << end
根据键盘输入的值进行统计,直到你输入 end 后结束统计,给出统计值
十、管道 |
管道的作用是将管道符前的命令的输出作为管道符后面的命令的输入,连接2个命令
左端塞东西(写),右端取东西(读)
常用的管道命令有:
- more :分屏显示内容
- grep :在命令执行结果的基础上查询指定的文本
例1:
可以把错误输出和标准输出同时定向到管道符:
ps -ef 2>&1 | grep err
例2:
把线程中包含 python 字符串的筛选出来
:ps -ef | grep python
例3:
连续使用管道
ps -ef | grep python | grep -v grep
例4:
让 stdout 和 stderr 同时重定向到管道
python both.py 2>& | grep err
工作中最常用的管道符用法:
动态查询目志时,根据关键字找到自己想要的那条日志
tail -f test | grep ‘123456’’
找到进程号pid
ps -ef | grep tomcat
根据进程号查找端口
netstat -nap | grep pid
管道示意图
- 将前面的 ps -ef 命令的 stdout (本来是输出到终端设备的) 重定向到一个 临时管道设备里面
- 同时将后一个命令 grep | | 82 的 stdin 重定向到这个临时的管道设备
十一、网络操作命令、工具及系统资源查看
1. 网络操作命令
1.1 查看IP地址的方法
为什么要查看 IP ?
- ip -4 addr
显示主机的 ip v4 地址 - ip -6 addr
显示主机的 ip v6 地址
实际用的最多的查看和命令:
Linux系统:ifconfig
windowds系统:ipconfig
查看所有服务的状态:service --status-all
查看指定服务的状态:service 服务名 status
启动指定服务:service 服务名 start
停止指定服务:service 服务名 stop
重新启动指定服务:service 服务名 restart
ping命令作用:网络连通性检查
ping -c 5 www.baidu.com 连接百度5次
1.2 禁用、启用网络接口
- 启动网卡:
service network start
- 禁用网卡:
service network stop
1.3 netstat命令:查看连接端口
netstat -a
:显示所有连接中的socket
netstat -n
:显示端口数字而不是协议名
netstat -p
:显示建立连接的进程信息
- 和 grep 一起使用
netstat -anp|grep:8080
:端口号8080的端口
netstat -anp
: 最常用的进程以及端口查看命令,配合 grep 使用进行筛选
1.4 lsof命令:查看端口的占用
lsof -i:80
1.4 top命令
- top 命令用来显示执行中的程序进程,使用权限是所有用户
- top 命令中按 f 可以选择想要展示的内容,按回车确定
- 如果是多核 cpu 可以按 l 来切换展示每个cpu
2. 网络操作工具
- 远程登录工具 putty
3. 系统资源查看
3.1 free 命令
free命令用来显示内存的使用情况,使用权限是所有用户
3.2 df 命令
df 命令用于显示目前在 Linux 系统上的文件系统的磁盘使用情况统计
十二、远程管理常用命令
1. 关机/重启
命令 | 对应英文 | 说明 |
---|---|---|
shutdown | 选项 时间 shutdown | 关机/重新启动 |
常用命令示例:
重新启动操作系统,其中 now 表示现在
$ shutdown -r now
立刻关机,其中 now 表示现在
$ shutdown now
系统在今天的 20:25 会关机
$ shutdown 20:25
系统再过十分钟后自动关机
$ shutdown +10
取消之前指定的关机计划
$ shutdown -c
不指定选项和参数,默认表示 1 分钟之后 关闭电脑
远程维护服务器时,最好不要关闭系统,而应该重新启动系统
字符终端:
- 命令
- poweroff
- halt
- shutdown -h now
- init 0
图形界面:
提醒
:先关虚拟机,再关 VMWare!
2. 查看配置网卡信息
命令 | 对应英文 | 说明 |
---|---|---|
ifconfig | configure a network interface | 查看/配置计算机当前的网卡配置信息 |
ping ip地址 | ping | 检测到目标 ip地址 的连接是否正常 |
2.1 ifconfig
ifconfig 可以查看/配置计算机当前的网卡配置信息
查看网卡配置信息
$ ifconfig
查看网卡对应的 IP 地址
$ ifconfig | grep inet
**提示:**一台计算机中有可能会有一个 物理网卡 和 多个虚拟网卡,在 Linux 中物理网卡的名字通常以 ensXX 表示
127.0.0.1 被称为 本地回环/环回地址,一般用来测试本机网卡是否正常
2.2 ping
ping 一般用于检测当前计算机到目标计算机之间的网络 是否通畅,数值越大,速度越慢
检测到目标主机是否连接正常
$ ping IP地址
检测本地网卡工作正常
$ ping 127.0.0.1
ping 的工作原理与潜水艇的声纳相似, ping 这个命令就是取自 声纳的声音
网络管理员之间也常将 ping 用作动词 —— ping 一下计算机X,看他是否开着
3. 远程登录和赋值文件
命令 | 对应英文 | 说明 |
---|---|---|
ssh 用户名@ip | secure shell | 查看/配置计算机当前的网卡配置信息 |
scp 用户名@ip:文件名或路径 用户名@ip:文件名或路径 | secure copy | 远程复制文件 |
3.1 ssh 基础(重点)
在 Linux 中 SSH 是 非常常用 的工具,通过 SSH 客户端 我们可以连接到运行了 SSH 服务器 的远程机器上
ssh的简单使用:
ssh [-p port] user@remote
- user 是在远程机器上的用户名,如果不指定的话默认为当前用户
- remote 是远程机器的地址,可以是 IP/域名,或者是 后面会提到的别名
- port 是 SSH Server 监听的端口,如果不指定,就为默认值 22
提示:
- 使用 exit 退出当前用户的登录
- ssh 这个终端命令只能在 Linux 或者 UNIX 系统下使用
- 如果在 Windows 系统中,可以安装 PuTTY 或者 XShell 客户端软件即可
- 在工作中,SSH 服务器的端口号很有可能不是 22,如果遇到这种情况就需要使用 -p 选项,指定正确的端口号,否则无法正常连接到服务器
3.2 scp
scp 就是 secure copy ,是一个在 Linux 下用来进行 远程拷贝文件 的命令
它的地址格式与 ssh 基本相同,需要注意的是,在指定端口时用的是大写的 -P
而不是小写的
把本地当前目录下的 01.py 文件 复制到 远程 家目录下的 Desktop/01.py
注意:`:` 后面的路径如果不是绝对路径,则以用户的家目录作为参照路径
scp -P port 01.py user@remote:Desktop/01.py
把远程 家目录下的 Desktop/01.py 文件 复制到 本地当前目录下的 01.py
scp -P port user@remote:Desktop/01.py 01.py
#加上 -r 选项可以传送文件夹
把当前目录下的 demo 文件夹 复制到 远程 家目录下的 Desktop
scp -r demo user@remote:Desktop
把远程 家目录下的 Desktop 复制到 当
前目录下的 demo 文件夹
scp -r user@remote:Desktop demo
选项 | 含义 |
---|---|
-r | 若给出的源文件是目录文件,则 scp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名 |
-P | 若远程 SSH 服务器的端口不是 22,需要使用大写字母 -P 选项指定端口 |
注意:
scp
这个终端命令只能在 Linux
或者 UNIX
系统下使用
如果在 Windows 系统中,可以安装 PuTTY ,使用 pscp 命令行工具或者安装 FileZilla使用 FTP 进行文件传输