Linux 基础知识
B 站学习笔记:https://www.bilibili.com/video/BV1ti4y1t7BF?p=1
常用命令
[] 表示可选项
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | ls | list | 查看当前文件夹下的内容 |
02 | pwd | print work directory | 查看当前所在文件夹 |
03 | cd [目录名] | change directory | 切换文件夹 |
04 | touch [文件名] | touch | 如果文件不存在,则新建 |
05 | mkdir [目录名] | make directory | 创建目录 |
06 | rm [文件名] | remove | 删除指定的文件名 |
07 | clear | clear | 清屏 |
查阅命令帮助信息
- command -- help
- man command
Linux 下文件和目录的特点
- Linux 文件或者目录 名称最长可以有 256 个字符
- 以 . 开头的文件为隐藏文件,需要用 -a 参数才能显示
- . 代表当前目录
- .. 代表上一级目录
通配符
通配符 | 含义 |
---|---|
* | 代表任意个数字符 |
? | 代表任意一个字符,至少一个 |
[] | 表示可以匹配字符组中的任意一个 |
[abc] | 匹配 a、b、c 中的任意一个 |
[a-f] | 匹配从 a 到 f 范围内的任意一个字符 |
查看和修改操作
- ls 常用选项
参数 | 含义 |
---|---|
-a | 显示指定目录下所有子目录与文件,包括隐藏文件 |
-l | 以列表形式显示文件的详细信息 |
-h | 配合 -l 以人性化的方式显示文件大小 |
- cd 命令
命令 | 含义 |
---|---|
cd | 切换到当前用户的主目录(/home/用户目录) |
cd ~ | 切换到当前用户的主目录(/home/用户目录) |
cd . | 保持当前目录不变 |
cd .. | 切换到上级目录 |
cd - | 在最近两次工作目录之间来回切换 |
相对路径和绝对路径
- 相对路径:在输入路径时,最前面不是 / 或者 ~,表示相对 当前目录 所在的位置
- 绝对路径:在输入路径时,最前面是 / 或者 ~,表示从 根目录/home 目录 开始的具体目录位置
创建和删除操作
-
touch
创建文件或修改文件时间
- 如果文件不存在,可以创建一个空白文件
- 如果文件已经存在,可以修改文件的末次修改时间
-
mkdir
创建一个新的目录
选项 含义 -p 可以递归创建目录 新建目录的名称 不能与当前目录中 已有的目录或文件 同名
-
rm
删除文件或目录
使用 rm 命令要小心,删除后不能恢复
选项 含义 -f 强制删除,忽略不存在的文件,无需提示 -r 递归地删除目录下的内容,删除文件夹 必须加此参数
拷贝和移动文件
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | tree [目录名] | tree | 以树状图列出文件目录结构 |
02 | cp 源文件 目标文件 | copy | 复制文件或目录 |
03 | mv 源文件 目标文件 | move | 移动文件或者目录/文件或者目录重命名 |
-
tree
选项 含义 -d 只显示目录 -
cp
选项 含义 -f 已经存在的目标文件直接覆盖,不会提示 -i 覆盖文件提示 -r 若给出的源文件是目录文件,则cp;若将递归复制该目录下所有子目录和文件,目标文件必须为一个目录名 -
mv
选项 含义 -i 覆盖文件前提示
查看文件内容
序号 | 命令 | 对应英文 | 作用 |
---|---|---|---|
01 | cat 文件名 | concatenate | 查看文件内容、创建文件、文件合并、追加文件内容等功能 |
02 | more 文件名 | more | 分屏显示文件内容(当文件过大时) |
03 | grep 搜索文本 文件名 | grep | 搜索文本文件内容 |
-
cat
选项 含义 -b 对非空输出行编号 -n 对输出的所有行编号 -
more
操作键 功能 空格键 显示手册页的下一屏 Enter键 一次滚动手册页的一行 b 回滚一屏 f 前滚一屏 q 退出 /word 搜索 word 字符串 -
grep
选项 | 含义 |
---|---|
-n | 显示匹配行及行号 |
-v | 显示不包含匹配文本的所有行(相当于求反) |
-i | 忽略大小写 |
常用的两种模式查找
参数 | 含义 |
---|---|
^a | 行首,搜寻以 a 开头的行 |
ke$ | 行尾,搜寻以 ke 结束的行 |
其它
-
echo 文字内容
在终端中显示参数指定的文字,通常会和 重定向 联合使用
-
重定向 > 和 >>
Linux 允许将命令执行结果 重定向 到一个文件
将本应显示在终端上的内容 输出/追加 到指定文件中
其中,> 表示输出,会覆盖文件原有的内容
>> 表示追加,会将内容追加到已有文件的末尾
-
管道
Linux 允许将 一个命令的输出 通过管道作为 另一个命令的输入
用 | 的左右分为两端,左端塞东西(写),右端取东西(读)
常用的管道命令有:
- more:分屏显示内容
- grep:搜索指定文本文件内容
远程管理命令
-
关机和重启
序号 命令 对应英文 作用 01 shutdown 选项 时间 shutdown 关机/重启 选项 含义 -r 重新启动 不指定选项和参数,默认表示在1分钟后关闭电脑
远程维护服务器时,最好不要关闭系统,而应该重新启动系统
-
查看或配置网卡信息
序号 命令 对应英文 作用 01 ifconfig configure a network interface 查看/配置计算机当前的网卡配置信息 02 ping ip地址 ping 检测到目标ip地址的连接是否正常 -
远程登录和复制文件
序号 命令 对应英文 作用 01 ssh 用户名@ip secure shell 远程登录 02 scp 用户名@ip:文件名或路径 用户名@ip:文件名或路径 secure copy 远程复制文件 通过 SSH 客户端,可以连接到运行了 SSH 服务器 的远程机器上
SSH 客户端是一种使用 Secure Shell(SSH)协议连接到远程计算机的软件程序
好处:
- 数据传输是加密的,可以防止信息泄露
- 数据传输是压缩的,可以防止传输速度
端口号
- IP 地址:通过 IP 地址找到网络上的计算机
- 通过 端口号 可以找到 计算机上运行的应用程序(如果是默认端口号,在连接的时候,可以省略)
常见服务端口号列表:
序号 服务 端口号 01 SSH 服务器 22 02 Web 服务器 80 03 HTTPS 443 04 FTP 服务器 21 -
SSH 客户端的简单使用
ssh [-p port] user@remote
- user 是在远程机器上的用户名,如果不指定的话默认为当前用户
- remote 是远程机器的地址,可以是 IP/域名
- port 是 SSH Server 监听的端口,如果不指定,默认为 22
使用 exit 退出当前用户的登录
-
scp
Linux 下用来进行 远程拷贝文件 的命令
它的地址格式与 ssh 基本相同,需要注意的是,在指定端口时用的是大写的 -P 而不是小写的
# 把本地当前目录下的 test.py 文件 复制到 远程/home/Desktop/test.py scp -P port test.py user@remote:/home/Desktop/test.py # 把远程 /home/Desktop/test.py 文件复制到 本地当前目录下 test.py scp -P port user@remote:/home/Desktop/test.py test.py # 加上 -r 选项可以传送文件夹 scp -r demo user@remote:/home/Desktop scp -r user@remote:/home/Desktop demo
选项 含义 -r 若给出的源文件是目录文件,则scp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名 -P 若远程 SSH 服务器的端口不是 22,需要用 -P 选项指定端口 这个命令在 MAC 和 Linux 可以直接使用, windows 上可以下载 FileZilla 进行远程拷贝
-
SSH 高级
有关 SSH 配置信息都保存在用户 home 目录下的 .ssh 目录下
-
免密码登录
-
配置公钥
执行 ssh-keygen 即可生成 SSH 钥匙,一路回车即可
-
上传公钥到服务器
执行 ssh-copy-id -p port user@remote, 可以让服务器记住我们的公钥
本地 使用 私钥 对数据进行 加密/解密
服务器 使用 公钥 对数据进行 加密/解密
-
-
配置别名
每次输入 ssh -p port user@remote, 会很不方便且不好记忆
可以在 ~/.ssh/config 里面追加一下内容:
Host fer HostName ip地址 User alivinfer port 22
保存之后,即可以使用 ssh fer 实现远程登录了,scp 同样可以使用
-
用户权限相关命令
-
用户 和 权限 的基本概念
-
用户管理包括 用户 与 组(对相同用户的权限放在一个组里) 管理
-
每个系统都必须拥有一个账号,并且对于不同的系统资源拥有不同的使用权限
-
在 Linux 中,可以指定 每一个用户 针对 不同的文件或者目录 的不同权限
-
对 文件/目录 的权限包括:
序号 权限 英文 缩写 数字代号 01 读 read r 4 02 写 write w 2 03 执行 excute x 1
ls -l 扩展
使用 ls -l 可以产看文件夹下的详细信息,从左到右依次是:
- 权限:第一个字符如果是 d 表示目录
- 硬连接数,就是有多少种方式,可以访问到当前目录/文件
- 拥有者,home 下 文件/目录 的拥有者通常都是当前用户
- 组,在 Linxu 中,很多时候,会出现组名和用户名相同的情况
- 文件大小
- 时间
- 名称
用户管理 终端命令
超级用户
- Linxu 系统中的 root 账号通常 用于系统的维护和管理,对操作系统的所有资源 具有所有访问权限
- 在大多数版本的 Linux 中,都不推荐 直接使用 root 账号登录系统
- 在 Linux 安装的过程中,系统会自动创建一个用户账号,而这个默认的用户就称为 “标准用户”
sudo
- su 是 substitute user 的缩写,表示 使用另一个用户的身份
- sudo 命令用来以其他身份来执行明磊,预设的身份为 root
- 用户使用 sudo 时,必须先输入密码,之后又 5 分钟的有效权限,超过期限则必须重新输入密码
创建用户 / 设置密码 / 删除用户
创建用户 / 删除用户 / 修改其他用户密码 的终端命令 都需要通过 sudo 执行
序号 命令 作用 说明 01 uesradd -m -g 组 新建用户名 添加新用户 -m 自动创建用户 /home 目录 ; -g 指定用户所在的组 ,否则会建立一个同名的组 02 passwd 用户名 设置用户密码 如果是普通用户,直接用 passwd 可以修改自己的账号密码 03 userdel -r 用户名 删除用户 -r 选项会自动删除用户 /home 目录 04 cat /etc/passwd | grep 用户名 确认用户信息 新建用户后。用户信息会保存在 /etc/passwd 文件中 创建用户时,如果忘记添加 -m 选项指定新用户的 /home 目录,最简单的办法就是删除用户,重新创建
创建用户时,默认会创建一个和用户名同名的组名
用户讯息保存在 /etc/passwd 文件中
查看用户信息
序号 命令 作用 01 id[用户名] 查看用户 UID 和 GID 02 who 查看当前所有登录的用户列表 03 whoami 查看当前登录用户的账户名 passwd 文件
/etc/passwd 文件存放的是用户的信息,由 6 个分号组成的7个信息,分别是
- 用户名
- 密码(x,表示加密的密码)
- UID(用户标识)
- GID(组标识)
- 用户全名或本地账号
- /home 目录
- 登录使用的 Shell,就是登录之后,使用的终端命令,ubuntu 默认的是 dash
which(重要)命令
可以查看执行命令所在位置,如
which ls /bin/ls # 输出 which useradd /usr/sbin/useradd # 输出
cd 这个终端命令是内置在系统内核中的,没有独立的文件,因此用 which 无法找到
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)超级用户的一些管理程序
切换用户
序号 命令 作用 说明 01 su -用户名 切换用户,并且切换目录 - 可以切换到用户 /home 目录,否则保持位置不变 02 exit 退出当前登录账号 su 不接用户名,可以切换到 root,但是不推荐使用,因为不安全
-
-
组管理 终端命令
创建组/删除组 的终端命令都需要通过 sudo 执行
序号 命令 作用 01 groupadd 组名 添加组 02 groupdel 组名 删除组 03 cat /etc/group 确认组信息 04 chgrp -R 组名 文件/目录名 修改文件/目录的所属组 组信息保存在 /etc/group 文件中
/etc 目录专门用来保存 系统配置信息 的目录
-
修改文件权限 终端命令
序号 命令 作用 01 chown 修改拥有者 02 chgrp 修改组 03 chmod 修改权限 chmod 简单使用(重要)
-
chmod 可以修改 用户/组 对文件/目录 的权限
其命令格式为:
# 修改文件|目录的拥有者 chown 用户名 文件名|目录名 # 递归修改文件|目录的组 chgrp -R 组名 文件名|目录名 # 直接修改 文件|目录的 读|写|执行 权限,但不能精确到 拥有者|组|其他 chmod +/-rwx 文件名|目录名 如 chmod -x test # 去掉 test 文件可执行权限(在没有可执行权限后,可读可写权限也会同时失去) # chmod 另一种更加具体的方式 # 递归修改文件权限 chmod -R 755 文件名|目录名
-
系统信息相关命令
-
时间和日期
序号 命令 作用 01 date 查看系统时间 02 cal calendar 查看日历,加 -y 产看一年的日历 -
磁盘信息
序号 命令 作用 01 df -h disk free 显示磁盘空间(主要看 / (根目录)) 02 du -h disk usage 显示目录下的文件大小 -h 以人性化的方式显示文件大小
-
进程信息
通俗地说就是 当前正在执行的一个程序
序号 命令 作用 01 ps aux process status 产看进程的详细状况 02 top 动态显示运行中的进程并且排序 03 kill [-9] 进程代号 终止指定代号的进程,-9 表示强行终止 ps 默认只会显示当前用户通过终端启动的应用程序
选项 含义 a 显示终端上的所有进程,包含其他用户的进程 u 显示进程的详细状态 x 显示没有控制终端的进程 使用 kill 命令时,最好只终止由当前用户开启的进程,而不要终止 root 身份开启的进程,以免导致系统崩溃
要退出 top 可以直接输入 q
其它常用命令
-
查找文件
find 命令
其功能非常强大,通常用来在 特定的目录下 搜索符合条件的文件
序号 命令 作用 01 find [路径] -name ".py" 查找指定路径下扩展名是 .py 的文件,包括子目录 - 如果省略路径,表示在当前目录下
- 之前的通配符,可以与 find 命令配合使用
-
软链接 (在 Linux 中,文件名和文件的数据是分开存储的)
序号 命令 作用 01 ln -s 被链接的源文件 链接文件(快捷方式的名称) 建立文件的软链接,类似于 windows 下的快捷方式 - 没有 -s 选项建立的是一个 硬链接文件
- 源文件要使用绝对路径,不能使用相对路径,这样方便移动链接文件后,仍能正常使用
硬链接
相当于另外构建了一个文件,以同样的方式去访问文件数据
-
打包和压缩
在不同的操作系统中,常用的打包压缩方式是不同的
- Windows 常用 rar
- Mac 常用 zip
- Linux 常用 tar.gz
打包 / 解包
tar 是Linux 中最常用的 备份 工具,此命令可以 把一系列文件 打包到 一个大文件中,也可以把 打包的文件恢复到一系列文件
命令格式:
# 打包文件 tar -cvf 打包文件.tar 被打包的文件 / 路径... #解包文件 tar -xvf 打包文件.tar
选项 含义 c 生成档案文件,创建打包文件 x 解开档案文件 v 列出归档解档的详细过程,显示进度 f 指定档案文件名称,f 后面一定是 .tar 文件 f 选项必须放在最后,其他选项可以任意
-
压缩 / 解压缩
1)tar 与 gzip 命令结合可以实现文件 打包和压缩
用 gzip 压缩 tar 打包后的文件,其扩展名一般用 xxx.tar.gz(最为常见的压缩文件格式)
在 tar 命令中有一个选项 -z 可以调用 gzip ,从而方便实现压缩和解压缩功能
命令格式:
# 压缩文件 tar -zcvf 打包文件.tar.gz 被压缩的文件 / 路径... # 解压缩文件 tar -zxvf 打包文件.tar.gz # 解压到指定路径(指定的路径必须存在) tar -zxvf 打包文件.tar.gz -C 目标路径
2)bzip2
其扩展名一般用 xxx.tar.bz2
方式同 gzip 相同,只需将 tar 命令的 -z 选项改为 -j 以及将扩展名进行更改,即可调用
-
软件安装
通过 apt 安装 / 卸载 软件
apt 是 Advanced Packaging Tool,是 Linux 下的一款安装包管理工具
可以在终端中方便的 安装/卸载/更新软件包
# 安装软件 sudo apt install 软件包 # 卸载软件 sudo apt remove 软件名 # 更新已安装的包 sudo apt upgrade
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端