Linux基础

虚拟机

虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完整隔离环境中的完整计算机系统。

  • 虚拟系统通过生成现有操作系统的全新虚拟镜像,具有真实操作系统完全一样的功能。
  • 进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,拥有独立的桌面,不会对真正的系统产生任何影响。
  • 而且能够在现有系统和虚拟镜像之间灵活切换的一类操作系统。

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命令的基本使用

序号命令英文作用
01lslist查看当前文件夹下的内容
02pwdprint work directory查看当前所在文件夹
03cd[目录]change directory切换目录
04touch[文件]touch如果文件不存在,则新建文件
05mkdir[目录]make directory创建目录
06rm[文件]remove删除指定文件
07clearclear清屏

终端命令格式

command [-options] [parameter]
  •  `command`:命令名,相应功能的英文单词或单词的缩写
  •  `[-options]`:选项,可用来对命令进行控制,也可以省略
  •  `parameter`:传给命令的参数,可以是 **零个**、**一个** 或者 **多个**
rm -r 文件夹名称#删除文件夹

查询帮助信息

command --help#简单描述
man command#manual手册,详细信息

使用man时的操作键

操作键功能
空格键显示手册页的下一屏
Enter一次滚动手册页的一行
bback,回滚一屏
fforward,前滚一屏
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 文件名|目录名
拥有者/组/其他
rwx
421
4217rwx
4206rw-
4015r-x
4004r--
0213-wx
0202-w-
0011--x
0000---

常见数字组合有(`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` 中安装软件,**更加快速**,可以通过设置**镜像源**,选择一个访问网速更快的服务器,来提供软件下载/安装服务

如何配置:系统设置 -> 软件和更新 -> 下载自(自行选择服务器)

提示:更换服务器之后,需要一个相对比较长时间的更新过程,需要耐心等待。更新完成后,再安装软件都会从新设置的服务器下载软件了

所谓镜像源,就是**所有服务器的内容是相同的(镜像),但是根据所在位置不同,国内服务器通常速度会更快一些!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小帅乱撞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值