虚拟机
虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完整隔离环境中的完整计算机系统。
- 虚拟系统通过生成现有操作系统的全新虚拟镜像,具有真实操作系统完全一样的功能。
- 进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,拥有独立的桌面,不会对真正的系统产生任何影响。
- 而且能够在现有系统和虚拟镜像之间灵活切换的一类操作系统。
Linux系统下的文件目录结构
根目录
没有盘符这个概念,只有一个根目录 / ,所有文件都在它下面
Linux 主要目录速查表
* /:根目录,**一般根目录下只存放目录**,在 linux 下有且只有一个根目录,所有的东西都是从这里开始
* 当在终端里输入 `/home`,其实是在告诉电脑,先从 `/`(根目录)开始,再进入到 `home` 目录
* /bin、/usr/bin:可执行二进制文件的目录,如常用的命令 ls、tar、mv、cat 等
* /boot:放置 linux 系统启动时用到的一些文件,如 linux 的内核文件:`/boot/vmlinuz`,系统引导管理器:`/boot/grub`
* /dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱`mount /dev/cdrom /mnt`
* /etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有
* /etc/inittab
* /etc/fstab
* /etc/init.d
* /etc/X11
* /etc/sysconfig
* /etc/xinetd.d
* /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下
* `~` 表示当前用户的家目录
* `~edu` 表示用户 `edu` 的家目录
* /lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助
* /lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下
* /mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载
* /opt:给主机额外安装软件所摆放的目录
* /proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的文件有:/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等
* /root:系统管理员root的家目录
* /sbin、/usr/sbin、/usr/local/sbin:放置系统管理员使用的可执行命令,如 fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root 使用的命令,一般用户只能"查看"而不能设置和使用
* /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下
* /srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内
* /usr:应用程序存放目录
* /usr/bin:存放应用程序
* /usr/share:存放共享数据
* /usr/lib:存放不能直接运行的,却是许多程序运行所必需的一些函数库文件
* /usr/local:存放软件升级包
* /usr/share/doc:系统说明文件存放目录
* /usr/share/man:程序说明文件存放目录
* /var:放置系统执行过程中经常变化的文件
* /var/log:随时更改的日志文件
* /var/spool/mail:邮件存放的目录
* /var/run:程序或服务启动后,其 PID 存放在该目录下
Linux命令的基本使用
序号 | 命令 | 英文 | 作用 |
---|---|---|---|
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 [-options] [parameter]
- `command`:命令名,相应功能的英文单词或单词的缩写
- `[-options]`:选项,可用来对命令进行控制,也可以省略
- `parameter`:传给命令的参数,可以是 **零个**、**一个** 或者 **多个**
rm -r 文件夹名称#删除文件夹
查询帮助信息
command --help#简单描述
man command#manual手册,详细信息
使用man时的操作键
操作键 | 功能 |
---|---|
空格键 | 显示手册页的下一屏 |
Enter | 一次滚动手册页的一行 |
b | back,回滚一屏 |
f | forward,前滚一屏 |
q | 退出 |
/word | 搜索word字符串 |
文件和目录常用命令
自动补全
在敲出 `文件`/`目录`/`命令` 的前几个字母之后,按下 `tab` 键
如果输入的没有歧义,系统会自动补全
如果还存在其他 `文件`/`目录`/`命令`,再按一下 `tab` 键,系统会提示可能存在的命令
小技巧
按 `上`/`下` 光标键可以在曾经使用过的命令之间来回切换
如果想要退出选择,并且不想执行当前选中的命令,可以按 `ctrl + c`
ls命令
命令说明
`ls` 是英文单词 **list** 的简写,其功能为列出目录的内容,是用户最常用的命令之一
Linux 下文件和目录的特点
- Linux **文件** 或者 **目录** 名称最长可以有 `256` 个字符
- 以 `.` 开头的文件为隐藏文件,需要用 -a 参数才能显示
- **.** 代表当前目录
- **..** 代表上一级目录
ls 常用选项
| 参数 | 含义 |
| --- | --- |
| -a | 显示指定目录下所有子目录与文件,包括隐藏文件 |
| -l | 以列表方式(纵向)显示文件的详细信息 |
| -h | 配合 -l 以人性化的方式显示文件大小,文件大小更加直观 |
#可以合并使用
ls -lha
通配符的使用
| 通配符 | 含义 |
| --- | --- |
| * | 代表任意个数个字符 |
| ? | 代表任意一个字符,至少是 1 个 |
| [] | 表示可以匹配字符组中的任一一个 |
| [abc] | 匹配 a、b、c 中的任意一个 |
| [a-f] | 匹配从 a 到 f 范围内的的任意一个字符 |
#查看以“1”开头的文件
ls 1*
ls -l 扩展
`ls -l` 可以查看文件夹下文件的详细信息,从左到右依次是:
- **权限**,第 1 个字符如果是 `d` 表示目录
- **硬链接数**,通俗地讲,就是有多少种方式,可以访问到当前目录/文件
- **拥有者**,家目录下 文件/目录 的拥有者通常都是当前用户
- **组**,在 Linux 中,很多时候,会出现组名和用户名相同的情况
- **大小**
- **时间**
- **名称**
cd命令
`cd` 是英文单词 **change directory** 的简写,其功能为更改当前的工作目录,也是用户最常用的命令之一
注意:Linux 所有的 **目录** 和 **文件名** 都是大小写敏感的
| 命令 | 含义 |
| --- | --- |
| cd | 切换到当前用户的主目录(/home/用户目录) |
| cd ~ | 切换到当前用户的主目录(/home/用户目录) |
| cd . | 保持在当前目录不变 |
| cd .. | 切换到上级目录 |
| cd - | 可以在最近两次工作目录之间来回切换 |
相对路径和绝对路径
**相对路径** 在输入路径时,最前面不是 **/** 或者 **~**,表示相对 **当前目录** 所在的目录位置
**绝对路径** 在输入路径时,最前面是 **/** 或者 **~**,表示从 **根目录/家目录** 开始的具体目录位置
touch命令
创建文件或修改文件时间
如果文件 **不存在**,可以创建一个空白文件
如果文件 **已经存在**,可以修改文件的末次修改日期
mkdir命令
创建一个新的目录
| 选项 | 含义 |
| --- | --- |
| -p | 可以递归创建目录 |
#创建多个目录
mkdir -p a/b/c
**新建目录的名称** 不能与当前目录中 **已有的目录或文件** 同名
rm命令
删除文件或目录
使用 `rm` 命令要小心,因为文件删除后不能恢复
| 选项 | 含义 |
| --- | --- |
| -f | 强制删除,忽略不存在的文件,无提示 |
| -r | 递归地删除目录下的内容,**删除文件夹** 时必须加此参数 |
#删除a文件下的所有文件
rm -r a
#删除以1结尾的所有txt文件
rm *1.txt
tree命令
| tree [目录名] | 以树状图列出文件目录结构 |
| 选项 | 含义 |
| --- | --- |
| -d | 只显示目录 |
cp命令
| cp 源文件 目标文件 | 复制文件或者目录 |
`cp` 命令的功能是将给出的 **文件** 或 **目录** 复制到另一个 **文件** 或 **目录** 中
| 选项 | 含义 |
| --- | --- |
| -i | 覆盖文件前提示 |
| -r | 复制目录必须加上此选项,若给出的源文件是目录文件,则 cp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名 |
mv命令
| mv 源文件 目标文件 | 移动文件或者目录/文件或者目录重命名,如果源文件目录与目标文件目录相同则会修改源文件的名称 |
| 选项 | 含义 |
| --- | --- |
| -i | 覆盖文件前提示 |
cat命令
| cat 文件名 | concatenate | 查看文件内容、创建文件、文件合并、追加文件内容等功能 |
`cat` 命令可以用来 **查看文件内容**、**创建文件**、**文件合并**、**追加文件内容** 等功能
`cat` 会一次显示所有的内容,适合 **查看内容较少** 的文本文件
| 选项 | 含义 |
| --- | --- |
| -b | 对非空输出行编号 |
| -n | 对输出的所有行编号 |
Linux 中还有一个 `nl` 的命令和 `cat -b` 的效果等价
more命令
| more 文件名 | 分屏显示文件内容 |
`more` 命令可以用于分屏显示文件内容,每次只显示一页内容
适合于 **查看内容较多**的文本文件
使用 `more` 的操作键:
| 操作键 | 功能 |
| --- | --- |
| 空格键 | 显示手册页的下一屏 |
| Enter 键 | 一次滚动手册页的一行 |
| b | 回滚一屏 |
| f | 前滚一屏 |
| q | 退出 |
| /word | 搜索 **word** 字符串 |
grep命令
| grep 搜索文本 文件名 | 搜索文本文件内容 |
Linux 系统中 `grep` 命令是一种强大的文本搜索工具
`grep`允许对文本文件进行 **模式**查找,所谓模式查找,又被称为正则表达式
| 选项 | 含义 |
| --- | --- |
| -n | 显示匹配行及行号 |
| -v | 显示不包含匹配文本的所有行(相当于求反) |
| -i | 忽略大小写 |
常用的两种模式查找
| 参数 | 含义 |
| --- | --- |
| ^a | 行首,搜寻以 **a** 开头的行 |
| ke$ | 行尾,搜寻以 **ke** 结束的行 |
echo 命令
`echo` 会在终端中显示参数指定的文字,通常会和 **重定向** 联合使用
#输出hello
echo hello
重定向 `>` 和 `>>`命令
Linux 允许将命令执行结果 **重定向**到一个 **文件**
将本应显示在**终端上的内容** **输出/追加** 到**指定文件中**
其中
`>` 表示输出,会覆盖文件原有的内容
`>>` 表示追加,会将内容追加到已有文件的末尾
#将hello写入当前目录中的xxx.txt文件中
echo hello > xxx.txt
#将ls -l的命令运行结果写入当前目录中的xxx.txt文件中,会覆盖hello
ls -l > xxx.txt
#hello world写入当前目录中的xxx.txt文件中,会追加到ls -l命令运行结果之后
exho hello world >> xxx.txt
管道 `|`命令
Linux 允许将 **一个命令的输出** 可以**通过管道** 做为 **另一个命令的输入**
可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里 `|` 的左右分为两端,左端塞东西(写),右端取东西(读)
常用的管道命令有:
`more`:分屏显示内容
#将家目录下的所有文件显示,包括隐藏文件,人性化显示文件大小,将返回结果传递给more可以分屏显示
ls -lha ~ | more
`grep`:在命令执行结果的基础上查询指定的文本
#将家目录下的所有包含xxx的文件显示,包括隐藏文件,人性化显示文件大小
ls -lha ~ | grep xxx
远程管理命令
关机/重启
| 序号 | 命令 | 作用 |
| --- | --- | --- |
| 01 | shutdown 选项 时间 | 关机/重新启动 |
`shutdown` 命令可以 **安全关闭** 或者 **重新启动系统**
| 选项 | 含义 |
| --- | --- |
| -r | 重新启动 |
**不指定选项和参数**,默认表示 **1 分钟**之后 **关闭电脑**
远程维护服务器时,最好不要关闭系统,而应该重新启动系统
# 重新启动操作系统,其中 now 表示现在
shutdown -r now
# 立刻关机,其中 now 表示现在
shutdown now
# 系统在今天的 20:25 会关机
shutdown 20:25
# 系统再过十分钟后自动关机
shutdown +10
# 取消之前指定的关机计划
shutdown -c
查看或配置网卡信息
| 序号 | 命令 | 作用 |
| --- | --- | --- |
| 01 | ifconfig | 查看/配置计算机当前的网卡配置信息 |
| 02 | ping ip地址 | 检测到目标 ip地址 的连接是否正常 |
# 查看网卡配置信息
ifconfig
# 检测到目标主机是否连接正常
ping IP地址
# 检测本地网卡工作正常
ping 127.0.0.1
ssh命令
**SSH 客户端**是一种使用 `Secure Shell(SSH)` 协议连接到远程计算机的软件程序
`SSH` 是目前较可靠,**专为远程登录会话和其他网络服务** 提供安全性的协议
- 利用 `SSH 协议` 可以有效**防止远程管理过程中的信息泄露**
- 通过 `SSH 协议` 可以对所有传输的数据进行加密,也能够防止 DNS 欺骗和 IP 欺骗
- `SSH` 的另一项优点是传输的数据可以是经过压缩的,所以可以加快传输的速度
ssh [-p port] user@remote
#`user` 是在远程机器上的用户名,如果不指定的话默认为当前用户
#`remote` 是远程机器的地址,可以是 **IP**/**域名**,或者是 **别名**
#`port` 是 **SSH Server 监听的端口**,如果不指定,就为默认值 `22`
免密登录
- 配置公钥,执行 `ssh-keygen` 即可生成 SSH 钥匙,一路回车即可
- 上传公钥到服务器,执行 `ssh-copy-id -p port user@remote`,可以让远程服务器记住我们的公钥
配置别名
- 每次都输入 `ssh -p port user@remote`,时间久了会觉得很麻烦,特别是当 `user`, `remote` 和 `port` 都得输入,而且还不好记忆
- 而 **配置别名** 可以让我们进一步偷懒,譬如用:`ssh mac` 来替代上面这么一长串,那么就在 `~/.ssh/config` 里面追加以下内容:
```
Host mac
HostName ip地址
User itheima
Port 22
```
scp命令
scp 就是 `secure copy`,是一个在 Linux 下用来进行 **远程拷贝文件** 的命令
它的**地址格式与 ssh 基本相同**,**需要注意的是**,在指定端口时用的是大写的 `-P` 而不是小写的
| 选项 | 含义 |
| --- | --- |
| -r | 若给出的源文件是目录文件,则 scp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名 |
| -P | 若远程 SSH 服务器的端口不是 22,需要使用大写字母 -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 .
# 加上 -r 选项可以传送文件夹
# 把当前目录下的 demo 文件夹 复制到 远程 家目录下的 Desktop
scp -r demo user@remote:Desktop
# 把远程 家目录下的 Desktop 复制到 当前目录下的 demo 文件夹
scp -r user@remote:Desktop demo
用户权限
在 Linux 中,可以指定 **每一个用户** 针对 **不同的文件或者目录** 的 **不同权限**
对 **文件/目录** 的权限包括:
| 序号 | 权限 | 英文 | 缩写 | 数字代号 |
| :---: | :---: | :---: | :---: | :---: |
| 01 | 读 | read | r | 4 |
| 02 | 写 | write | w | 2 |
| 03 | 执行 | excute | x | 1 |
为了方便用户管理,提出了 **组** 的概念
在实际应用中,可以预先针对 **组** 设置好权限,然后 **将不同的用户添加到对应的组中**,从而**不用依次为每一个用户设置权限**
chmod命令
`chmod` 可以修改 **用户/组** 对 **文件/目录** 的权限
chmod +/-rwx 文件名|目录名
#以上方式会一次性修改 `拥有者` / `组` 权限
超级用户
- Linux 系统中的 `root` 账号通常 **用于系统的维护和管理**,对操作系统的所有资源 **具有所有访问权限**
- 在大多数版本的 Linux 中,都不推荐 **直接使用 root 账号登录系统**
- 在 Linux 安装的过程中,系统会自动创建一个用户账号,而这个默认的用户就称为“标准用户”
sudo
- `su` 是 `substitute user` 的缩写,表示 **使用另一个用户的身份**
- `sudo` 命令用来以其他身份来执行命令,预设的身份为 `root`
- 用户使用 `sudo` 时,必须先输入密码,之后有 **5 分钟的有效期限**,超过期限则必须重新输入密码
- 若其未经授权的用户企图使用 `sudo`,则会发出警告邮件给管理员
组管理终端命令
提示:**创建组** / **删除组** 的终端命令都需要通过 `sudo` 执行
| 序号 | 命令 | 作用 |
| --- | --- | --- |
| 01 | groupadd 组名 | 添加组 |
| 02 | groupdel 组名 | 删除组 |
| 03 | cat /etc/group | 确认组信息 |
| 04 | chgrp -R 组名 文件/目录名 | 递归修改文件/目录的所属组 |
用户管理终端命令
提示:**创建用户** / **删除用户** / **修改其他用户密码** 的终端命令都需要通过 `sudo` 执行
| 序号 | 命令 | 作用 | 说明 |
| --- | --- | --- | --- |
| 01 | useradd -m -g 组 新建用户名 | 添加新用户 | -m 自动建立用户家目录-g 指定用户所在的组,否则会建立一个和同名的组 |
| 02 | passwd 用户名 | 设置用户密码 | 如果是普通用户,直接用 passwd 可以修改自己账户密码 |
| 03 | userdel -r 用户名 | 删除用户 | -r 选项会自动删除用户家目录 |
| 04 | cat /etc/passwd \| grep 用户名 | 确认用户信息 | 新建用户后,用户信息会保存在 /etc/passwd 文件中 |
passwd 文件
`/etc/passwd` 文件存放的是用户的信息,由 6 个分号组成的 7 个信息,分别是
1. 用户名
2. 密码(x,表示加密的密码)
3. UID(用户标识)
4. GID(组标识)
5. 用户全名或本地帐号
6. 家目录
7. 登录使用的 Shell,就是登录之后,使用的终端命令,`ubuntu` 默认是 `dash`
查看用户信息
| 序号 | 命令 | 作用 |
| --- | --- | --- |
| 01 | id [用户名] | 查看用户 UID 和 GID 信息 |
| 02 | who | 查看当前所有登录的用户列表 |
| 03 | whoami | 查看当前登录用户的账户名 |
usermod
`usermod` 可以用来设置 **用户** 的 **主组** / **附加组** 和 **登录 Shell**,命令格式如下:
**主组**:通常在新建用户时指定,在 `etc/passwd` 的第 4 列 **GID 对应的组**
**附加组**:在 `etc/group` 中最后一列表示该组的用户列表,用于指定 **用户的附加权限**
提示:设置了用户的附加组之后,需要重新登录才能生效!
# 修改用户的主组(passwd 中的 GID)
usermod -g 组 用户名
# 修改用户的附加组
usermod -G 组 用户名
# 修改用户登录 Shell
usermod -s /bin/bash 用户名
注意:默认使用 `useradd` 添加的用户是没有权限使用 `sudo` 以 `root` 身份执行命令的,可以使用以下命令,将用户添加到 `sudo` 附加组中
usermod -G sudo 用户名
which
`/etc/passwd` 是用于保存用户信息的文件
`/usr/bin/passwd` 是用于修改用户密码的程序
`which` 命令可以查看执行命令所在位置,例如:
which ls
# 输出
# /bin/ls
which useradd
# 输出
# /usr/sbin/useradd
`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` 命令的位置
切换用户
| 序号 | 命令 | 作用 | 说明 |
| --- | --- | --- | --- |
| 01 | su - 用户名 | 切换用户,并且切换目录 | - 可以切换到用户家目录,否则保持位置不变 |
| 02 | exit | 退出当前登录账户 | |
`su` 不接用户名,可以切换到 `root`,但是不推荐使用,因为不安全
修改文件权限
| 序号 | 命令 | 作用 |
| --- | --- | --- |
| 01 | chown | 修改拥有者 |
| 02 | chgrp | 修改组 |
| 03 | chmod | 修改权限 |
# 修改文件|目录的拥有者
chown 用户名 文件名|目录名
# 递归修改文件|目录的组
chgrp -R 组名 文件名|目录名
# 递归修改文件权限
chmod -R 755 文件名|目录名
`chmod` 在设置权限时,可以简单地使用三个数字分别对应 **拥有者** / **组** 和 **其他** 用户的权限
#直接修改文件|目录的 读|写|执行 权限,但是不能精确到 拥有者|组|其他
chmod +/-rwx 文件名|目录名
拥有者/组/其他 | ||
r | w | x |
4 | 2 | 1 |
4 | 2 | 1 | 7 | rwx |
4 | 2 | 0 | 6 | rw- |
4 | 0 | 1 | 5 | r-x |
4 | 0 | 0 | 4 | r-- |
0 | 2 | 1 | 3 | -wx |
0 | 2 | 0 | 2 | -w- |
0 | 0 | 1 | 1 | --x |
0 | 0 | 0 | 0 | --- |
常见数字组合有(`u`表示用户/`g`表示组/`o`表示其他):
- `777` ===> `u=rwx,g=rwx,o=rwx`
- `755` ===> `u=rwx,g=rx,o=rx`
- `644` ===> `u=rw,g=r,o=r`
系统信息
时间和日期
| 序号 | 命令 | 作用 |
| --- | --- | --- |
| 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` 默认只会显示当前用户通过终端启动的应用程序
`ps` 选项说明
| 选项 | 含义 |
| --- | --- |
| a | 显示终端上的所有进程,包括其他用户的进程 |
| u | 显示进程的详细状态 |
| x | 显示没有控制终端的进程 |
提示:使用 `kill` 命令时,最好只终止由当前用户开启的进程,而不要终止 `root` 身份开启的进程,否则可能导致系统崩溃
要退出 `top` 可以直接输入 `q`
其他命令
查找文件
`find` 命令功能非常强大,通常用来在 **特定的目录下** **搜索** 符合条件的文件
| 序号 | 命令 | 作用 |
| --- | --- | --- |
| 01 | find [路径] -name "*.py" | 查找指定路径下扩展名是 `.py` 的文件,包括子目录 |
如果省略路径,表示在当前文件夹下查找
通配符,在使用 `find` 命令时同时可用
#1. 搜索桌面目录下,文件名包含 `1` 的文件
find -name "*1*"
#2. 搜索桌面目录下,所有以 `.txt` 为扩展名的文件
find -name "*.txt"
#3. 搜索桌面目录下,以数字 `1` 开头的文件
find -name "1*"
软链接
| 序号 | 命令 | 作用 |
| --- | --- | --- |
| 01 | ln -s 被链接的源文件 链接文件 | 建立文件的软链接,用通俗的方式讲**类似于** Windows 下的**快捷方式** |
注意:
1. 没有 `-s` 选项建立的是一个 **硬链接文件**
* 两个文件占用相同大小的硬盘空间,**工作中几乎不会建立文件的硬链接**
2. **源文件要使用绝对路径**,不能使用相对路径,这样可以方便移动链接文件后,仍然能够正常使用
硬链接简介
在使用 `ln` 创建链接时,如果没有 `-s` 选项,会创建一个 **硬链接**,而不是软链接
在 Linux 中,**文件名** 和 **文件的数据** 是分开存储的
提示:
- 在 Linux 中,只有文件的 `硬链接数 == 0` 才会被删除
- 使用 `ls -l` 可以查看一个文件的硬链接的数量
- 在日常工作中,几乎不会建立文件的硬链接,知道即可
打包压缩
**打包压缩** 是日常工作中备份文件的一种方式
在不同操作系统中,常用的打包压缩方式是不同的
- `Windows` 常用 `rar`
- `Mac` 常用 `zip`
- `Linux` 常用 `tar.gz`
打包 / 解包
`tar` 是 Linux 中最常用的 **备份**工具,此命令可以 **把一系列文件** 打包到 **一个大文件中**,也可以把一个 **打包的大文件恢复成一系列文件**
#`tar` 的命令格式如下:
#打包文件
tar -cvf 打包文件.tar 被打包的文件/路径...
#解包文件
tar -xvf 打包文件.tar
`tar` 选项说明
| 选项 | 含义 |
| --- | --- |
| c | 生成档案文件,创建打包文件 |
| x | 解开档案文件 |
| v | 列出归档解档的详细过程,显示进度 |
| f | 指定档案文件名称,f 后面一定是 .tar 文件,所以必须放选项最后 |
注意:`f` 选项必须放在最后,其他选项顺序可以随意
压缩/解压缩
`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 | 解压缩到指定目录,注意:要解压缩的目录必须存在 |
`bzip2`
`tar` 与 `bzip2` 命令结合可以使用实现文件 **打包和压缩**(用法和 `gzip` 一样)
- `tar` 只负责打包文件,但不压缩,
- 用 `bzip2` 压缩 `tar` 打包后的文件,其扩展名一般用 `xxx.tar.bz2`
在 `tar` 命令中有一个选项 **-j** 可以调用 `bzip2`,从而可以方便的实现压缩和解压缩的功能
#命令格式如下:
#压缩文件
tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径...
#解压缩文件
tar -jxvf 打包文件.tar.bz2
通过 apt 安装/卸载软件
apt 是 `Advanced Packaging Tool`,是 Linux 下的一款安装包管理工具
可以在终端中方便的 **安装**/**卸载**/**更新软件包**
#1. 安装软件
sudo apt install 软件包
#2. 卸载软件
sudo apt remove 软件名
#3. 更新已安装的包
sudo apt upgrade
#一个小火车提示
sudo apt install sl
#一个比较漂亮的查看当前进程排名的软件
sudo apt install htop
配置软件源
如果希望在 `ubuntu` 中安装软件,**更加快速**,可以通过设置**镜像源**,选择一个访问网速更快的服务器,来提供软件下载/安装服务
如何配置:系统设置 -> 软件和更新 -> 下载自(自行选择服务器)
提示:更换服务器之后,需要一个相对比较长时间的更新过程,需要耐心等待。更新完成后,再安装软件都会从新设置的服务器下载软件了
所谓镜像源,就是**所有服务器的内容是相同的(镜像),但是根据所在位置不同,国内服务器通常速度会更快一些!