Compare commits
101 Commits
Author | SHA1 | Date |
---|---|---|
cxykevin | c9c72f323e | |
ZXL-Q | a670ad62d6 | |
cxykevin | 124e4a0308 | |
cxykevin | d3ac3e700e | |
cxykevin | 6e25b485ff | |
cxykevin | 4711a45569 | |
Hmtsai | 8bf629d140 | |
cxykevin | c0fd2c82be | |
cxykevin | 83fa4d4b03 | |
cxykevin | 4a07a842f5 | |
cxykevin | 91e766aea2 | |
Hmtsai | 8b3c8339fc | |
Hmtsai | 7cca05c26c | |
Hmtsai | 20b6cc1b62 | |
cxykevin | 0eba964a5a | |
cxykevin | f77e79a58c | |
cxykevin | baacf2a231 | |
cxykevin | 0fb5946b8e | |
cxykevin | 532d6b9948 | |
cxykevin | d0a0eb6479 | |
cxykevin | dd798247e2 | |
cxykevin | 4880cfff76 | |
Hmtsai | e787a0aae7 | |
cxykevin | 4c6b3b8687 | |
cxykevin | 9429325196 | |
cxykevin | 532ff126b6 | |
cxykevin | 4291024933 | |
cxykevin | ff8ffa0fd1 | |
cxykevin | 37cfe1b31e | |
cxykevin | 8908dd550a | |
cxykevin | 45b959e6ef | |
cxykevin | 55a044a670 | |
cxykevin | 6f2a135b4b | |
cxykevin | c866e5f47a | |
cxykevin | a7e4fa1424 | |
cxykevin | ffbb8de10d | |
Hmtsai | deddf2407c | |
cxykevin | 6bd928d8db | |
cxykevin | d791a0b76d | |
Hmtsai | 837d290e8a | |
cxykevin | f0081dd7ff | |
cxykevin | d16dfeb414 | |
studyareacn-format-bot | afe0f8ca35 | |
Hmtsai | 8cbd777568 | |
Hmtsai | ae67fc3d6b | |
studyareacn-format-bot | 6afcb9cdf9 | |
Hmtsai | 0b0176c6fe | |
Hmtsai | 6b7ffaac99 | |
Hmtsai | 612121ebfc | |
Hmtsai | 6080a4fb81 | |
cxykevin | bdc9054201 | |
studyareacn-format-bot | 396ebd453c | |
cxykevin | c467eebde9 | |
studyareacn-format-bot | 8677d98450 | |
cxykevin | 06b3516fb5 | |
studyareacn-format-bot | 5c4eff6e96 | |
cxykevin | 2434caa892 | |
studyareacn-format-bot | 42ece94c8d | |
cxykevin | bf9564484b | |
cxykevin | 86ab8dc9d5 | |
cxykevin | 78af1d7d7f | |
studyareacn-format-bot | e66a334a39 | |
cxykevin | 58ac059c04 | |
cxykevin | 28a043a207 | |
cxykevin | 47606aa822 | |
studyareacn-format-bot | 04af20f989 | |
cxykevin | f1abb1094c | |
cxykevin | a9af6c2876 | |
cxykevin | 3a651072d1 | |
cxykevin | 64c1ad340a | |
cxykevin | 490a7533e2 | |
studyareacn-format-bot | eb66539f5e | |
cxykevin | efcd03befb | |
studyareacn-format-bot | 3f793acf2d | |
cxykevin | 3a1073719d | |
studyareacn-format-bot | 88df0356b6 | |
cxykevin | dd8d7aafe9 | |
cxykevin | 3cd30e68cc | |
studyareacn-format-bot | c02292a977 | |
studyareacn-format-bot | cd1f2f329e | |
cxykevin | 09ce84ab4a | |
cxykevin | 46669a43cf | |
Hmtsai | 73ea12e661 | |
Hmtsai | 84c7192489 | |
Hmtsai | e09a67c4c7 | |
Hmtsai | 1f72a28fa4 | |
Hmtsai | 343d728f15 | |
Hmtsai | 92ca796e1d | |
Hmtsai | f5e5483c90 | |
Hmtsai | 0d26d3b017 | |
cxykevin | 1a2ef0adaa | |
Hmtsai | b6f28a51c2 | |
cxykevin | 25a2900c72 | |
cxykevin | 5bccc5a20a | |
cxykevin | 03428efb07 | |
cxykevin | 63a0b5f9f8 | |
cxykevin | 6efcd8544d | |
cxykevin | 8e269da58a | |
cxykevin | 02a757649c | |
cxykevin | 1d633d545f | |
Hmtsai | d4ed7b0a7a |
|
@ -42,6 +42,24 @@ jobs:
|
|||
run: chmod +x study-area-action-deps/mdbook-linux-$(uname -m)
|
||||
- name: Build mdbook
|
||||
run: study-area-action-deps/mdbook-linux-$(uname -m) build
|
||||
- name: Cache mapbook
|
||||
uses: https://git.hmtsai.cn/actions/cache@v4
|
||||
id: cache-mapbook
|
||||
env:
|
||||
cache-name: cache-mapbook
|
||||
with:
|
||||
key: mapbook
|
||||
path: |
|
||||
mapbook
|
||||
- name: Get mapbook
|
||||
if: ${{ steps.cache-mapbook.outputs.cache-hit != 'true' }}
|
||||
run: |
|
||||
git clone https://git.hmtsai.cn/cxykevin/mapbook
|
||||
echo "Check..."
|
||||
ls mapbook
|
||||
- name: Build sitemap
|
||||
run: |
|
||||
python3 mapbook/build.py
|
||||
- name: Check book
|
||||
run: ls book
|
||||
- name: Upload
|
||||
|
|
|
@ -1 +1,4 @@
|
|||
book
|
||||
node
|
||||
study-area-home-action-deps
|
||||
study-area-action-deps
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"rules":{
|
||||
"no-empty-code": 1,
|
||||
"no-long-code": 0
|
||||
}
|
||||
}
|
|
@ -1,8 +1,10 @@
|
|||
# Study Area CN
|
||||
|
||||
### URL : [learn.study-area.org.cn](https://learn.study-area.org.cn)
|
||||
|
||||
![stars](https://img.shields.io/badge/dynamic/json?url=http%3A%2F%2Fgit.hmtsai.cn%2Fapi%2Fv1%2Frepos%2Fstudy-area-cn%2Fstudy-area-cn&query=%24.stars_count&style=for-the-badge&logo=gitea&label=stars&labelColor=%23F0F0F0&color=%231080FF&cacheSeconds=120&link=http%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn&link=http%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn)
|
||||
![forks](https://img.shields.io/badge/dynamic/json?url=http%3A%2F%2Fgit.hmtsai.cn%2Fapi%2Fv1%2Frepos%2Fstudy-area-cn%2Fstudy-area-cn&query=%24.forks_count&style=for-the-badge&logo=git&logoColor=%23303030&label=forks&labelColor=%23F0F0F0&color=%2350B250&cacheSeconds=120&link=http%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn&link=http%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn)
|
||||
![CI](https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.hmtsai.cn%2Fbadgeapi%2Factions%3Furl%3Dhttp%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn%2Factions%26label%3DCI&style=for-the-badge&cacheSeconds=0&labelColor=%23F0F0F0)
|
||||
![CI](https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.study-area.org.cn%2Fbadgeapi%2Factions%3Furl%3Dhttp%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn%2Factions%26label%3DCI&style=for-the-badge&cacheSeconds=0&labelColor=%23F0F0F0)
|
||||
|
||||
## 概述
|
||||
这里是www.study-area.org的半克隆!
|
||||
|
@ -19,6 +21,7 @@
|
|||
|
||||
|
||||
## 如何帮助开发?
|
||||
|
||||
如果您想要协助我们的开发,请参阅[百科](https://git.hmtsai.cn/study-area-cn/study-area-cn/wiki)
|
||||
|
||||
如果你对本项目做出了贡献,就请在`/src/contributors.md`中写上你的名字吧!
|
|
@ -4,3 +4,22 @@ language = "zh-cn"
|
|||
multilingual = false
|
||||
src = "src"
|
||||
title = "Study Area CN"
|
||||
|
||||
[output.html]
|
||||
additional-css = [
|
||||
"theme/css/icons.css",
|
||||
"theme/css/mdui.css",
|
||||
"theme/css/highlight.min.css",
|
||||
"theme/css/page.css",
|
||||
"theme/css/font.css",
|
||||
"theme/font/icons.woff2",
|
||||
"theme/font/noto.otf",
|
||||
"theme/font/sourcecodepro.woff2",
|
||||
]
|
||||
additional-js = [
|
||||
"theme/js/mdui.global.js",
|
||||
"theme/js/highlight.min.js",
|
||||
"theme/js/mathjax.js",
|
||||
"theme/js/tocrender.js",
|
||||
"theme/js/page.js",
|
||||
]
|
||||
|
|
|
@ -28,21 +28,24 @@
|
|||
- [漫谈 Linux 学习之路](./learn_linux_basic/the_linux_learning_path.md)
|
||||
- [Linux 的发展历程](./learn_linux_basic/the_history_of_linux.md)
|
||||
- [Linux 发行版](./learn_linux_basic/linux_distro.md)
|
||||
- [Rocky Linux初见](./learn_linux_basic/rocky_first_met.md)
|
||||
- [Rocky Linux 安装](./learn_linux_basic/install_rocky_linux/install_rocky_linux_intro.md)
|
||||
- [在 VMWare Workstation 上安装](./learn_linux_basic/install_rocky_linux/install_in_vmware.md)
|
||||
- [在 VirtualBox 上安装](./learn_linux_basic/install_rocky_linux/install_in_vbox.md)
|
||||
- [在你的电脑(实体机)上安装](./learn_linux_basic/install_rocky_linux/install_in_your_pc.md)
|
||||
- [安装 Rocky Linux](./learn_linux_basic/install_rocky_linux/install_rocky_linux.md)
|
||||
- [文件与路径]()
|
||||
- [文件权限管理]()
|
||||
- [文件目录管理]()
|
||||
- [磁盘分区以及文件系统]()
|
||||
- [gzip与xz]()
|
||||
- [tar打包软件]()
|
||||
- [备份]()
|
||||
- [Shell与Shell Script]()
|
||||
- [Vim编辑器]()
|
||||
- [学习Shell]()
|
||||
- [Linux 常识](./learn_linux_basic/linux_common_sense.md)
|
||||
- [文件与路径](./learn_linux_basic/file_and_path/file_and_path.md)
|
||||
- [文件权限管理](./learn_linux_basic/file_and_path/manage_file_premissons.md)
|
||||
- [磁盘分区以及文件系统](./learn_linux_basic/file_and_path/diskpart_and_filesystem.md)
|
||||
- [在 VMWare Workstation 上创建虚拟磁盘](./learn_linux_basic/file_and_path/diskpart_and_filesystem/create_disk_on_vmware.md)
|
||||
- [在 VirtualBox 上创建虚拟磁盘](./learn_linux_basic/file_and_path/diskpart_and_filesystem/create_disk_on_vbox.md)
|
||||
- [tar打包软件](./learn_linux_basic/file_and_path/tar_command.md)
|
||||
- [gzip与xz](./learn_linux_basic/file_and_path/gzip_and_xz.md)
|
||||
- [备份](./learn_linux_basic/file_and_path/backup.md)
|
||||
- [Shell与Shell Script](./learn_linux_basic/shell_and_shell_script/shell_and_shell_script.md)
|
||||
- [学习Shell](./learn_linux_basic/shell_and_shell_script/learn_shell.md)
|
||||
- [Job]()
|
||||
- [Vim编辑器](./learn_linux_basic/shell_and_shell_script/vim_editor.md)
|
||||
- [Shell Script基本语法]()
|
||||
- [条件判断语句]()
|
||||
- [循环]()
|
||||
|
@ -54,7 +57,6 @@
|
|||
- [程序、线程和进程]()
|
||||
- [什么是程序]()
|
||||
- [线程和进程]()
|
||||
- [Job]()
|
||||
- [进程与线程的管理]()
|
||||
- [特殊的进程和文件]()
|
||||
- [SELinux]()
|
||||
|
@ -64,5 +66,5 @@
|
|||
- [SELinux错误的处理]()
|
||||
- [系统服务的管理]()
|
||||
- [Systemd与init]()
|
||||
- [systemctl的使用]()
|
||||
- [service和target]()
|
||||
- [systemctl的使用]()
|
||||
|
|
|
@ -1,19 +1,21 @@
|
|||
# 贡献者名单
|
||||
|
||||
原站作者:
|
||||
## 原站作者
|
||||
|
||||
- netman
|
||||
|
||||
团队成员:
|
||||
## 团队成员
|
||||
|
||||
- hmtsai
|
||||
- [hmtsai](https://blog.hmtsai.cn)
|
||||
- cxykevin
|
||||
- undefined
|
||||
- 路人甲
|
||||
- undefined(域名贡献者)
|
||||
- [路人甲](https://en.lurenapp.uk)
|
||||
|
||||
## 第一章:学习电脑
|
||||
|
||||
- 东北大学 张送柱(@Hmtsai 的计算机老师)
|
||||
- ZXL-Q
|
||||
|
||||
## 第二章:Linux 基础
|
||||
|
||||
> 每个子名单排名不分先后
|
||||
|
|
|
@ -1,9 +1,27 @@
|
|||
# 约定
|
||||
|
||||
## 内容
|
||||
|
||||
章节之间可能会出现「笔者」的部分类似于配置的信息不一致的问题,这是因为「笔者」不是一个人,而是指代整个贡献这列表中的所有直接编辑过本书的人,所以会出现该问题,敬请谅解。
|
||||
|
||||
在本教程中,快捷键使用以下格式表示:
|
||||
`Ctrl`键使用`^`(如 `^C`)或者`C`表示,`Alt`键使用`M`表示,`Super`(即`Windows`键)使用`S`表示。
|
||||
它们的排列顺序是这样的:`C-M-S-<Other Key>`。
|
||||
|
||||
你可能会看到这种内容:`<Esc>:q!<Enter>`,其中 `<按键名>` 表示按下对应的按键(包括上面的快捷键)。
|
||||
|
||||
例如上面的内容,就表示:
|
||||
|
||||
1. 按一下键盘上的 `[Esc]`
|
||||
2. 输入 `:q!`
|
||||
3. 再按一下 `[Enter]`
|
||||
|
||||
## 授权
|
||||
|
||||
本文中如有转载文章,均已与原站取得授权,如有疑问请联系 “<rarmicrozip@outlook.com>”
|
||||
|
||||
本站对一些文章进行了适当的修改和删减,以适合当下的环境
|
||||
|
||||
且转载文章会在末尾处注明作者与出处。
|
||||
|
||||
本站对一些文章进行了适当的修改和删减,以适合当下的环境。
|
||||
|
||||
本站原创文章若无特别说明均在 [MIT](./licenses/LICENSE-MIT.md) 与 [Apache2](./licenses/LICENSE-APACHE.md) 的双重许可下发布,转载请遵守相关规定。
|
||||
|
|
|
@ -19,10 +19,11 @@
|
|||
|
||||
如果本站服务无法访问,您还可以去下面的链接:
|
||||
|
||||
* [JSLinux](https://bellard.org/jslinux/vm.html?cpu=riscv64&url=fedora33-riscv.cfg&mem=256)
|
||||
* [mxt.cn](https://mxt.cn/lxojres/jslinux/index.html)
|
||||
- [JSLinux](https://bellard.org/jslinux/vm.html?cpu=riscv64&url=fedora33-riscv.cfg&mem=256)
|
||||
- [mxt.cn](https://mxt.cn/lxojres/jslinux/index.html)
|
||||
|
||||
> mxt 使用的操作系统略微不同
|
||||
|
||||
---
|
||||
|
||||
> study-area-cn
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
[![stars](https://img.shields.io/badge/dynamic/json?url=http%3A%2F%2Fgit.hmtsai.cn%2Fapi%2Fv1%2Frepos%2Fstudy-area-cn%2Fstudy-area-cn&query=%24.stars_count&style=for-the-badge&logo=gitea&label=stars&labelColor=%23F0F0F0&color=%231080FF&cacheSeconds=120&link=http%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn&link=http%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn)](https://git.hmtsai.cn/study-area-cn/study-area-cn)
|
||||
[![forks](https://img.shields.io/badge/dynamic/json?url=http%3A%2F%2Fgit.hmtsai.cn%2Fapi%2Fv1%2Frepos%2Fstudy-area-cn%2Fstudy-area-cn&query=%24.forks_count&style=for-the-badge&logo=git&logoColor=%23303030&label=forks&labelColor=%23F0F0F0&color=%2350B250&cacheSeconds=120&link=http%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn&link=http%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn)](https://git.hmtsai.cn/study-area-cn/study-area-cn)
|
||||
[![CI](https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.hmtsai.cn%2Fbadgeapi%2Factions%3Furl%3Dhttp%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn%2Factions%26label%3DCI&style=for-the-badge&cacheSeconds=0&labelColor=%23F0F0F0)](https://git.hmtsai.cn/study-area-cn/study-area-cn/actions)
|
||||
[![CI](https://img.shields.io/endpoint?url=https%3A%2F%2Fapi.study-area.org.cn%2Fbadgeapi%2Factions%3Furl%3Dhttp%3A%2F%2Fgit.hmtsai.cn%2Fstudy-area-cn%2Fstudy-area-cn%2Factions%26label%3DCI&style=for-the-badge&cacheSeconds=0&labelColor=%23F0F0F0)](https://git.hmtsai.cn/study-area-cn/study-area-cn/actions)
|
||||
|
||||
## 缘起
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
好了﹐这里要说的是电脑的大脑。
|
||||
|
||||
`Central Processing Unit`(CPU) 我们翻译成中央处理器。一些专业的大型电脑,其 CPU 可以很大(不过绝大多数以计算机集群为主)﹐但在 PC 上面的 CPU 只是比饼干还要小的一片陶瓷片。只要打开电脑﹐把风扇拿掉,就可以一睹 CPU 的庐山真面目了。我们常问“您的机器是什么型号的啊?”﹐其实问的多指 CPU 的型号。或许您听过什么 Intel I3,I5,I9 等 CPU﹐他们所代表的可以说是不同型号的 CPU。事实上,除了 Intel 的 CPU 外,还有其它牌子的 CPU 可供选择。比方说:AMD,龙芯等等。
|
||||
|
||||
> 译者注: mainframe、CPU 型号、品牌等为过时内容,已更改或删除
|
||||
|
||||
CPU 的功能如何呢?说来很复杂,主要为五个部分:
|
||||
|
@ -12,15 +13,19 @@ CPU的功能如何呢?说来很复杂,主要为五个部分:
|
|||
1. 输入单元
|
||||
|
||||
用来读取给电脑处理的数据或程序
|
||||
|
||||
2. 处理单元
|
||||
|
||||
用来执行计算、比较和判断等运算功能
|
||||
|
||||
3. 输出单元
|
||||
|
||||
将电脑的运算结果和处理好的数据输出
|
||||
|
||||
4. 记忆单元
|
||||
|
||||
用来储存数据或程序的地方
|
||||
|
||||
5. 控制单元
|
||||
|
||||
按作业程序指挥上述单元的运作及交换数据信道的传送
|
||||
|
@ -30,7 +35,7 @@ CPU的功能如何呢?说来很复杂,主要为五个部分:
|
|||
我们常追求最新最快的 CPU,但是不同年代的 CPU 究竟不同在哪里呢?如果真要解释清楚,恐怕要写一本书出来。不过,下面的表格相信也可以帮助我们了解一下。
|
||||
|
||||
| 项目/类型 | [80486(1989)](https://baike.baidu.com/item/80486/7473784) | [Pentium(奔腾)4(2000)](https://baike.baidu.com/item/%E5%A5%94%E8%85%BE4/9113325) | [I5-6400(2010)](https://www.intel.cn/content/www/cn/zh/products/sku/88185/intel-core-i56400-processor-6m-cache-up-to-3-30-ghz/specifications.html) | [I5-10400(2019)](https://www.intel.cn/content/www/cn/zh/products/sku/199271/intel-core-i510400-processor-12m-cache-up-to-4-30-ghz/specifications.html) | [I5-14600(2023)](https://www.intel.cn/content/www/cn/zh/products/sku/199271/intel-core-i510400-processor-12m-cache-up-to-4-30-ghz/specifications.html) |
|
||||
| :------------ | :---------: | :-------------------: | :-----------: | :------------: | :---------------: |
|
||||
| :--------- | :-------------------------------------------------------: | :------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------: |
|
||||
| 指令集架构 | x86 | x86 | x86-64 | x86-64 | x86-64 |
|
||||
| 核心数 | 1 | 1 | 4 | 6 | 6P(大)+8E(小) |
|
||||
| 计算速度 | 33-100 MHz | 1.3-3.8 GHz | 2.7(3.3) GHz | 2.9(4.3) GHz | P:2.7 Ghz E:2 Ghz |
|
||||
|
@ -40,7 +45,9 @@ CPU的功能如何呢?说来很复杂,主要为五个部分:
|
|||
> 最新数据请在 [Intel 官网](https://www.intel.cn) 查看。</br>
|
||||
> 以上 CPU 均为 Intel CPU,AMD CPU 请在 [AMD 官网](https://www.amd.com) 查看。</br>
|
||||
> 说明:1000 MHz = 1 GHz,计算速度括号内为睿频频率。</br>
|
||||
|
||||
---
|
||||
|
||||
> 译者注: 过时内容,当前数据选自 2024 年 5 月
|
||||
|
||||
在 1980 年末﹐IBM 才开始大举进军个人电脑市场。在这之前﹐苹果在 1976 年就推出了 Apple I 个人电脑﹐之后 Apple II 也已经成功地拥有很大数量的用户了。IBM PC 使用的 CPU 厂商 Intel 其实早在 1976 年也推出了一款型号叫 8086 的 CPU,其后不久的 8088 和它很相近﹐比起现代的 CPU 来说,它们可以说是慢得像蜗牛了:最快的只有 8MHz!Intel 相继 8086 和 8088 之后还推出了 80186 和 80188,但不是很成功。但是 Intel 打算将系统部件合并到 CPU 去的概念却对后来生产更快的 CPU,如 80286/80386,起到很重要的作用。从 80386 起人们就把 80 给去掉了,直接称为 x86 了。当 Intel 在推出 486 其后下一代的产品时,厂商将 CPU 型号命名为 Pentium,从此,PII、PIII、P4 等不同年代的 CPU 也都以 Pentium 命名。但在程序界中,仍有不少人继续称 Pentium CPU 为 586,686 的,只是越来越少人坚持如此了。
|
||||
|
@ -62,5 +69,6 @@ AMD在2005年5月推出了速龙64位处理器。这是首个消费级的x86-64(
|
|||
> 译者注: 删除过时的计算 CPU 速度的内容,并更改标题
|
||||
|
||||
---
|
||||
|
||||
> 原文: [netman](http://www.study-area.org/compu/compu_cpu.htm)</br>
|
||||
> study-area-cn
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
现在的电脑大部份都标识得非常清楚,而且还有颜色配合。 这样接起设备来就更轻松容易了。 万一还是不知到怎么接,千万别乱来,最好仔细看说明书或打电话请较厂商或朋友啰。
|
||||
|
||||
惯例上,我们把带针的接口叫做“公”,而把带孔的那端叫做“母”,相信这样很容易分辨吧?至于为什么要这样称呼?相信不用多解释吧! ^_^
|
||||
惯例上,我们把带针的接口叫做“公”,而把带孔的那端叫做“母”,相信这样很容易分辨吧?至于为什么要这样称呼?相信不用多解释吧! ^\_^
|
||||
|
||||
再看看电脑背后还有好多的接口,它们都是给输入输出设备用的(除了靠近风扇的那个(有些是两个)黑黑大大的是给电源用的)。
|
||||
|
||||
|
@ -37,5 +37,6 @@
|
|||
假如您还加了些其他的插卡的话,您还会看到更多的接口,但已经很难在这里指出了。不过有用一种比较旧的 SCSI 接口跟并行都是 25 孔母接口的,那就要非常小心了,不然接错了有可能会损坏装置呢。不过,现在要找到这么旧的 SCSI 卡还真不容易呢!
|
||||
|
||||
---
|
||||
|
||||
> 原文: [netman](http://www.study-area.org/compu/compu_io.htm)</br>
|
||||
> study-area-cn
|
||||
|
|
|
@ -4,11 +4,12 @@
|
|||
|
||||
## 内存的作用
|
||||
|
||||
为什么内存这么重要呢?其实,电脑真正工作的场所是在内存上面,包括所有系统的驱动程序、操作系统、工作数据、成品/半成品等等,都必须先加载到内存上面才能给CPU读取。尤其对Windows或比较大型的程序,要求的内存也越多。而且,内存永远都只会嫌少不会嫌多的,就像钱对于我来说 ^_^
|
||||
为什么内存这么重要呢?其实,电脑真正工作的场所是在内存上面,包括所有系统的驱动程序、操作系统、工作数据、成品/半成品等等,都必须先加载到内存上面才能给 CPU 读取。尤其对 Windows 或比较大型的程序,要求的内存也越多。而且,内存永远都只会嫌少不会嫌多的,就像钱对于我来说 ^\_^
|
||||
|
||||
## 如何计算内存的容量?
|
||||
|
||||
内存的最小单位是位(bit),每个位可以代表 1 或 0(开或关),而 8 个 bit 则组成 1 字节(byte)。byte 可以说是电脑最基本的计算单位了,再往后则每乘以 1024 来增加单位。也就是说:
|
||||
|
||||
> | | | |
|
||||
> | -------------: | :-: | :------- |
|
||||
> | 1KB(Kilo Byte) | = | 1024Byte |
|
||||
|
@ -45,6 +46,7 @@
|
|||
假如您的显卡可以显示 1024x768 的分辨率和 32bit 颜色(目前市面上的最低水准)的话,您最少需要`1024x768x32` bit = `3` MB 的 RAM。而现在市面上的显卡还有自己的程序处理功能(如 3D 加速,AI 计算加速),那么则需要更多的显存了。
|
||||
|
||||
不过,请您要分清楚的是:这里以显存为例子,并不是电脑系统上面的内存,而是显卡本身的(虽然某些核心或板载显卡会共享电脑的内存)。同时,这里虽然只作为一个计算例子而已,不过也适合计算一个 BMP 图像文件的大小
|
||||
|
||||
> 注:bmp 图像和 png 等图像不同,没有经过压缩,文件大小就是实际的分辨率大小,而 png 图像通常小于同分辨率的 bmp。
|
||||
|
||||
## 内存的管理
|
||||
|
@ -52,7 +54,7 @@
|
|||
不同的操作系统,对内存的管理也不相同,下面以传统的 DOS 来看看内存的分配情形。由于传统设计的限制和向后兼容的考虑,DOS 主要运用的是内存的前 1MB。而且,真正工作的区域也只是前面的 640K(然而哪怕早期的 Windows 也已经打破了这个限制了)。
|
||||
|
||||
| 0-640KB | 640-</br>768KB | 768-</br>832KB | 832-</br>896KB | 896KB-</br>1MB | 1MB-</br>16MB/4G |
|
||||
| ------- | --------- |---------- | ---------- | ----------- | ---------- |
|
||||
| -------------------------------------------- | -------------- | --------------- | -------------- | ------------------ | -------------------------------------------------------------------------------------------------------- |
|
||||
|    基本内存    | 显存</br>预留 | 适配器</br>内存 | EMS</br>Window | 主板 BIOS</br>内存 |         扩展内存         |
|
||||
|
||||
离开了内存,电脑一点东西都做不到,但如果 RAM 给扰乱了或是超出了范围,电脑也会不工作,通常电脑的宕机或蓝屏(out of memory)就是这样形成的。
|
||||
|
@ -71,12 +73,13 @@
|
|||
|
||||
RAM 的速度是以 ns(纳秒,nanoseconds,`1000000ns = 1ms`)做单位,以数据的储存速度为标准,数值越低越快。以前的 SIMM 有些是 70ns,十分古老的 DIMM 最快都可以到 10ns 了。而现在主流的 DDR4 的 RAM,速度就更快了(没有找到确切的数据,但据说传输速度达到了 17-25GB/s)。同时,为配合 CPU 的外频速度,也需要不同外频速度的 RAM 才能发挥性能。
|
||||
|
||||
>以目前写者现在使用的内存来说 2666MHz * 128bit(双通道) / 8(位到字节单位转换) = 42.656GB/s。当然这只是理论速度,实际发挥还要看内存控制器
|
||||
> 以目前写者现在使用的内存来说 2666MHz \* 128bit(双通道) / 8(位到字节单位转换) = 42.656GB/s。当然这只是理论速度,实际发挥还要看内存控制器
|
||||
|
||||
ROM 虽然说是只读的,但现在的主板甚至显卡的 ROM 多数是可以重复刷写的,也就是通过程序可以对里面的内容进行更新。不过,如果自己升级固件就要非常小心了,尤其是在升级过程的一半断电的话可就难堪了。比如很久以前的 CIH 病毒,就可以进入到 ROM 里面去改写数据,以致机器打不开。如果拿去修理,有些奸商会趁机叫您将主板换掉,其实只要有适当设备,将数据重新写进 ROM 就可以救回的了,再不然,买一个新的 ROM 换掉也可以。
|
||||
|
||||
然而,RAM 有一共同特性,就是有电才能维持记忆,如果电源关掉了,里面所有的数据都会回复到全部为正或负。如果打开台式机的机器盖子去看看主板的话,上面应该都有颗钮扣电池,它就是用来维持主板时钟和 CMOS(Complementary Metal-Oxide Semiconductor,用来储存和维护一些机器的基本设定数据)的工作的。一旦机器很久没用,重启的时候或许会显示警告或者开不起来,可能就是 CMOS 的电池用完了,在重新插拔或更换电池后,以前的设定也就消失掉了,此时只能再进入 BIOS(Basic Input Output System)在厂家预设的基础上进行修改后才能让机器回复工作。有时候如果忘记了 BIOS 的密码,也可以通过取出电池或通过跳针将原有的设定清除掉,再重新设定。不过现在的 CMOS 大部分已经采用了非易失性存储器,断电不会丢失数据。所以主板上的电池只剩下了维持时钟工作的功能。不过为了保留传统,大部分厂商的主板也保留了扣下电池清除 BIOS 配置的功能,只是已经不能清除密码了。
|
||||
|
||||
---
|
||||
|
||||
> 原文: [netman](http://www.study-area.org/compu/compu_mem.htm)</br>
|
||||
> study-area-cn
|
||||
|
|
|
@ -38,11 +38,12 @@ emm...恐怕这东西也不是个容易说清楚的问题。简单来说,一
|
|||
PCIe 分为好几个版本,还有 x1,x4 等通道之分,一般来说,版本越新,通道越多,速度越快。
|
||||
|
||||
| 版本 | PCIe 1.0 | PCIe 2.0 | PCIe 3.0 | PCIe 4.0 | PCIe 5.0 |
|
||||
|--------|---------|--------|--------|--------|--------|
|
||||
| ---- | -------- | -------- | ---------- | ---------- | ---------- |
|
||||
| x1 | 250MB/s | 500MB/s | 984.6MB/s | 1.969GB/s | 3.9GB/s |
|
||||
| x4 | 1GB/s | 2GB/s | 3.938GB/s | 7.877GB/s | 15.8GB/s |
|
||||
| x8 | 2GB/s | 4GB/s | 7.877GB/s | 15.754GB/s | 31.508GB/s |
|
||||
| x16 | 4GB/s | 8GB/s | 15.754GB/s | 31.508GB/s | 63GB/s |
|
||||
|
||||
> 其实,Nvme 本质上就是 PCIe x4,最新的 PCIe 5.0 x4 速度已经达到将近 16GB 每秒了,实在是太快了
|
||||
|
||||
### 5.BIOS (Basic Input Output System)
|
||||
|
@ -66,5 +67,6 @@ PCIe分为好几个版本,还有x1,x4等通道之分,一般来说,版本
|
|||
好了,现在您应该也对主板有了一个大致的了解了,接下来就让我们来学习 **操作系统** 的知识吧!
|
||||
|
||||
---
|
||||
|
||||
> 原文: [netman](http://www.study-area.org/compu/compu_mb.htm)</br>
|
||||
> study-area-cn
|
||||
|
|
|
@ -72,5 +72,6 @@ Windows 11:
|
|||
不过我们在“学习 Linux”章节会谈到一个 Linux 发行版(在后面会解释,简单来说就是对操作系统的一个小的封装)Rocky Linux。
|
||||
|
||||
---
|
||||
|
||||
> 原文: [netman](http://www.study-area.org/compu/compu_os.htm)</br>
|
||||
> study-area-cn
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
然后在另外一端,短的接头就是数据排线接口了。排线的接头有个凹进去的方块,那样的话要是掉反了方向是插不进去的(又是防呆!)。
|
||||
|
||||
> 对于部分光驱来说安装方式和 SATA 硬盘相同。
|
||||
|
||||
2. M.2
|
||||
|
||||
M.2 的接口相比 SATA 很短,因此硬盘的体积也很小。您会在一排金手指上看见一个或两个缺口,有的在左,有的在右。不同协议的硬盘有着不同的缺口,选购时请参考您的电脑主板。
|
||||
|
@ -60,6 +61,7 @@
|
|||
然后,也是由圆心开始,在同一表面上分别画出无数条半径,然后每两条半径所分割的磁道,我们称为扇区(Sector)。每一扇区通常可携带 512byte(0.5KB)的数据。
|
||||
|
||||
现今制造技术的不断提高,机械硬盘的磁盘越来越薄,磁头也越来越小,那么磁盘就可以越装越多(相对的是可擦写表面越来越多),甚至一块硬盘能够达到 10T!而且表面的密度也不断提高和读写精度越来越高(相对的是 Track 和 Sector 也越来越多),所以硬盘容量也越来越大。
|
||||
|
||||
- 固态硬盘
|
||||
|
||||
如果你看见过 M.2 硬盘或者打开的 SATA 硬盘,你应该会看到上面密密麻麻的电子元器件。固态硬盘就是靠这些元器件进行存储的。
|
||||
|
@ -111,11 +113,13 @@
|
|||
| 项目 | NTFS | exFat | ext2/3/4 | xfs |
|
||||
| -------------- | ---- | ----- | -------- | ------- |
|
||||
| Windows 兼容性 | 好 | 好 | 不支持 | 不支持 |
|
||||
| Linux 兼容性 | 中 *i*| 中 *i* | 好 | 好 |
|
||||
| Linux 兼容性 | 中 _i_| 中 _i_ | 好 | 好 |
|
||||
| MacOS 兼容性 | 不支持 | 好 | 不支持 | 不支持 |
|
||||
|
||||
> *i*: Linux内核仅支持读取,写入需要使用第三方软件包。但大部分发行版已经自带,不过Ubuntu并没有自带exfat支持。
|
||||
> _i_: Linux 内核仅支持读取,写入需要使用第三方软件包。但除了 Ubuntu 以外的大部分发行版已经自带 ntfs 和 ExFAT 的驱动。
|
||||
|
||||
---
|
||||
|
||||
> 无论如何,使用 UEFI 启动时,其 EFI 分区必须是 FAT(32)格式的。
|
||||
|
||||
## 虚拟内存/内存盘
|
||||
|
@ -131,5 +135,6 @@
|
|||
好了,关于硬盘,暂时说到这里,接下来要讲的是电脑的一个非常重要的部件——主板。
|
||||
|
||||
---
|
||||
|
||||
> 原文: [netman](http://www.study-area.org/compu/compu_storage.htm)</br>
|
||||
> study-area-cn
|
||||
|
|
|
@ -16,10 +16,11 @@
|
|||
|
||||
## 和电脑交个朋友
|
||||
|
||||
学习电脑就像交朋友一样,贵在相处了解和真诚付出。 如果有一天您发现电脑不跟您合作了,可不要生它的气哦。其实它也很想帮您解决问题(这是电脑的终身使命),只是,有时侯它不能了解您(或程序)所交给它的信息而已。 比方说您在键盘上输入:1+1=? ,您很有可能得到 Bad command or file name 的回应。 呵,知道老师为什么说电脑是蠢东西了吧?^_^ 更有甚者,若你把它的思维绕了,它还会发呆呢,也就是我们说的'宕机'了(千年虫 —— Y2K bug,就是最好的例子了)。
|
||||
学习电脑就像交朋友一样,贵在相处了解和真诚付出。 如果有一天您发现电脑不跟您合作了,可不要生它的气哦。其实它也很想帮您解决问题(这是电脑的终身使命),只是,有时侯它不能了解您(或程序)所交给它的信息而已。 比方说您在键盘上输入:1+1=? ,您很有可能得到 Bad command or file name 的回应。 呵,知道老师为什么说电脑是蠢东西了吧?^\_^ 更有甚者,若你把它的思维绕了,它还会发呆呢,也就是我们说的'宕机'了(千年虫 —— Y2K bug,就是最好的例子了)。
|
||||
|
||||
那么,我们要如何交这朋友呢?慢慢来,由基础开始。继续看下面的文章相信对您有所帮助。
|
||||
|
||||
---
|
||||
|
||||
> 原文: [netman](http://www.study-area.org/compu/compu_defi.htm)</br>
|
||||
> study-area-cn
|
||||
|
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 526 KiB After Width: | Height: | Size: 526 KiB |
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 3.2 MiB |
|
@ -0,0 +1,79 @@
|
|||
# 备份
|
||||
|
||||
## 概念
|
||||
|
||||
备份是计算机使用中非常重要的操作。原则上来说,进行任何重大修改(比如更新系统、更新生产环境中的软件。)之前都需要备份。
|
||||
|
||||
按照备份的范围来分,常用的备份方式有以下几种:
|
||||
|
||||
- 全量备份:指把硬盘等存储介质中的所有文件**一次性完整复制**到其他介质上。
|
||||
- 增量备份:对上一次备份后的数据后修改的数据进行备份。
|
||||
- 差异备份:在完整备份之后,修改备份中与当前数据有差别的数据。
|
||||
- 选择性备份:仅对系统中的一部分进行备份。
|
||||
|
||||
按照备份的时间来分,常用的备份方式分为以下两种:
|
||||
|
||||
- 计划性备份:比如一周一备份、一天一备份等。
|
||||
- 操作前备份:在重大操作前备份,以便在操作后出现问题时可以快速回滚,减少损失。
|
||||
|
||||
> 有的人可能会说:“我们自己用电脑,备份有什么意义呢?” 2017年,勒索病毒WannaCry的肆虐,为我们敲响了警钟。这个病毒用AES加密用户电脑上的所有文件,以勒索钱财。没有人知道,下一个被勒索的,究竟是不是自己,我们只能通过备份将损失降到最低。
|
||||
|
||||
## 备份软件
|
||||
|
||||
Linux下,常用的备份工具有以下几种:
|
||||
|
||||
- dd:直接克隆整个分区。
|
||||
- tar:将需要备份的文件打包压缩。
|
||||
- rsync:可以进行增量备份、全量备份以及可以将备份传输到远程。
|
||||
|
||||
### `dd`命令
|
||||
|
||||
> 这个小节的内容,了解即可。
|
||||
|
||||
备份整块`sda`硬盘到`sdb`只需要以下命令。
|
||||
|
||||
```sh
|
||||
dd if=/dev/sda of=/dev/sda
|
||||
```
|
||||
|
||||
> 注意!这里的sdb物理容量必须大于sda!并且sdb上所有的文件都会被覆盖!**无法找回!**
|
||||
|
||||
### `tar`命令
|
||||
|
||||
Linux中,可以直接使用`tar`打包需要的文件,比如备份`/etc`:
|
||||
|
||||
```sh
|
||||
cd /
|
||||
sudo tar -zcvf etc_backup.gz etc
|
||||
```
|
||||
|
||||
## `rsync`命令
|
||||
|
||||
在之前的章节中,我们创建了一个新的虚拟磁盘。现在,让我们挂载它到`/mnt/backup`进行备份。
|
||||
|
||||
> 如果你完成了之前的课后作业,那么sdb上应该有唯一的一个xfs分区占满了整个磁盘。如果你已经持久挂载了磁盘,本步骤可以跳过。
|
||||
|
||||
```sh
|
||||
sudo mkdir /mnt/backup
|
||||
sudo mount /dev/sdb1 /mnt/backup
|
||||
sudo mkdir /mnt/backup/etc
|
||||
```
|
||||
|
||||
现在,我们使用`rsync`命令,将虚拟磁盘中的文件复制到新的虚拟磁盘上。
|
||||
|
||||
```sh
|
||||
sudo rsync -avz /etc /mnt/backup/etc
|
||||
```
|
||||
|
||||
`rsync`命令的参数如下:
|
||||
|
||||
- `-a`:递归模式,表示以递归方式传输文件,并保持所有文件属性。
|
||||
- `-v`:显示详细输出。
|
||||
- `-z`:压缩传输的数据。
|
||||
- `/etc`:源文件。
|
||||
- `/mnt/backup/etc`:目标文件。
|
||||
|
||||
`rsync`命令会自动判断源文件和目标文件是否相同,如果相同,则不会进行复制。如果不同,则会复制不同的文件。
|
||||
|
||||
> `rsync`命令是一个非常强大的命令,它不仅可以进行文件复制,还可以联网进行文件的同步、文件的删除等操作。如果你需要备份大量的文件,那么`rsync`命令是一个非常好的选择。
|
||||
|
|
@ -0,0 +1,473 @@
|
|||
# 磁盘分区以及文件系统
|
||||
|
||||
我们之前学习了关于硬盘的知识,并且知道了在硬盘上还有着文件系统。那么就让我们来学习在 Linux 上的硬盘分区以及文件系统的知识吧!
|
||||
|
||||
> 本章东西较多,请做好心理准备,建议学一部分练一部分,边看边练。
|
||||
|
||||
## 基本知识
|
||||
|
||||
### 磁盘设备
|
||||
|
||||
我们前文提到了 Linux 上的 `/dev` 是大部分设备对应的文件,当然也包括磁盘设备。
|
||||
|
||||
> 在 Linux 上,不仅磁盘本身是文件,磁盘的每一个分区也都对应着一个文件。
|
||||
|
||||
在 Linux 上常见的磁盘设备有以下几种:
|
||||
|
||||
> 在下面的内容中:
|
||||
>
|
||||
> - `X`: 表示 `a` - `z` 的小写字母
|
||||
> - `@`: 表示从 0 开始的自然数
|
||||
|
||||
- `/dev/sdX`: 最常见的一种磁盘类型,你通常见到的也是这种,例如 `/dev/sda`。
|
||||
- `/dev/sdX@` 表示这个磁盘的每一个分区。
|
||||
- `/dev/nvme@n@`: 表示 NVME 上的磁盘,第一个数字表示设备名,第二个是命名空间,通常是 1,例如 `/dev/nvme0n1`
|
||||
- `/dev/nvme@n@p@` 表示这个磁盘的每一个分区。
|
||||
- `/dev/loop@`: 被称为回环设备,为模拟出来的,通常作为 `img` 等镜像文件的挂载点,可以是一个硬盘也可以仅仅是一个分区,例如 `/dev/loop0`。
|
||||
- `/dev/loop@p@` 表示作为整个磁盘时的每一个分区。
|
||||
- `/dev/mmblk@`: 为嵌入式的存储,这种比较少见,我们一般不会遇到。
|
||||
|
||||
### 文件系统
|
||||
|
||||
Linux 兼容大部分的文件系统(前面有提到一个表格):
|
||||
| 项目 | NTFS | exFat | ext2/3/4 | xfs |
|
||||
| -------------- | ---- | ----- | -------- | ------- |
|
||||
| Windows 兼容性 | 好 | 好 | 不支持 | 不支持 |
|
||||
| Linux 兼容性 | 中 | 中 | 好 | 好 |
|
||||
| MacOS 兼容性 | 不支持 | 好 | 不支持 | 不支持 |
|
||||
|
||||
通常可以被 Linux 用作系统磁盘的文件系统格式的是:
|
||||
|
||||
- `ext2/3/4`
|
||||
|
||||
扩展日志文件系统,是最常见的系统磁盘的文件系统,也可以用作数据磁盘。现在 ext2/3 已经用的比较少了。
|
||||
|
||||
- `xfs`
|
||||
|
||||
一种高性能的文件系统,被 RockyLinux 等新的 Linux 发行版用作默认文件系统。
|
||||
|
||||
- `btrfs`
|
||||
|
||||
新兴的文件系统,自带了快照和压缩等十分方便的功能,不过目前还不太稳定。
|
||||
|
||||
还有一些其它的被 Linux 支持的格式:
|
||||
|
||||
- `ntfs`
|
||||
|
||||
是 Windows 上的默认文件系统,可以使用 `ntfs-3g` 包实现读取和写入。但是在 Linux 下有权限问题,并且不太稳定。
|
||||
|
||||
- `exfat/fat32`
|
||||
|
||||
比较老的文件系统,在 Linux 上也需要额外的包才可以写入。
|
||||
|
||||
还有一些特殊用途的文件系统:
|
||||
|
||||
- `swap`
|
||||
|
||||
交换分区,不可被用于存储数据,前面提到过。
|
||||
|
||||
## 在虚拟机上创建硬盘
|
||||
|
||||
我们要学习如何分区,那么就肯定要有一个硬盘。如果你按照上文的方法创建了虚拟机,请按照你使用的虚拟机软件,选择下面的文章完成创建虚拟磁盘的操作,然后再回到本篇继续学习。
|
||||
|
||||
1. [在 VirtualBox 上创建虚拟磁盘](./diskpart_and_filesystem/create_disk_on_vbox.md)
|
||||
2. [在 VMWare Workstation 上创建虚拟磁盘](./diskpart_and_filesystem/create_disk_on_vmware.md)
|
||||
|
||||
## 使用命令行工具进行分区
|
||||
|
||||
进行分区需要具有 `root` 权限!
|
||||
|
||||
分区是一个非常危险的操作!进行操作前最好备份!如果你要调整系统磁盘分区,可以使用一个恢复镜像,例如一个 Linux 的安装磁盘或是 LiveCD。所以最好不要删除你安装系统的ISO文件(或者是U盘)!
|
||||
|
||||
> 除了下文的 `parted` 和 `fdisk` 等工具,还有 `gdisk`(命令行)、`cfdisk`(命令行,方向键交互)、`gparted` 等工具,本文在此不过多介绍。
|
||||
>
|
||||
> `parted` 和 `fdisk` 已经被绝大多数 Linux 发行版包含,你通常无需额外安装。但是可能会有少部分发行版缺少其中任何一个软件包。
|
||||
|
||||
### parted 和 fdisk 的基本命令格式
|
||||
|
||||
> 下面标注有 parted 和 fdisk 的命令,表示这个命令需要在对应工具的命令行模式下执行
|
||||
|
||||
#### parted
|
||||
|
||||
parted 有两种使用模式,一种是参数模式,一种是命令行模式。这两种模式区别不大,执行的命令都是相同的。下文均以命令行模式(非交互式)下的命令为展示。
|
||||
|
||||
```bash
|
||||
# 参数模式
|
||||
parted [设备文件] [你要执行的命令]
|
||||
|
||||
# 命令行模式
|
||||
parted [设备文件]
|
||||
# 然后再输入你的命令,输入完成后和终端一样需要回车
|
||||
# 可使用 'quit'('q') 命令退出
|
||||
```
|
||||
|
||||
parted 的命令也有两种模式:交互模式和非交互模式。
|
||||
|
||||
- 交互模式就是输入一个命令,后面不带任何的参数,然后程序会要求你输入这个命令的每一个参数。
|
||||
- 非交互模式就是把这个命令的参数都以空格的形式填写在这个命令后,你不需要填写任何内容。
|
||||
|
||||
#### fdisk
|
||||
|
||||
fdisk 只有一种模式:交互式命令行模式。
|
||||
|
||||
fdisk 的使用和 parted 的使用方式几乎差不多,除了命令不同。
|
||||
|
||||
fdisk 可以使用 `q` 退出。
|
||||
|
||||
注意:fdisk 默认不会保存到磁盘,需要执行 `w` 命令才会真正写入磁盘。引用软件的提示: **使用写入命令前请三思**
|
||||
|
||||
下面的命令中 `<Enter>` 表示无需输入任何内容直接回车即可。
|
||||
|
||||
### 查看所有硬盘
|
||||
|
||||
当我们需要进行分区时,我们肯定要知道有哪些硬盘。下面的任意一个指令均可:
|
||||
|
||||
- `lsblk`
|
||||
|
||||
执行效果: ~~(个人最喜欢用的一种)~~
|
||||
|
||||
```text
|
||||
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
|
||||
sda 8:0 0 119.2G 0 disk
|
||||
├─sda1 8:1 0 800M 0 part
|
||||
├─sda2 8:2 0 79.2G 0 part
|
||||
└─sda3 8:3 0 845M 0 part
|
||||
sdb 8:16 0 931.5G 0 disk
|
||||
├─sdb1 8:17 0 500M 0 part /boot
|
||||
├─sdb2 8:18 0 524M 0 part [SWAP]
|
||||
├─sdb3 8:19 0 60G 0 part /
|
||||
sdc 8:32 0 238.5G 0 disk
|
||||
├─sdc1 8:33 0 174.4G 0 part
|
||||
├─sdc2 8:34 0 32M 0 part
|
||||
└─sdc3 8:35 0 60G 0 part
|
||||
sr0 11:0 1 1024M 0 rom
|
||||
```
|
||||
|
||||
最左侧一列是设备名称,第三列是大小,第五列是设备的类型,第六列是挂载点(下面会说到)。
|
||||
|
||||
- `fdisk -l`
|
||||
|
||||
执行效果:
|
||||
|
||||
```text
|
||||
...
|
||||
|
||||
Disk /dev/sdb:931.51 GiB,1000204886016 字节,1953525168 个扇区
|
||||
磁盘型号:WDC WD10EZEX-22M
|
||||
单元:扇区 / 1 * 512 = 512 字节
|
||||
扇区大小(逻辑/物理):512 字节 / 4096 字节
|
||||
I/O 大小(最小/最佳):4096 字节 / 4096 字节
|
||||
磁盘标签类型:gpt
|
||||
磁盘标识符:7690BA4B-E69F-4431-B4E6-XXXXXXXXXXXX
|
||||
|
||||
设备 起点 末尾 扇区 大小 类型
|
||||
/dev/sdb1 2048 1026047 1024000 500M EFI 系统
|
||||
/dev/sdb2 1026048 2099199 1073152 524M Linux swap
|
||||
/dev/sdb3 2099200 127928319 125829120 60G Linux 文件系统
|
||||
/dev/sdb4 127928320 1282436494 1154508175 550.5G Microsoft 基本数据
|
||||
/dev/sdb5 1282437120 1953523711 671086592 320G Linux 文件系统
|
||||
|
||||
...
|
||||
```
|
||||
|
||||
每一个磁盘都会有这么一些内容,第一行有磁盘的设备文件和大小,下面是磁盘的其它信息,可以清晰看到磁盘的每一个分区的大小和类型。
|
||||
|
||||
- `df -h`
|
||||
|
||||
执行效果:
|
||||
|
||||
```text
|
||||
文件系统 大小 已用 可用 已用% 挂载点
|
||||
dev 5.7G 0 5.7G 0% /dev
|
||||
run 5.7G 1.7M 5.7G 1% /run
|
||||
efivarfs 128K 89K 35K 73% /sys/firmware/efi/efivars
|
||||
/dev/sdb3 59G 33G 24G 59% /
|
||||
tmpfs 5.7G 258M 5.5G 5% /dev/shm
|
||||
...
|
||||
tmpfs 5.7G 39M 5.7G 1% /tmp
|
||||
/dev/sdb5 320G 35G 285G 11% /mnt/xdata
|
||||
/dev/sdb1 499M 174M 326M 35% /boot
|
||||
/dev/sdb4 551G 90G 461G 17% /mnt/data
|
||||
```
|
||||
|
||||
### 创建分区表
|
||||
|
||||
如前面所说,我们刚刚添加了一块硬盘,需要创建一个分区表才能进行分区。创建分区表需要使用 `parted` 或 `fdisk` 命令。
|
||||
|
||||
parted
|
||||
|
||||
```bash
|
||||
mklabel [gpt/mbr]
|
||||
```
|
||||
|
||||
fdisk
|
||||
|
||||
```bash
|
||||
g # 创建 GPT 分区表
|
||||
# 或者
|
||||
o # 创建 MBR 分区表
|
||||
```
|
||||
|
||||
如果没有特殊需求建议选择 GPT 分区表。
|
||||
|
||||
### 创建新分区
|
||||
|
||||
有了分区表,我们可以开始分区了。
|
||||
|
||||
parted
|
||||
|
||||
```bash
|
||||
mkpart primary [文件系统] [起始位置] [结束位置]
|
||||
```
|
||||
|
||||
> 这里的 primary 表示分区类型,一般GPT分区表下无需修改。
|
||||
>
|
||||
> 文件系统可以是 ext4、ext3、ext2、xfs、fat32、ntfs 等等,也可不填。
|
||||
>
|
||||
> 起始位置和结束位置可以写数字,表示扇区数,也可以写单位,如 1G 表示 1GB,
|
||||
> 也可以写百分比,如 100% 表示使用剩余的所有空间
|
||||
|
||||
fdisk
|
||||
|
||||
```bash
|
||||
n # 创建新分区
|
||||
p # 设置为主分区
|
||||
<Enter>
|
||||
<Enter> # 起始扇区号,默认会接在上一个分区后面
|
||||
+[大小] # 分区大小,可以是数字,也可以是单位,如 +1G 表示 1GB
|
||||
```
|
||||
|
||||
### 格式化分区
|
||||
|
||||
创建完分区后,我们需要对分区进行格式化,才能使用。Linux 并不像 Windows 那么贴心,会主动提示你格式化,但是也给了你更多的控制能力。
|
||||
|
||||
格式化要使用 `mkfs` 命令,但是格式是:
|
||||
|
||||
```bash
|
||||
mkfs.[文件系统] [设备文件] [更多可选参数]
|
||||
# 等价于
|
||||
mkfs -t [文件系统] [设备文件] [更多可选参数]
|
||||
```
|
||||
|
||||
注意文件系统和 mkfs 中间的 **“.”** ,如 `mkfs.ext4`等。
|
||||
|
||||
不同文件系统可以使用的参数也有些许不同。下面是一个列表:
|
||||
|
||||
- `mkfs.ext4`
|
||||
- `-L` 可以设置卷标,可以看作磁盘的名字。
|
||||
- `-N` 可以设置 inode 的大小。inode 可以看作存储文件或目录的基本信息的东西。这个参数就决定了你的最大文件的数量。
|
||||
- `-F` 强制格式化,不过只有部分版本需要。
|
||||
- `mkfs.vfat`
|
||||
> VFat 可以看作是 `fat16`、`fat32` 等数据类型的总和,默认会自动选择格式。
|
||||
- `-n` 设置卷标
|
||||
- `-F [版本]` 可以设置格式化的 `fat` 文件系统的版本,如 `16`、`32` 等。
|
||||
- `mkfs.exfat` 格式化成 `exfat`
|
||||
- `-n` 设置卷标
|
||||
- `mkfs.xfs`
|
||||
- `-L` 设置卷标
|
||||
- `-f` 强制格式化,会清空原有的分区
|
||||
- `mkfs.btrfs`
|
||||
- `-L` 设置卷标
|
||||
- `-f` 强制格式化
|
||||
> btrfs 可用的参数很多,许多参数是为 raid(一种可以将多块硬盘模拟成一块的方法) 准备的,这里就不一一列举了。
|
||||
|
||||
### 查看分区列表
|
||||
|
||||
分区完成后,我们可以使用 `parted` 或 `fdisk` 命令查看分区列表。
|
||||
|
||||
parted
|
||||
|
||||
```bash
|
||||
print
|
||||
```
|
||||
|
||||
fdisk
|
||||
|
||||
```bash
|
||||
p
|
||||
```
|
||||
|
||||
在这里我们就可以看到每个分区对应的设备文件了,一会我们要用到。
|
||||
|
||||
### 删除分区
|
||||
|
||||
如果我们不再需要一个分区,或者分区方案有误,我们可以使用 `parted` 或 `fdisk` 命令删除分区。
|
||||
|
||||
parted
|
||||
|
||||
```bash
|
||||
rm [分区号]
|
||||
```
|
||||
|
||||
fdisk
|
||||
|
||||
```bash
|
||||
d [分区号]
|
||||
```
|
||||
|
||||
这里的分区号可以使用上一条查看分区列表的方式查看,其实就是 `/dev/sdX@` 中 `@` 所对应的数字(在其它类型的磁盘中是 `p` 后面的数字)。
|
||||
|
||||
### 其它技巧
|
||||
|
||||
`parted` 和 `fdisk` 还有一些其它的技巧,下面列举了一小部分:
|
||||
|
||||
parted
|
||||
|
||||
```bash
|
||||
resizepart [分区号] [起始位置] [结束位置] # 可以修改分区的大小
|
||||
rescue [起始位置] [结束位置] # 可以查找丢失的分区
|
||||
```
|
||||
|
||||
更多的技巧这里就不一一列举了。
|
||||
|
||||
## 挂载分区
|
||||
|
||||
创建了分区,我们该如何访问呢?答案就是挂载。
|
||||
|
||||
> 事实上,Windows 中的C盘、D盘等盘符也是挂载的,只不过 Windows 会自动为我们完成。Windows 也同样支持挂载到一个目录。
|
||||
|
||||
在下面,我们称挂载的目标路径为“挂载点”。挂载点通常约定俗称使用 `/mnt` 目录下的子目录(挂载整个系统时除外)
|
||||
|
||||
### `mount` 与 `umount` 命令
|
||||
|
||||
Linux 中挂载分区可以使用 `mount` 命令,卸载分区使用 `umount` 命令。
|
||||
|
||||
> 事实上,在图形化的文件管理器中,我们可以直接点击磁盘进行挂载(需要输入 root 密码验证身份),右面向下的箭头上面还有条横线的就是卸载按钮。
|
||||
|
||||
`mount` 命令的格式如下:
|
||||
|
||||
```bash
|
||||
mount -t [文件系统] [设备文件] [挂载点]
|
||||
```
|
||||
|
||||
> `-t` 参数可以省略,Linux 会自动识别文件系统。
|
||||
>
|
||||
> `-o [挂载参数]` 可以设置挂载参数,下面会列举出来。
|
||||
|
||||
然后我们就可以使用你设置的挂载点访问磁盘了。
|
||||
|
||||
可以指定 `--mkdir` 参数,会在挂载的时候自动创建对应的文件夹。
|
||||
|
||||
`umount` 命令的格式如下:
|
||||
|
||||
```bash
|
||||
umount [挂载点/设备文件]
|
||||
```
|
||||
|
||||
### 自动挂载
|
||||
|
||||
每次开机都要手动挂载分区是一件很麻烦的事情,我们可以使用 `/etc/fstab` 文件让系统自动挂载。
|
||||
|
||||
如果你查看这个文件,你会看到以下内容(不同系统默认的内容可能不同):
|
||||
|
||||
```text
|
||||
# Static information about the filesystems.
|
||||
# See fstab(5) for details.
|
||||
|
||||
# <file system> <dir> <type> <options> <dump> <pass>
|
||||
# /dev/sda3
|
||||
UUID=25236755-bc8f-4ee4-a733-fc71ed33c408 / ext4 rw,relatime 0 1
|
||||
|
||||
# /dev/sda1
|
||||
UUID=D0EE-69A5 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2
|
||||
|
||||
# /dev/sda2
|
||||
UUID=94a6c32f-c2d2-4401-8749-689b005ac9f0 none swap defaults 0 0
|
||||
```
|
||||
|
||||
每一行代表一个挂载点,每一列代表一个参数。每一列之间应该用 `<tab>` 和一个空格分隔。通常第一条就是你的系统。
|
||||
|
||||
整理起来就是这样:
|
||||
|
||||
| 分区的UUID | 挂载点 | 文件系统的类型 | 挂载选项 | 是否自动运行 dump | 是否自动运行 fsck |
|
||||
| :-------- | :------- | :---------- | :------------ | :-------------- | :--------------- |
|
||||
| UUID=XXXX | / | ext4 | rw,relatime | 0 | 1 |
|
||||
| UUID=XXXX | /boot | vfat | rw,relatime...| 0 | 2 |
|
||||
| UUID=XXXX | none | swap | defaults | 0 | 0 |
|
||||
|
||||
其中:
|
||||
|
||||
- `#` 开头的行是注释
|
||||
- UUID 可以使用查看分区的方法查看
|
||||
- 挂载点在处理 swap 的时候需要填 `none`
|
||||
- 不同文件系统挂载选项不同,使用逗号分隔,以下是常见的选项:
|
||||
- `defaults` 默认选项
|
||||
- `ro` 只读模式
|
||||
- `rw` 读写模式,默认的挂载模式
|
||||
- `nofail` 忽略挂载时的错误,常用于可移动设备
|
||||
- dump 是一个自动备份程序,后面会使用 crontab 实现自动备份
|
||||
- fsck 是一个磁盘健康检查程序,可以自动修复错误,推荐开启,可以填写为 1
|
||||
|
||||
> 如果你在更改 fstab 文件的时候出现了问题,系统会卡死,稍等会陷入恢复模式,此时会提示你输入 root 密码,然后便可以使用 nano 或者 vim 命令编辑 fstab 文件,使用 `#` 临时注释掉出现问题的那一行再重启便可以正常进入系统了。
|
||||
|
||||
## dd 命令
|
||||
|
||||
在 Linux 中,有个非常好用的命令 `dd`,这个命令可以从一个文件或者磁盘复制到另一个文件或者磁盘。
|
||||
|
||||
基本用法如下:
|
||||
|
||||
```bash
|
||||
dd if=[输入文件/设备] of=[输出文件/设备]
|
||||
```
|
||||
|
||||
其中 `if` 和 `of` 后面可以填硬盘的设备文件,也可以填写一个 .img 文件的路径。`if` 后还可以填写 `/dev/zero`,这是一个特殊的设备文件,表示一直输出 0 (需要指定复制的大小,下面会说)。
|
||||
|
||||
> dd 命令默认不显示进度,可以通过添加 `status=progress` 参数显示进度。还可以切换到别的终端,使用 `kill -USR1 [pid]` 命令(pid 可以使用 `ps -ef | grep "[你运行dd的具体命令]"` 获取,从左往右第二列就是),此时 dd 命令就会显示一个进度。`kill` 命令后面会讲到。
|
||||
|
||||
下面是 `dd` 命令其它常用的参数:
|
||||
|
||||
- `bs=[块大小]` 指定每次复制的大小,可使用单位如 `M` 等,常配合 count
|
||||
- `count=[块个数]` 指定复制多少块,通常可设置 `bs=1M` 然后个数就是以 MB(MiB) 为单位的文件大小
|
||||
|
||||
## 回环设备
|
||||
|
||||
我们前面提到了像 `/dev/loop0` 这样的设备属于回环设备。
|
||||
|
||||
回环设备同样需要 root 才能操作。
|
||||
|
||||
回环设备通常指向一个镜像文件(如 img 格式)。要操作回环设备,我们需要使用 `losetup` 命令。
|
||||
|
||||
我们可以使用下面的命令查看空闲的loop设备(这里其实还不存在对应的设备文件):
|
||||
|
||||
```bash
|
||||
losetup -f
|
||||
```
|
||||
|
||||
会返回一个设备名,然后可以使用下面的方法进行关联:
|
||||
|
||||
```bash
|
||||
losetup [设备文件] [你的img文件]
|
||||
```
|
||||
|
||||
然后,我们可以使用上面的 `mount` 挂载回环设备。
|
||||
|
||||
要查看挂载的所有设备,可以使用
|
||||
|
||||
```bash
|
||||
losetup -a
|
||||
```
|
||||
|
||||
用完记得卸载(请先 `umount`):
|
||||
|
||||
```bash
|
||||
losetup -d [设备文件]
|
||||
```
|
||||
|
||||
## 课后作业
|
||||
|
||||
由于这章长且十分重要,所以设置以下作业:
|
||||
|
||||
1. 在虚拟机中创建一个虚拟磁盘,大小大于等于系统磁盘
|
||||
2. 给这个磁盘初始化分区表并且创建一个 xfs 分区,分区大小为整个磁盘的容量。
|
||||
3. 尝试把这个磁盘挂载到 `/mnt/test`
|
||||
4. 使用 dd 命令从 `/dev/zero` 读取,写入大小为 20MB 的空文件到 `/mnt/test/hello.img`
|
||||
5. 卸载这个磁盘
|
||||
6. 编辑 `/etc/fstab`,持久挂载这个磁盘到 `/mnt/backup` **(以后会用到)** 并重启
|
||||
7. 使用 `losetup` 挂载刚刚创建的 `/mnt/backup/hello.img` 到一个回环设备
|
||||
8. 格式化这个回环设备,并且往里写上一些留言
|
||||
9. 可以把这个制作好的 img 文件发到论坛,让其它小伙伴看看你的成果
|
||||
10. 你可以选择留下这个文件,也可以删除
|
||||
|
||||
---
|
||||
|
||||
> study-area-cn
|
After Width: | Height: | Size: 109 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 110 KiB |
After Width: | Height: | Size: 103 KiB |
After Width: | Height: | Size: 34 KiB |
|
@ -0,0 +1,55 @@
|
|||
# 在 VirtualBox 上创建虚拟磁盘
|
||||
|
||||
> 上级目录:[磁盘分区以及文件系统](../diskpart_and_filesystem.md)
|
||||
|
||||
按照上篇文件,我们接下来需要创建一个虚拟磁盘。
|
||||
|
||||
## 打开虚拟机
|
||||
|
||||
首先,打开你的 VirtualBox 并选择你的虚拟机。
|
||||
![Open VM](./assets/2.2.2.vbox.1.png)
|
||||
|
||||
## 配置磁盘
|
||||
|
||||
我们打开设置
|
||||
|
||||
![Open Settings](./assets/2.2.2.vbox.2.png)
|
||||
|
||||
在左边找到 `存储`
|
||||
![Choose Storage](./assets/2.2.2.vbox.3.png)
|
||||
|
||||
选择 `控制器: SATA`,如果你这里看不见这个选项,那么就选择 `xxx.vdi` 那一项所在的那一栏。
|
||||
![Choose Item SATA](./assets/2.2.2.vbox.4.png)
|
||||
|
||||
然后我们点击右面添加磁盘的图标
|
||||
|
||||
![Add Disk](./assets/2.2.2.vbox.5.png)
|
||||
|
||||
选择创建
|
||||
|
||||
![Create Disk](./assets/2.2.2.vbox.6.png)
|
||||
|
||||
## 创建磁盘
|
||||
|
||||
我们就来到了创建磁盘的界面。
|
||||
|
||||
我们点击最下面的 `专家模式`
|
||||
![Pro Mode](./assets/2.2.2.vbox.7.png)
|
||||
|
||||
然后我们设置磁盘大小,为了后面的学习,我们需要设置磁盘的大小 >= 原来的系统磁盘的大小。
|
||||
![Set Size](./assets/2.2.2.vbox.8.png)
|
||||
|
||||
## 完成创建
|
||||
|
||||
我们点击 `完成`,然后会来到下面的界面。我们点击 `选择`,再点击一下 `确定`
|
||||
![Finish Create](./assets/2.2.2.vbox.9.png)
|
||||
|
||||
恭喜你,磁盘创建完成!
|
||||
|
||||
---
|
||||
|
||||
请继续学习接下来的内容:[磁盘分区以及文件系统](../diskpart_and_filesystem.md)
|
||||
|
||||
---
|
||||
|
||||
> study-area-cn
|
|
@ -0,0 +1 @@
|
|||
# 在 VMWare Workstation 上创建虚拟磁盘
|
|
@ -0,0 +1,47 @@
|
|||
# 文件与路径
|
||||
|
||||
## Linux 的文件结构
|
||||
|
||||
按照前文,我们所说的 C 盘就是 `/` 了。那么,我们的 D 盘和 E 盘等等呢?它们则被系统放到了别的地方,你甚至可以自定义这些地方(其实 Windows 也可以,不过放得很深),不过一般被放在了 `/mnt`,`/run/mount` 或者 `/media/你的用户名` 下。(根据发行版和桌面环境的不同有所区别。如果你是安装上文安装的,那么应该在 `/media/你的用户名` 里面)
|
||||
|
||||
我们可以使用自带的文件管理器管理文件,就像 Windows 一样。
|
||||
|
||||
## 磁盘与挂载
|
||||
|
||||
你可能会发现一个东西:就是在根目录里,怎么还会有其它的磁盘呢?这是因为,在 Linux 系统下,所有的磁盘都需要挂载才能访问。而其它的磁盘必须挂载在根目录下。
|
||||
|
||||
之前我们说到了 Linux“一切皆文件”。我们的硬盘其实也是一个文件。其中,通常 `/dev/sd+一个小写a-z字母`是你的硬盘(也有可能是 `/dev/nvmeX`(X 是任意的数字) 或者 `/dev/mmcblkX`)。而分区是 `/dev/sd+一个小写a-z字母+X` (nvme 比较不同),如 `/dev/sdc3`。
|
||||
|
||||
我们可以使用 `lsblk` 命令查看所有的硬盘和分区。
|
||||
|
||||
但是,磁盘文件并不能直接访问,这时候我们需要挂载了。
|
||||
|
||||
如果你有一个桌面或者文件管理器,那么它就会自动帮你执行操作。点击一下你的磁盘就可以挂载了。
|
||||
|
||||
关于挂载的内容,这里就不过多讲述了,后面会提到。
|
||||
|
||||
### Linux 下的重要文件夹
|
||||
|
||||
刚装完 Linux,你会看到根目录下面有一些目录:(都不要删!)
|
||||
|
||||
- `/boot` 存放系统启动信息
|
||||
- `/dev` 大部分设备对应的文件,上文中提到了
|
||||
- `/proc` 所有的进程信息(*nix 中“一切皆文件”的思想)
|
||||
- `/lib` 存放所有的静态链接库和动态链接库。有时会有`lib64`
|
||||
- `/etc` 存放软件配置文件(其实很乱,相当于杂项)
|
||||
- `/opt` 扩展软件目录,少部分软件会装到这里
|
||||
- `/tmp` 存放一些临时文件,通常被挂载到了内存
|
||||
- `/usr` 包含系统核心文件,其中的`bin`目录包含的上述除`cd`外的所有命令,`sbin`也是(仅限 root 的命令),这两个文件夹还被映射到了根目录同名文件夹。
|
||||
- `/var` 可变动的文件(variable)
|
||||
- `/var/mail` (本地邮件信箱)
|
||||
- `/var/spool/news` (新闻组)
|
||||
- `/var/run` (程序相关文件)
|
||||
- `/var/lock` (程序锁相關)
|
||||
- `/sys` 也是一个重要的设备目录
|
||||
- `/home` 用户目录,相当于 `C:\Users`(MacOS:`/Users`)
|
||||
|
||||
到这里,相信你已经掌握了 Linux 文件系统的简单结构。
|
||||
|
||||
---
|
||||
|
||||
> study-area-cn
|
|
@ -0,0 +1,72 @@
|
|||
# GZip 与 XZ
|
||||
|
||||
上篇文章中,我们介绍了 `tar` 命令,它可以将多个文件打包成一个文件。但是,文件的总体积并没有改变。我们还提到了 `tar` 命令可以调用 `gzip` 和 `xz` 进一步压缩这个文件,使其占用更小的磁盘空间。现在我们就来看看 `gzip` 或 `xz` 命令本身吧。
|
||||
|
||||
> 这两个命令只能压缩单个文件,而不能压缩目录。
|
||||
|
||||
## GZip
|
||||
|
||||
> gzip是若干种文件压缩程序的简称,通常指GNU计划的实现,此处的gzip代表GNU zip。也经常用来表示gzip这种文件格式。gzip是一种在Linux系统中常见的命令行压缩工具。它使用DEFLATE压缩算法来减小文件的大小,使文件更易于存储和传输。
|
||||
>
|
||||
> 事实上,在许多软件中,包括在你浏览互联网的过程中,gzip已经被广泛使用。说不定,你现在正在阅读的网页就是gzip压缩过的。
|
||||
|
||||
使用 `gzip` 命令压缩的文件的后缀和前面提到的 `.tar.gz` 一样,都是 `.gz` 结尾的压缩文件。
|
||||
|
||||
下面是 `gzip` 命令的一些常用选项:
|
||||
|
||||
- `-c`:将压缩后的数据输出到终端(但是你看不懂的乱码),而不是覆盖原始文件。通常配合后面会讲到的 `>` 与 `|` 使用。
|
||||
- `-r`:递归压缩目录,包括子目录中的文件。注意:这里的递归是对每一个文件单独压缩,而不是对整个目录压缩成一个文件。
|
||||
- `-v`:显示压缩或解压缩的详细信息。
|
||||
- `-d`:解压缩文件。`gunzip` 命令等同于 `gzip -d`。
|
||||
- `-f`:强制压缩或解压缩,会覆盖原有的文件。
|
||||
- `-k`:不删除原始文件。
|
||||
- `-1` 到 `-9`:表示压缩等级,`-1` 表示最低压缩等级,速度快,`-9` 表示最高压缩等级,压缩率高。默认是 `-6`。
|
||||
|
||||
> `gzip` 命令默认会删除原始文件,所以使用 `-f` 选项可以强制保留原始文件。
|
||||
|
||||
例如,我们可以使用以下命令来压缩一个文件:
|
||||
|
||||
```bash
|
||||
gzip file.txt
|
||||
```
|
||||
|
||||
这将会生成一个名为 `file.txt.gz` 的压缩文件,原始的 `file.txt` 文件将被删除。
|
||||
|
||||
要解压缩一个 `gzip` 压缩的文件,可以使用下面的命令:
|
||||
|
||||
```bash
|
||||
gzip -d file.txt.gz
|
||||
```
|
||||
|
||||
> 之前学习的 `tar` 命令的 `-z` 选项就等价于先用 tar 命令打包,再执行一遍 gzip 命令。
|
||||
|
||||
## XZ
|
||||
|
||||
> xz是一种压缩文件格式,采用LZMA SDK压缩,目标文件较gzip压缩文件(.gz或)小30%,较.bz2小15%。
|
||||
>
|
||||
> 前段时间 XZ 命令被爆出存在后门,差一点就进入了正式的发行版,这次漏洞如果成功会危害到数以万计的 Linux 设备,但成功被开源社区的人发现 ~~(还是因为SSH程序启动慢了0.5秒)~~ ,这也侧面体现出了XZ应用的广泛与 Linux 社区支持的安全性。
|
||||
|
||||
使用 `xz` 命令压缩的文件的后缀和前面提到的 `.tar.xz` 一样,都是 `.xz` 结尾的压缩文件。
|
||||
|
||||
`xz` 的基本选项和 `gzip` 基本一致,但是提供了以下几个提高性能的额外选项:
|
||||
|
||||
- `-T <线程数>` 可以使用多线程进行压缩,提高压缩速度。
|
||||
- `-e` 可以使用更多的时间来提高压缩率
|
||||
|
||||
例如,我们可以使用以下命令来压缩一个文件:
|
||||
|
||||
```bash
|
||||
xz file.txt
|
||||
```
|
||||
|
||||
这将会生成一个名为 `file.txt.xz` 的压缩文件,原始的 `file.txt` 文件将被删除。
|
||||
|
||||
要解压缩一个 `xz` 压缩的文件,可以使用下面的命令:
|
||||
|
||||
```bash
|
||||
xz -d file.txt.xz
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
> study-area-cn
|
|
@ -0,0 +1,271 @@
|
|||
# 文件权限管理
|
||||
|
||||
## 用户?用户组?
|
||||
|
||||
### 多用户操作系统的概念
|
||||
|
||||
不同于Windows这种基本上是单用户的操作系统,而Linux这种Unix-like系统因为是集成了Unix概念的原因,所以是实打实的多用户多任务分时操作系统。
|
||||
|
||||
Unix刚发明的时候,电脑十分笨重且昂贵,一台电脑不可能让一个用户独占,必须同时分给多个用户使用。即便是最基本的电脑也能分出32个终端同时使用。这时候,完善的用户与权限的管理就是十分必要的了。
|
||||
|
||||
Unix-like 系统的用户被组织成了一个类树状结构,看起来就像这样:
|
||||
|
||||
```text
|
||||
All Users
|
||||
|- root
|
||||
| |- root
|
||||
|
|
||||
|- wheel
|
||||
|- manager1
|
||||
|- user1
|
||||
```
|
||||
|
||||
### UID & GID
|
||||
|
||||
每个用户都有一个独一无二的编号,称作`UID`。每个用户组也有一个独一无二的编号,称为`GID`。
|
||||
|
||||
Unix-like使用UID而不是用户名区分用户,如果你试着把两个账户的UID互相调换,你会神奇的发现,这两个用户的权限和所拥有的文件也被互换了。
|
||||
|
||||
UID的各个号段都已经被预先分配好了,分配如下:- 0 root,权限最高的用户 - 1-999 系统服务保留UID,下分两种 - 1-200 发行版自带软件所需帐号的UID - 201-999 用户自行创建的(或用户所安装软件创建的)账户的UID - 1000-60000 普通账户
|
||||
|
||||
除了root意外,其他账户的权限基本没有区别。
|
||||
|
||||
GID基本就是用户组的ID,此处不再赘述。
|
||||
|
||||
### `/etc/passwd`
|
||||
|
||||
所有用户的列表存储在`/etc/passwd`中,这个文件在传统的Unix系统中同样存储所有用户的密码,但是现在密码的存储已经分到了`/etc/shadow`中,让我们一起来看看这个两个文件的结构吧。
|
||||
|
||||
当你通过命令查看`/etc/passwd`的内容时,你应该会看到类似下面的内容:
|
||||
|
||||
```text
|
||||
root:x:0:0:root:/root:/bin/bash
|
||||
bin:x:1:1:bin:/bin:/sbin/nologin
|
||||
// ...
|
||||
hmtsai:x:1000:1000:hmtsai:/home/hmtsai:/bin/bash
|
||||
vboxadd:x:979:1::/var/run/vboxadd:/bin/false
|
||||
```
|
||||
|
||||
> 注:查看文件更推荐使用`cat`命令,而不是各类编辑器,因为有些文件在被写入之后会出一些问题。
|
||||
|
||||
这个文件每行分为几个部分,格式如下:
|
||||
|
||||
```text
|
||||
用户名:密码:UID:GID:其他信息:家目录位置:登录Shell
|
||||
```
|
||||
|
||||
密码字段现在有三种可能性:- `x`表示密码在`/etc/shadow`中 - 留空表示密码为空,无需密码即可登录 - `!`表示该账户已经被禁用,无法登录
|
||||
|
||||
其他信息默认存储用户名,这个也可以存储其他信息,但是现在很少用到。
|
||||
|
||||
登录Shell指的是该账户登录后执行的程序,默认为`/bin/bash`
|
||||
|
||||
你可能会发现,有的用户的登录Shell是`/bin/nologin`或`/bin/false`,这代表这些用户不能登录。
|
||||
|
||||
> 你可以在终端里面执行`nologin`,会发现他会提示“该用户无法登录”,而`false`只是简单地返回一个错误返回值。
|
||||
>
|
||||
> 有关Shell的知识我们在后面会系统介绍,简单来说,Shell就是一个让用户交互来执行操作的程序。
|
||||
|
||||
### root用户
|
||||
|
||||
root,顾名思义,就是“根”,它代表了Unix-like系统中的最高权限,他的UID是0,因为他是Unix-like系统中的第一个用户。
|
||||
|
||||
root有的时候也被称为“超级用户”,这更表明了root在Unix-like系统中最高权限的地位。
|
||||
|
||||
> 虽然用root进行操作很方便,但是我们还是更推荐使用其他的普通用户,避免误操作导致系统GG。
|
||||
|
||||
## 所有者?同用户组?其他人?
|
||||
|
||||
### 所有者
|
||||
|
||||
文件的所有者默认是创建文件的人,一般来说也是对文件有最大权限的人。
|
||||
|
||||
所有者权限意义在于,你可以把像日记本这种较为隐私的信息设置为仅可自己读写,其他人只有读取的权限,这样就能达到防止篡改的目的。
|
||||
|
||||
### 同用户组
|
||||
|
||||
同用户组的权限设置在协同工作的时候比较有用,比如共同开发一个项目,我们就可以将这个项目文件夹的文件的权限设置为同用户组可以读写,这样就可以方便共同开发。
|
||||
|
||||
### 其他人
|
||||
|
||||
字面意思,不再赘述。
|
||||
|
||||
但是,由于`root`是系统的最高权限,所以`root`对所有文件都拥有读写的权限。
|
||||
|
||||
## 文件管理命令
|
||||
|
||||
### `ls`命令
|
||||
|
||||
之前对于`ls`只是简单介绍,接下来,我们将要仔细介绍`ls`的各个常用参数。
|
||||
|
||||
- `-a`参数,a就是all的意思,代表输出所有文件,包括隐藏文件。
|
||||
- `-l`参数,l是long list的意思,即长列表。
|
||||
|
||||
输出类似下面这样。
|
||||
|
||||
```text
|
||||
总计 96
|
||||
drwxr-xr-x 2 hmtsai hmtsai 4096 7月 4日 09:49 公共
|
||||
drwxr-xr-x 2 hmtsai hmtsai 4096 7月 4日 09:49 模板
|
||||
drwxr-xr-x 3 hmtsai hmtsai 4096 7月 9日 10:38 视频
|
||||
drwxr-xr-x 3 hmtsai hmtsai 4096 7月15日 20:03 图片
|
||||
drwxr-xr-x 4 hmtsai hmtsai 4096 7月10日 13:32 文档
|
||||
drwxr-xr-x 2 hmtsai hmtsai 4096 7月16日 19:20 下载
|
||||
drwxr-xr-x 2 hmtsai hmtsai 4096 7月 4日 09:49 音乐
|
||||
drwxr-xr-x 2 hmtsai hmtsai 4096 7月 4日 09:49 桌面
|
||||
```
|
||||
|
||||
- `-d`参数,d表示direoctry,表示仅列出目录(不列出目录中的文件)。
|
||||
|
||||
### `less`命令
|
||||
|
||||
`less`用来分页查看文件内容,它从标准输入流或者指定的文件读入内容,然后分页在屏幕上显示。
|
||||
|
||||
> 什么是标准输入流呢?实际上就是`/dev/stdin`这个文件而已,与之对应的有标准输出和标准错误,分别是`/dev/stdout`和`/dev/stderr`.
|
||||
|
||||
### `chown`命令
|
||||
|
||||
chown命令光看名字就知道他是干什么的,ch就是change嘛,own自然就是owner,所有者嘛。连起来,就是修改所有者的意思啦!
|
||||
|
||||
但是,光知道是干什么的可没有用,要想真正的用起来,还得知道这命令的格式之类的,接下来我们就来介绍一些常用的格式和参数吧!
|
||||
|
||||
```text
|
||||
用法:/usr/bin/chown [选项]... [所有者][:[组]] 文件...
|
||||
```
|
||||
|
||||
也就是如果我想要吧一个名叫`foo`的文件的所有者变为`wheel`组的`hmtsai`,我就得执行下面的命令:
|
||||
|
||||
```sh
|
||||
chown hmtsai:wheel foo
|
||||
```
|
||||
|
||||
如果你不想关心用户组的话,也可以直接执行:
|
||||
|
||||
```sh
|
||||
chown hmtsai foo
|
||||
```
|
||||
|
||||
`chown`这命令还有一些比较有意思的参数:
|
||||
|
||||
#### `-R`:递归操作文件或目录
|
||||
|
||||
> 首先,在主目录创建一些文件,来让我们继续学习这些命令。
|
||||
>
|
||||
> ```sh
|
||||
> mkdir foo1
|
||||
> cd foo1
|
||||
> touch bar1
|
||||
> mkdir test_chown
|
||||
> cd test_chown
|
||||
> touch bar2
|
||||
> touch bar3
|
||||
> ```
|
||||
>
|
||||
> 接下来,返回家目录:
|
||||
>
|
||||
> ```sh
|
||||
> cd ~
|
||||
> ```
|
||||
|
||||
指定`-R`选项后,将会遍历目录下的每一个文件(包括子目录下的文件),并执行指定的操作。
|
||||
|
||||
#### `-v`(`--verbose`)打印出更详细的信息
|
||||
|
||||
`-R`选项一般配合`-v`选项使用,毕竟递归操作属于较为危险的操作,最好保留详细的日志信息。
|
||||
|
||||
让我们观察一下这些选项会导致的结果,比如把这些文件和目录的所有者从`hmtsai`组的`hmtsai`改为`wheel`组的`hmtsai`用户试试?
|
||||
|
||||
```sh
|
||||
chown -Rv hmtsai:wheel foo1
|
||||
```
|
||||
|
||||
你将看见以下输出信息:
|
||||
|
||||
```text
|
||||
'foo1/bar1' 的所有者已从 hmtsai:hmtsai 更改为 hmtsai:wheel
|
||||
'foo1/test_chown/bar3' 的所有者已从 hmtsai:hmtsai 更改为 hmtsai:wheel
|
||||
'foo1/test_chown/bar2' 的所有者已从 hmtsai:hmtsai 更改为 hmtsai:wheel
|
||||
'foo1/test_chown' 的所有者已从 hmtsai:hmtsai 更改为 hmtsai:wheel
|
||||
'foo1' 的所有者已从 hmtsai:hmtsai 更改为 hmtsai:wheel
|
||||
```
|
||||
|
||||
> 与`chown`命令类似的还有`chgrp`命令,不过专门用于修改文件的用户组属性,这里不再赘述,可以通过`chgrp --help`来查看详细的用法。
|
||||
|
||||
### `chmod` 命令
|
||||
|
||||
`chmod`命令用于修改文件的“模式”(可以直接理解为权限)。主要有两种用法:
|
||||
|
||||
1. `chmod [选项]... 模式[,模式]... 文件...`
|
||||
2. `chmod [选项]... 八进制模式 文件...`
|
||||
|
||||
#### 普通模式格式
|
||||
|
||||
第一种用法中的“模式”由三个部分组成,如下表:
|
||||
|
||||
|操作对象|操作|权限|
|
||||
|--------|--------|--------|
|
||||
|u,g,o|+,-|r,w,x|
|
||||
|
||||
这里面的u代表user(所有者),g代表group(同用户组),o代表others(其他人)。操作无非就是两种——增加和减少。权限三种:读取,写入,执行。
|
||||
|
||||
> 文件的执行很好理解,但是目录的执行权限就比较特殊了,它代表的是“用户进入目录的权限”。但是不能进入目录不代表用户不能访问目录中的文件,用户仍然可以通过完整的路径访问文件就是了。
|
||||
|
||||
比如,我想要把`foo1`目录的权限设置为仅文件所有者可以执行、读取和写入,我们可以使用如下命令:
|
||||
|
||||
```sh
|
||||
chmod go-rwx foo1
|
||||
```
|
||||
|
||||
这时候再使用`ls -l`命令查看`foo1`目录的权限就可以看到g,o的所有权限都被取消了:
|
||||
|
||||
```text
|
||||
drwx------ 3 hmtsai wheel 4096 7月26日 18:33 foo1
|
||||
```
|
||||
|
||||
接下来让我们考虑一个其他场景——如果我需要为不同的用户类别设置不同的权限怎么办?`chmod`的开发者们也考虑到了这个问题,于是我们可以通过逗号同时设置多个类别用户的权限。
|
||||
|
||||
比如,让`foo1`文件夹同用户组可以读写进入,其他人只可读取进入怎么样?
|
||||
|
||||
```sh
|
||||
chmod g+rwx,o+rx foo1
|
||||
```
|
||||
|
||||
再用`ls -l`命令去看,`foo1`目录的权限又变化了:
|
||||
|
||||
```text
|
||||
drwxrwxr-x 3 hmtsai wheel 4096 7月26日 18:33 foo1
|
||||
```
|
||||
|
||||
> 有些眼尖的同学可能会发现,目录的权限前面多了一个`d`,这是代表该权限所对应的是目录的象征,是`direoctry`的简写,很多软件也是这样区分目录和文件的!
|
||||
|
||||
#### 八进制模式格式
|
||||
|
||||
其实八进制模式也不是很难,只不过每个权限变成了三个数字相加的和,如下表所示:
|
||||
|
||||
|r|w|x|
|
||||
|-|-|-|
|
||||
|4|2|1|
|
||||
|
||||
八进制模式主要用于快速修改模式。比如,我想让一个文件的模式变成rwxrwxrwx,只需要`chmod 777 file`,而不是`chmod ugo+rwx file`。
|
||||
|
||||
> 为什么是4,2,1这三个数字呢?这是因为他们的组合能够不重,不信你试试看。
|
||||
>
|
||||
> 还有一个比较有意思的格式叫做“参考模式”,非常简单,格式就是`chmod [选项]... --reference=参考文件 文件...`。~~这个主要在懒得看模式的时候用(划掉)~~。因为比较简单,所以这里不再赘述。
|
||||
|
||||
#### 参数
|
||||
|
||||
`chmod`的参数与`chown`比较类似,于是在此不再赘述,详情可以通过`chmod --help`了解。
|
||||
|
||||
> 几乎所有命令都有一个`--help`参数,可以通过这个参数大概了解这个命令的用法。
|
||||
|
||||
## 课后任务
|
||||
|
||||
由于这篇的内容比较复杂,于是我们建议您完成以下任务进行练习:
|
||||
|
||||
- 将`foo1`文件夹的权限设置为`drwxrwxrwx`,并将完整日志打印到屏幕上。
|
||||
- 将`test_chown`目录下的所有文件的权限设置为`755`,并且解释`755`在这里的含义,然后给出功能相同的使用字符模式的命令。
|
||||
- 递归删除`foo1`文件夹,并且打印出`rm`命令每一步的操作。(可以参考`rm`命令的手册或者`rm --help`命令的输出)
|
||||
|
||||
---
|
||||
|
||||
> study-area-cn
|
|
@ -0,0 +1,176 @@
|
|||
# `tar` 打包软件
|
||||
|
||||
在使用Linux的过程中,你可能会看见各种各样的压缩包文件,比如`tar.gz`(最常见的 tar 压缩包格式)、`tar.bz2`、`tar.xz`、`tar`等等。这些文件都可以使用`tar`命令打包。
|
||||
|
||||
> 在linux上也有些常见的图形化压缩包管理器,比如 `Ark`,但是它们远不及命令行工具的快速和稳定性。
|
||||
|
||||
tar压缩包都有一个显著的特征,文件名中都带有一个 `.tar`(tgz 等部分格式除外),但是后面的 `.gz` 等等又是什么呢?其实,tar 本身并不是一个压缩格式,它只是简单的把所有文件和文件夹打包到一起,而后面的 `.gz`、`.bz2`、`.xz` 等等才是压缩的格式。
|
||||
|
||||
> 关于其它格式的压缩包,比如`zip`、`rar`等,可以使用其它命令,比如`unzip`、`unrar`等。
|
||||
|
||||
绝大部分的linux发行版都预置了这个命令,你通常无需额外安装,直接使用便可。
|
||||
|
||||
## `tar` 命令
|
||||
|
||||
`tar`命令用于打包文件和目录,可以将多个文件和目录打包成一个文件,也可以将一个打包文件解压成多个文件和目录。
|
||||
|
||||
`tar`命令的基本语法如下:
|
||||
|
||||
```bash
|
||||
tar [选项] [文件或目录]
|
||||
```
|
||||
|
||||
下面是常见的选项:
|
||||
|
||||
- `-c`:创建新的压缩文件。
|
||||
- `-x`:解压文件。
|
||||
- `-t`:列出压缩文件中的所有文件。
|
||||
- `-z`:使用gzip压缩或解压 (`.tar.gz` 格式)。
|
||||
- `-j`:使用bzip2压缩或解压 (`.tar.bz2` 格式)。
|
||||
- `-v`:显示操作的详细信息。
|
||||
- `-f`:指定压缩包的文件名。
|
||||
- `-C`:指定解压目录。
|
||||
|
||||
上面的内容看不懂也没关系,下面会一一介绍用法。
|
||||
|
||||
## 常见用法
|
||||
|
||||
### 打包文件为 .tar.gz
|
||||
|
||||
```bash
|
||||
tar -zcvf archive.tar.gz file_or_dir1 [file_or_dir2 ...]
|
||||
```
|
||||
|
||||
上面的命令会将 `file_or_dir1`、`file_or_dir2` 等文件或者目录打包成一个名为 `archive.tar.gz` 的压缩包。
|
||||
|
||||
> 在 tar 中,是可以把多个 `-` 选项连用的,例如 `-z` 和 `-c` 可以写成 `-zc`(顺序无所谓),但是需要保证像 `-f` 这样带有参数的选项放在最后。除了 tar 命令,很多linux的基本命令都可以这么用,包括我们之前学习的 cp, ls 等命令。
|
||||
|
||||
### 解压 .tar.gz 文件
|
||||
|
||||
```bash
|
||||
tar -zxvf archive.tar.gz
|
||||
```
|
||||
|
||||
上面的命令会将 `archive.tar.gz` 压缩包解压到当前目录。
|
||||
|
||||
> 这两个用法应该和是我们平时见得最多的用法了。熟练掌握这几个用法,你就可以安装绝大部分的压缩包形式的linux软件了。
|
||||
|
||||
## 完整用法
|
||||
|
||||
接下来,我们来一起看看 tar 都有什么魔力吧。
|
||||
|
||||
> 下面会有一个常见的参数 `-v`,表示显示操作的详细信息。它会列出操作的所有文件。如果不加上这个参数,我们就看不到任何输出。当然,你也可以省略。
|
||||
|
||||
首先,我们进行压缩包操作,都要有个压缩包吧,所以下面的所有命令,都要加入 `-f 你的压缩包名字` 这个选项指定操作的压缩包文件。
|
||||
|
||||
### 压缩格式
|
||||
|
||||
我们前面提到了,tar只是个打包的格式,并不能压缩。但是,tar可以调用其它的压缩工具,比如gzip、bzip2、xz等,来对打包的文件进行压缩。
|
||||
|
||||
下面是一些常用的参数:
|
||||
|
||||
- `-z`:使用gzip压缩或解压 (`.tar.gz` 格式)。
|
||||
- `-j`:使用bzip2压缩或解压 (`.tar.bz2` 格式)。
|
||||
- `-J`:使用xz压缩或解压 (`.tar.xz` 格式)。
|
||||
|
||||
> 若列出文件,可以省略压缩格式,后面会讲到。
|
||||
|
||||
### 创建压缩包
|
||||
|
||||
要创建压缩包,我们可以使用 `-c` 选项。
|
||||
|
||||
例如上文的
|
||||
|
||||
```bash
|
||||
tar -zcvf archive.tar.gz file_or_dir1 [file_or_dir2 ...]
|
||||
```
|
||||
|
||||
就是创建一个名为 `archive.tar.gz` 的压缩包,使用 gzip 压缩格式。
|
||||
|
||||
### 列出压缩包中的文件
|
||||
|
||||
有了压缩包,我们该怎么验证,或者别人发来了一个压缩文件,我们怎么查看里面的内容呢?
|
||||
|
||||
我们可以使用 `-t` 选项。
|
||||
|
||||
```bash
|
||||
tar -ztvf archive.tar.gz
|
||||
```
|
||||
|
||||
上面的命令会列出 `archive.tar.gz` 压缩包中的所有文件。
|
||||
|
||||
### 解压压缩包
|
||||
|
||||
解压压缩包,我们可以使用 `-x` 选项。
|
||||
|
||||
例如上文的
|
||||
|
||||
```bash
|
||||
tar -zxvf archive.tar.gz
|
||||
```
|
||||
|
||||
上面的命令会将 `archive.tar.gz` 压缩包解压到当前目录。
|
||||
|
||||
> 值得注意的是,这个操作不会新建一个文件夹。所以在解压之前,建议先看一看压缩包内是否有一层文件夹。尤其是当前目录文件比较多时,容易把文件解压到错误的位置。
|
||||
|
||||
### 指定解压目录
|
||||
|
||||
如果我们需要改变解压的位置,我们可以使用 `-C` 选项,例如解压到新建的文件夹。
|
||||
|
||||
例如上文的
|
||||
|
||||
```bash
|
||||
tar -zxvf archive.tar.gz -C ./archive
|
||||
```
|
||||
|
||||
上面的命令会将 `archive.tar.gz` 压缩包解压到当前目录下的 `archive` 文件夹中。
|
||||
|
||||
### 添加文件
|
||||
|
||||
如果我们需要向压缩包中添加文件,我们可以使用 `-r` 选项。
|
||||
|
||||
例如上文的
|
||||
|
||||
```bash
|
||||
tar -rvf archive.tar.gz file_or_dir1 [file_or_dir2 ...]
|
||||
```
|
||||
|
||||
上面的命令会将 `file_or_dir1`、`file_or_dir2` 等文件或者目录添加到 `archive.tar.gz` 压缩包中。
|
||||
|
||||
### 删除文件
|
||||
|
||||
如果我们需要从压缩包中删除文件,我们可以使用 `--delete` 选项。
|
||||
|
||||
```bash
|
||||
tar -vf archive.tar.gz --delete file_or_dir
|
||||
```
|
||||
|
||||
上面的命令会从 `archive.tar.gz` 压缩包中删除 `file_or_dir`。
|
||||
|
||||
### 更新文件
|
||||
|
||||
如果我们需要更新压缩包中的文件,我们可以使用 `-u` 选项。这个选项类似于 `-r`,只不过是替换。
|
||||
|
||||
```bash
|
||||
tar -uf archive.tar.gz file_or_dir1 [file_or_dir2 ...]
|
||||
```
|
||||
|
||||
> tar 的用法很多,但是常见的用法也就那么几种。多看,多用,你很快就能掌握。
|
||||
|
||||
## 课后作业
|
||||
|
||||
tar 是一个非常强大的工具。这个命令使用十分复杂,这里也难以介绍完全。下面的课后作业可以让你基本理解这个命令:
|
||||
|
||||
1. 使用前文提到的 `nano` 新建两三个个文件,文件名和内容都随意。
|
||||
|
||||
2. 使用 tar 命令以 gzip 格式压缩到一个压缩文件。
|
||||
|
||||
3. 把这个文件发给小伙伴,当然也可以发到论坛里。
|
||||
|
||||
4. 使用 tar 命令查看并且解压这个压缩包里的文件
|
||||
|
||||
5. 使用 cat 命令,看看文件里写的是什么
|
||||
|
||||
---
|
||||
|
||||
> study-area-cn
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB |
Before Width: | Height: | Size: 166 KiB After Width: | Height: | Size: 166 KiB |
Before Width: | Height: | Size: 158 KiB After Width: | Height: | Size: 158 KiB |
Before Width: | Height: | Size: 306 KiB After Width: | Height: | Size: 306 KiB |
Before Width: | Height: | Size: 306 KiB After Width: | Height: | Size: 306 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 412 KiB After Width: | Height: | Size: 412 KiB |
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 119 KiB |
Before Width: | Height: | Size: 652 KiB After Width: | Height: | Size: 652 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 294 KiB After Width: | Height: | Size: 294 KiB |
Before Width: | Height: | Size: 312 KiB After Width: | Height: | Size: 312 KiB |
Before Width: | Height: | Size: 314 KiB After Width: | Height: | Size: 314 KiB |
Before Width: | Height: | Size: 262 KiB After Width: | Height: | Size: 262 KiB |
Before Width: | Height: | Size: 191 KiB After Width: | Height: | Size: 191 KiB |
Before Width: | Height: | Size: 218 KiB After Width: | Height: | Size: 218 KiB |
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 97 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 314 KiB After Width: | Height: | Size: 314 KiB |
Before Width: | Height: | Size: 498 KiB After Width: | Height: | Size: 498 KiB |
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 92 KiB |
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 137 KiB |
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 110 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 111 KiB After Width: | Height: | Size: 111 KiB |
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 96 KiB |
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
|
@ -4,7 +4,7 @@
|
|||
|
||||
在进行安装前我们需要去下载一份 Rocky Linux 的镜像,在[Rocky Linux 初见](../rocky_first_met.md)中有说明,此处不再赘述。
|
||||
|
||||
## 0x00 下载并安装 VirtualBox
|
||||
## 下载并安装 VirtualBox
|
||||
|
||||
我们要在虚拟机上安装 Linux,首先我们得要有个虚拟机软件。本篇文章选择了一个免费并且十分好用的虚拟机——VirtualBox。
|
||||
|
||||
|
@ -30,7 +30,7 @@
|
|||
|
||||
然后我们启动 vbox,进行下一步安装。
|
||||
|
||||
## 0x01 新建虚拟机
|
||||
## 新建虚拟机
|
||||
|
||||
软件我们有了,接下来我们要给虚拟机注入灵魂——操作系统了
|
||||
|
||||
|
@ -98,7 +98,7 @@ CPU数通常只需要填你的CPU核心数的一半就可以了。现在的电
|
|||
接下来点击`完成`就大功告成啦!
|
||||
![Finish](./assets/2.4.vbox.8.png)
|
||||
|
||||
## 0x02 设置网络
|
||||
## 设置网络
|
||||
|
||||
先不要急性子启动虚拟机,这样启动的虚拟机是没有网络的。
|
||||
|
||||
|
@ -120,7 +120,7 @@ CPU数通常只需要填你的CPU核心数的一半就可以了。现在的电
|
|||
|
||||
至此,我们终于可以启动虚拟机了!
|
||||
|
||||
## 0x03 启动虚拟机
|
||||
## 启动虚拟机
|
||||
|
||||
然后我们点击绿色的`启动`按钮
|
||||
![Start VM](./assets/2.4.vbox.13.png)
|
||||
|
@ -132,7 +132,7 @@ CPU数通常只需要填你的CPU核心数的一半就可以了。现在的电
|
|||
|
||||
接下来请继续阅读[安装 Rocky Linux](./install_rocky_linux.md)进行安装。
|
||||
|
||||
## 0x04 安装增强功能
|
||||
## 安装增强功能
|
||||
|
||||
> 注:请安装完系统再进行本段内容
|
||||
|
||||
|
@ -158,4 +158,5 @@ CPU数通常只需要填你的CPU核心数的一半就可以了。现在的电
|
|||
然后重启虚拟机,大功告成
|
||||
|
||||
---
|
||||
|
||||
> study-area-cn
|
||||
|
|
|
@ -1,56 +1,54 @@
|
|||
# 在 VMWare Workstation 上安装
|
||||
|
||||
> 上级目录:[Rocky Linux初见](../rocky_first_met.md)
|
||||
> 上级目录:[Rocky Linux 初见](./install_rocky_linux_intro.md)
|
||||
|
||||
在进行安装前我们需要去下载一份 Rocky Linux 的镜像,在[Rocky Linux初见](../rocky_first_met.md)中有说明,此处不再赘述。
|
||||
在进行安装前我们需要去下载一份 Rocky Linux 的镜像,在[Rocky Linux 初见](./install_rocky_linux_intro.md)中有说明,此处不再赘述。
|
||||
|
||||
## 0x00 下载并安装 VMWare Workstation Pro
|
||||
## 下载并安装 VMWare Workstation Pro
|
||||
|
||||
假设说你要安装Linux的话,你需要一个虚拟机软件,本部分将使用VMWare Workstation Pro,一款十分好的多平台虚拟机软件.
|
||||
假设说你要安装 Linux 的话,你需要一个虚拟机软件,本部分将使用 VMWare Workstation Pro,一款十分优秀的跨平台虚拟机软件。
|
||||
|
||||
> 当然,[VirtualBox](install_in_vbox.md)也一样
|
||||
假如说你已经安装过了,你完全可以跳过这一段。
|
||||
|
||||
假如说你已经安装过了,你完全可以跳过这一段.
|
||||
> 这里可能有朋友问,VMWare Workstation Pro不是付费的吗?你这样难道想让我们去用盗版?
|
||||
>
|
||||
> 这点不用担心,因为在 VMware 被博通 Broadcom 收购了之后,博通就宣布 VMWare WorkStation Pro 的 17.5.2 版本对个人用户免费 ~~(什么资本家大发慈悲)~~,所以盗版的事情各位大可不必担心。
|
||||
|
||||
这里可能有朋友问,VMWare Workstation Pro(下文简称VMWW)不是付费的吗?你这样难道想让我们去用盗版?
|
||||
原本你应该去注册一个博通的账号并且去到 Broadcom Support Portal 搞一大堆麻烦事情,但是我相信各位的精力是有限的,所以说这里直接贴出提取到的下载链接`https://softwareupdate.vmware.com/cds/vmw-desktop/ws/17.5.2/23775571/windows/core/VMware-workstation-17.5.2-23775571.exe.tar`
|
||||
|
||||
这点不用担心,因为在VMware被博通Broadcom收购了之后,博通就宣布VMWW的17.5.2版本对个人用户免费 ~~(什么资本家大发慈悲)~~,所以盗版的事情各位大可不必担心.
|
||||
在你下载下来之后是一个 tar 文件,如果说你的电脑没有可以解压这种格式的软件,那请你去下载一个名为 7-Zip 的软件 `https://7-zip.org/a/7z2407.exe` 然后安装,记得关联格式。
|
||||
|
||||
原本来说,你应该去注册一个博通的账号并且去到Broadcom Support Portal搞一大堆麻烦事情,但是我相信各位的精力是有限的,所以说这里直接贴出提取到的下载链接`https://softwareupdate.vmware.com/cds/vmw-desktop/ws/17.5.2/23775571/windows/core/VMware-workstation-17.5.2-23775571.exe.tar`
|
||||
|
||||
在您下载下来之后是一个tar文件,如果说您的电脑没有可以解压这种格式的软件,那请您去下载一个名为7-Zip的软件`https://7-zip.org/a/7z2407.exe`然后安装,记得关联格式.
|
||||
|
||||
在解压出来之后,我们就可以运行安装程序,先Next,同意完协议并Next后记得勾选一下`安装键盘驱动`(如下图)
|
||||
在解压出来之后,我们就可以运行安装程序,先 Next,同意完协议并 Next 后记得勾选一下 `安装键盘驱动`(如下图)
|
||||
|
||||
![Keybord Driver](./assets/2.4.vmware.1.png)
|
||||
|
||||
然后就可以一路Next下去了,安装完成后会有一次重启,在重启完毕后,我们该启动VMWW,进行下一步安装了.
|
||||
然后就可以一路 Next 下去了,安装完成后会有一次重启,在重启完毕后,我们该启动 VMWare WorkStation Pro,进行下一步安装了。
|
||||
|
||||
>假如说这里有朋友发现VMWW的页面是英文的,打开VMWW的`快捷方式`,在目标后面添加一个" --locale zh_CN"之后重启VMWW就好了.
|
||||
> 假如说这里有朋友发现 VMWare WorkStation Pro 的页面是英文的,打开 VMWare WorkStation Pro 的`快捷方式`,在目标后面添加一个 ` --locale zh_CN`之后重启 VMWare WorkStation Pro 就好了。
|
||||
|
||||
## 0x01 新建虚拟机
|
||||
## 新建虚拟机
|
||||
|
||||
很好,现在您已经拥有了一个趁手的工具,那就该干点什么,也就是注入灵魂——操作系统了
|
||||
软件我们有了,接下来我们要给虚拟机注入灵魂——操作系统了。
|
||||
|
||||
不过在开始安装系统前,我们需要新建一个`虚拟机`.
|
||||
不过在开始安装系统前,我们需要新建一个 `虚拟机`。
|
||||
|
||||
启动软件后,我们会看到像这样的页面:
|
||||
启动软件后,我们会看到像这样的页面:
|
||||
|
||||
![Home Page](./assets/2.4.vmware.2.png)
|
||||
|
||||
然后点击 `创建新的虚拟机` ,您会看到这样的界面:
|
||||
然后点击 `创建新的虚拟机`,你会看到这样的界面:
|
||||
|
||||
![New VM Page](./assets/2.4.vmware.3.png)
|
||||
|
||||
保持典型不变,点击下一步,点击`安装程序光盘映像文件(iso)(M)`,然后点击游览,找到你镜像下载到的位置,选中镜像,然后打开:
|
||||
保持典型不变,点击下一步,点击 `安装程序光盘映像文件(iso)(M)`,然后点击浏览,找到你镜像下载到的位置,选中镜像,然后打开:
|
||||
|
||||
![Choose ISO Img](./assets/2.4.vmware.3.png)
|
||||
|
||||
接着点击下一步,填写`虚拟机的名字`还有`虚拟机的安装位置`(这一步记得选一个剩余空间比较大的分区)
|
||||
接着点击下一步,填写 `虚拟机的名字` 还有 `虚拟机的安装位置`(这一步记得选一个剩余空间比较大的分区)
|
||||
|
||||
![Set VM](./assets/2.4.vmware.5.png)
|
||||
|
||||
现在开始设置`虚拟磁盘`,这相当于您电脑的储存空间,这里直接引用隔壁VBox安装的话:
|
||||
现在开始设置 `虚拟磁盘`,这相当于你电脑的储存空间,这里直接引用隔壁 VBox 安装的话:
|
||||
|
||||
如果你的磁盘空间足够,那么你开多少都行,一般开 40GB 就够了。
|
||||
|
||||
|
@ -58,7 +56,7 @@
|
|||
|
||||
![Set Virtual Disk](./assets/2.4.vmware.6.png)
|
||||
|
||||
然后我们就来到了配置设置页面,现在点击`自定义硬件`,还是引用Vbox安装的话:
|
||||
然后我们就来到了配置设置页面,现在点击`自定义硬件`,还是引用 Vbox 安装的话:
|
||||
|
||||
我们可以根据需要填写`内存大小`和`处理器`(处理器核心数)。如果你还不知道这两个是什么意思,请回看上一大章节。
|
||||
|
||||
|
@ -71,42 +69,40 @@
|
|||
如果你的电脑内存是 4GB:
|
||||
那么你应该填写 `2048MB`(2GB) 为系统留出足够空间
|
||||
如果你的电脑内存是 8GB
|
||||
这时你填写 `6144MB`(6GB) 即可。如果你希望同时在主机干点别的的话,填`4096MB`(4GB) 即可
|
||||
如果你的电脑内存 > 8GB
|
||||
这时你填多少都可以,只不过最好各留出最少 4G(4096MB) 的内存
|
||||
例如笔者的电脑是 12GB(49152MB),那么就可以填写 `8192MB`(8GB)
|
||||
这时你填写 `4096MB`(6GB) 即可。
|
||||
一般来说,分配实体机内存的一半即可。
|
||||
|
||||
CPU数通常只需要填你的CPU核心数的一半就可以了。现在的电脑至少 2 核起步。
|
||||
如果你在使用 13 代或以上的 Intel 酷睿,那么你填写你的大核心(P核)的数量就行。
|
||||
(截至本篇编写时 Intel 最新的酷睿还是 13 代,2024.6)
|
||||
```
|
||||
|
||||
对于写者来说,设置完之后的页面如下:
|
||||
对于写者来说,设置完之后的页面如下:
|
||||
|
||||
![VM Settings](./assets/2.4.vmware.7.png)
|
||||
|
||||
最后关闭设置页面,点击`完成`,虚拟机就大功告成了!(如果你勾选了`创建后启动此虚拟机`那么则会自动启动)
|
||||
最后关闭设置页面,点击`完成`,虚拟机就大功告成了!(如果你勾选了 `创建后启动此虚拟机` 那么则会自动启动)
|
||||
|
||||
## 0x03 启动虚拟机
|
||||
## 启动虚拟机
|
||||
|
||||
假如说您在上一部勾选了`创建后启动此虚拟机`的话,您的虚拟机应该现在已经启动了,但是以防万一,这里还是讲解一下如何在VMWW里启动虚拟机:
|
||||
假如说你在上一部勾选了 `创建后启动此虚拟机` 的话,你的虚拟机应该现在已经启动了,但是以防万一,这里还是讲解一下如何在 VMWare WorkStation Pro 里启动虚拟机:
|
||||
|
||||
第一步,选中`虚拟机`:
|
||||
第一步,选中`虚拟机`:
|
||||
|
||||
![Select VM](./assets/2.4.vmware.8.png)
|
||||
|
||||
第二步,点击`开启此虚拟机`:
|
||||
第二步,点击`开启此虚拟机`:
|
||||
|
||||
![Start VM](./assets/2.4.vmware.9.png)
|
||||
|
||||
等一会后,会出现一个类似这样的页面,这里直接选中第一项然后回车就可以了:
|
||||
等一会后,会出现一个类似这样的页面,这里直接选中第一项然后回车就可以了:
|
||||
|
||||
![Boot](./assets/2.4.vmware.10.png)
|
||||
|
||||
---
|
||||
|
||||
接下来请继续阅读[安装 Rocky Linux](./install_rocky_linux.md)进行安装.
|
||||
|
||||
接下来请继续阅读[安装 Rocky Linux](./install_rocky_linux.md)进行安装。
|
||||
|
||||
---
|
||||
|
||||
> study-area-cn
|
|
@ -24,10 +24,10 @@
|
|||
|
||||
我们在接下来的步骤需要填写以下项目:
|
||||
|
||||
* 软件选择
|
||||
* 安装目标位置
|
||||
* root密码
|
||||
* 创建用户
|
||||
- 软件选择
|
||||
- 安装目标位置
|
||||
- root 密码
|
||||
- 创建用户
|
||||
|
||||
![Install Page Items](./assets/2.4.install.6.png)
|
||||
|
||||
|
@ -103,6 +103,7 @@
|
|||
接下来,你可以去泡杯茶或去干点别的事情。安装过程会耗费大约 30 分钟到 1 小时。请耐心等待……
|
||||
|
||||
---
|
||||
|
||||
...... 一小时以后 ......
|
||||
|
||||
---
|
||||
|
@ -139,4 +140,5 @@
|
|||
//TODO:待补充...
|
||||
|
||||
---
|
||||
|
||||
> study-area-cn
|
||||
|
|
25
src/learn_linux_basic/rocky_first_met.md → src/learn_linux_basic/install_rocky_linux/install_rocky_linux_intro.md
Normal file → Executable file
|
@ -1,6 +1,6 @@
|
|||
# Rocky Linux 初见
|
||||
# Rocky Linux 安装
|
||||
|
||||
既然我们的标题是`Rocky Linux 初见`,那么我们肯定要亲自动手安一遍系统。
|
||||
既然我们要学习 Linux,那么我们肯定要亲自动手安一遍系统。
|
||||
|
||||
不过安系统并不是一个难事,有了前面的铺垫,其实自己也是可以搞明白的。
|
||||
|
||||
|
@ -18,14 +18,14 @@
|
|||
在你的电脑安装 ---------
|
||||
```
|
||||
|
||||
1. 0x00 下载ISO
|
||||
2. 0x01 以下三种安装方式任选其一
|
||||
1. 下载 ISO
|
||||
2. 以下三种安装方式任选其一
|
||||
|
||||
* [在 VMWare WS 上安装](./install_rocky_linux/install_in_vmware.md)
|
||||
* [在 VirtualBox 安装](./install_rocky_linux/install_in_vbox.md)
|
||||
* [在你的电脑(实体机)安装](./install_rocky_linux/install_in_your_pc.md)
|
||||
- [在 VMWare WS 上安装](./install_rocky_linux/install_in_vmware.md)
|
||||
- [在 VirtualBox 安装](./install_rocky_linux/install_in_vbox.md)
|
||||
- [在你的电脑(实体机)安装](./install_rocky_linux/install_in_your_pc.md)
|
||||
|
||||
3. 0x02 [安装 Rocky Linux](./install_rocky_linux/install_rocky_linux.md)
|
||||
3. [安装 Rocky Linux](./install_rocky_linux/install_rocky_linux.md)
|
||||
|
||||
## 下载 ISO
|
||||
|
||||
|
@ -78,14 +78,17 @@ OS 2: Windows 11
|
|||
这是一款常见的企业级虚拟机软件。自从被博通收购后,产品对个人用户免费。
|
||||
优点: 有完整的官方文档支持,新手教程多
|
||||
缺点: 不开源,异常问题较难解决,被博通收购后下载链接很难找并且需要登录
|
||||
|
||||
2. VirtualBox
|
||||
|
||||
这是一款开源免费的虚拟机软件,由 Oracle 维护。
|
||||
优点: 社区支持强大,开源,自定义程度高
|
||||
缺点: 新手使用会略微有些难度(不过也很简单)
|
||||
|
||||
* **[在 VMWare WS 上安装](./install_rocky_linux/install_in_vmware.md)**
|
||||
* **[在 VirtualBox 上安装](./install_rocky_linux/install_in_vbox.md)**
|
||||
* **[在你的电脑(实体机)安装](./install_rocky_linux/install_in_your_pc.md)**
|
||||
- **[在 VMWare WS 上安装](./install_rocky_linux/install_in_vmware.md)**
|
||||
- **[在 VirtualBox 上安装](./install_rocky_linux/install_in_vbox.md)**
|
||||
- **[在你的电脑(实体机)安装](./install_rocky_linux/install_in_your_pc.md)**
|
||||
|
||||
---
|
||||
|
||||
> study-area-cn
|
|
@ -0,0 +1,161 @@
|
|||
# Linux 常识
|
||||
|
||||
当你照着上面的教程,费尽千辛万苦,历经千难万险,终于安装上 Rocky Linux 后,你肯定会有一个问题:我 C 盘呢?
|
||||
|
||||
其实,Linux 的很多逻辑以及文件的组织结构都是与 Windows 大不相同的,接下来,我们就一起了解一下。
|
||||
|
||||
> 注意,以下操作,若无特殊说明,输入命令均在终端(Terminal)下操作,可以按下 C-M-T 呼出。
|
||||
|
||||
## Linux 路径的格式
|
||||
|
||||
> 注:文件夹(Folder)和目录(Directory)实际上是一个东西。只不过,我们在图形界面下更习惯叫文件夹,终端命令行下更喜欢叫目录。
|
||||
|
||||
Linux 中目录的分隔符是`/`,而非 Windows 中的`\\`。
|
||||
|
||||
Linux 中,每个文件夹下,都有两个特殊的目录,就是`.`和`..`
|
||||
|
||||
1. `.` 代表当前所在的文件夹
|
||||
2. `..` 代表上一级文件夹,而 `/` 的上级文件夹就是它自己
|
||||
|
||||
> 这块似乎有一点不太好懂,我们通过实际的例子解释一下:
|
||||
> 假设我们当现在目录`/foo/bar`下,那么`/foo/bar/.`就等同于`/foo/bar`,`/foo/bar/..`,就等同于`/foo`
|
||||
|
||||
如果一个路径以`/`开头,那代表这个目录是从根目录开始的,根目录就相当于 Windows 上的 C 盘,是存放系统的位置。
|
||||
|
||||
> 注:在 Windows 下也有一个隐藏的根目录,不过我们几乎访问不到也访问不了
|
||||
|
||||
而你所看到的主文件夹(或者是用户目录),位于 `/home/你的用户名`(Linux 中 root 用户比较特殊,就是`/root`),相当于 `C:\Users\你的用户名`(MacOS:`/Users/你的用户名`)。在这里你可以放置你的个人文件和代码。
|
||||
|
||||
> 实际上,`/`只是一块硬盘的挂载点,后面会讲到
|
||||
|
||||
除了这些之外,还有一个路径,是永远指向你的家目录的,这就是`~`。
|
||||
|
||||
假设你的用户名是`hmtsai`,那么`~`是等同于`/home/hmtsai`的。
|
||||
|
||||
## 基本操作
|
||||
|
||||
### `ls` 列出文件
|
||||
|
||||
`ls`,顾名思义,就是 list,列出当前目录下的文件,他的基本使用方法也很简单:
|
||||
|
||||
```bash
|
||||
ls <目录>
|
||||
```
|
||||
|
||||
这个命令就会列出那个目录下的文件。如果没有参数,ls 默认列出当前目录下的文件。你应该还能看见颜色,不同颜色就代表了文件(夹)的不同类型。
|
||||
|
||||
`ls` 还有一些其它的参数,比如输入 `ls -al` 就可以看见纵向排列的文件详细信息了,输入文件名就可以筛选出那个文件夹内/文件本身。
|
||||
|
||||
### `pwd` 打印工作目录
|
||||
|
||||
`pwd`,名字拆解出来,就是 print work directory。也就是打印工作目录,这个命令可以让我们快速了解到我们当前所在的目录。
|
||||
|
||||
> 工作目录(work directory),可以简单的理解为用户当前所在的目录,在以后讲解 shell 的时候会进一步讲解这些概念。
|
||||
|
||||
使用方法也很简单:
|
||||
|
||||
```bash
|
||||
pwd
|
||||
```
|
||||
|
||||
这样就会输出当前的工作目录。
|
||||
|
||||
### `cd` 切换目录
|
||||
|
||||
cd,更好理解了,就是 change directory,切换目录的意思。
|
||||
|
||||
使用方法更简单了:
|
||||
|
||||
```bash
|
||||
cd <目录>
|
||||
```
|
||||
|
||||
这样,就会把当前的工作目录切换到指定的目录了。
|
||||
|
||||
> 一般情况下,只执行`cd`是和`cd ~`等价的。
|
||||
|
||||
### `mkdir` 新建文件夹
|
||||
|
||||
我们刚学习使用 Windows 时,除了开机,第一件事应该就是新建文件夹了。
|
||||
|
||||
这个命令的意思就是字面上的,make directory,新建文件夹。
|
||||
|
||||
你可以使用下面的命令:
|
||||
|
||||
```bash
|
||||
mkdir <目录名>
|
||||
```
|
||||
|
||||
另外,如果你想一次性创建多层目录,那么可以使用 `mkdir -p <多层目录>`,例如 `mkdir -p learn/linux/study`。
|
||||
|
||||
### `mv` 移动文件
|
||||
|
||||
那我们的重命名,剪切,复制,粘贴去哪了呢?在 Linux 命令行中,其实没有剪切。
|
||||
|
||||
```bash
|
||||
mv <你想移动的目录> <目标或新的名字>
|
||||
```
|
||||
|
||||
我们可以使用上面的命令移动或者重命名一个目录(是的,它们是一个命令)。
|
||||
|
||||
> 在同一磁盘内移动速度很快,但是跨磁盘就不一定了
|
||||
|
||||
### `cp` 复制文件
|
||||
|
||||
而复制也是一个道理:
|
||||
|
||||
```bash
|
||||
cp <你想复制的文件或目录> <新文件或目录的名字>
|
||||
```
|
||||
|
||||
### `rm` 删除文件
|
||||
|
||||
都有复制了,怎么能没有删除呢?
|
||||
|
||||
> 删除危险性较高,不要删除根目录或者其它重要目录!回车前再三确认!
|
||||
|
||||
```bash
|
||||
rm <你想删除的文件>
|
||||
```
|
||||
|
||||
另外,删除文件夹的操作有点不一样:
|
||||
|
||||
```bash
|
||||
rm -r <你想删除的文件夹>
|
||||
```
|
||||
|
||||
在`r`后面加上`f`就是强制删除了,而 `rm -rf /*` 就是强制删除根目录下所有的文件。以后看到这串命令不要被骗了!
|
||||
|
||||
> 如果你真的想尝试,那么请一定在虚拟机下!搞坏系统作者可不负责!
|
||||
|
||||
### `nano`简单的文档编辑器
|
||||
|
||||
![Nano 的界面](./assets/2.5.1.png)
|
||||
|
||||
`nano`实际上就是被誉为“神之编辑器”的 Emacs 编辑器的极限精简版,所有的基本操作都被标在了界面的下方
|
||||
|
||||
```text
|
||||
^G 帮助 ^O 写入 ^F 搜索 ^K 剪切 ^T 执行命令 ^C 位置 M-U 撤销 M-A 设置标记 M-] 至括号 M-B 上一个
|
||||
^◂ 向后 ^◂ 前一个字 ^X 离开 ^R 读档 ^\ 替换 ^U 粘贴 ^J 对齐 ^/ 跳行 M-E 重做 M-6 复制
|
||||
^B 向前搜索 M-F 下一个 ▸ 向前 ^▸ 后一个字
|
||||
```
|
||||
|
||||
> 以后,我们会学习一款使用更广泛的编辑器:`Vim`(被誉为“编辑器之神”)。
|
||||
|
||||
### `poweroff`关机
|
||||
|
||||
很多同学刚使用 Linux 的时候,最大的问题就是:怎么关机?
|
||||
|
||||
实际上关机很简单,只需要键入:
|
||||
|
||||
```shell
|
||||
sudo poweroff
|
||||
```
|
||||
|
||||
回车执行之后会提示你输入密码,直接输入就可以了,输入的时候是没有回显的,不用担心,输入完直接回车即可。
|
||||
|
||||
> 关于`sudo`是什么意思,这个在以后我们讲解权限的时候会提到,你现在就理解为是用来获取系统的最高权限的意思就 ok 了。
|
||||
|
||||
### `man`用户手册
|
||||
|
||||
man,是 manual(手册)的意思,你可以通过简单地输入 `man <命令>`来使用。
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
这些发行版附带了很多来自 GNU 的开源软件,所以这类发行版也被称为`GNU/Linux 发行版`。
|
||||
|
||||
Linux基本命令中的极大部分都来自 GNU(coreutils),如 `cat`、`grep`、`awk`、`bash`,甚至最简单的`ls`、`cp`,都来自于 GNU。
|
||||
Linux 基本命令中的极大部分都来自 GNU 项目中的 coreutils,如 `cat`、`grep`、`awk`、`bash`,甚至最简单的`ls`、`cp`,都来自于 GNU。
|
||||
|
||||
> 当然 GNU 工具并不是唯一的选择,常见的还有嵌入式的`busybox`等。
|
||||
|
||||
|
@ -33,15 +33,15 @@ Linux基本命令中的极大部分都来自 GNU(coreutils),如 `cat`、`grep`
|
|||
笔者在下面总结了一些常见发行版:
|
||||
![Distros](./assets/2.3.2.png)
|
||||
|
||||
* `RedHat` 使用 rpm/yum 管理软件包的一款发行版,有良好的企业级支持,但是 Enterprise 需要付费(衍生无需)。
|
||||
* `CentOS` 之前服务器最常用的 Linux 发行版(CentOS 7&8),不过现在已部分停止开发,使用人数较少
|
||||
* `RockyLinux` 新兴的 RedHat 系发行版,可以作为CentOS的继任者在服务器端使用,也可用于桌面系统
|
||||
* `Debian` 使用 dpkg/apt 管理软件包,操作简单,功能易学丰富,也适合作为服务器系统
|
||||
* `Ubuntu` 最受欢迎的桌面Linux发行版,笔者初入Linux选择的就是本系统。Ubuntu还有Server服务器版本,不过不是很好用
|
||||
* `Deepin` 国产的一款Linux系统,使用独有的DDE桌面,开箱即用界面美观,但是bug较多,且性能要求较高
|
||||
* `ArchLinux` 使用独有的 pacman 管理软件包,有庞大的AUR支持。新手上手难度极高,默认只有命令行界面,但定制性也极高,但是系统为滚动更新,较不稳定,容易“滚挂”(指更新软件包导致系统无法启动等问题),被网友戏称为“邪教”
|
||||
* `Manjaro` 一款基于 ArchLinux 的带有图形界面的发行版,新手较为友好
|
||||
* `SteamOS` 一款默认被用在 SteamDeck 上的专为游戏设计的操作系统,对游戏的兼容性较好
|
||||
- `RedHat` 使用 rpm/yum 管理软件包的一款发行版,有良好的企业级支持,但是 Enterprise 需要付费(衍生无需)。
|
||||
- `CentOS` 之前服务器最常用的 Linux 发行版(CentOS 7&8),不过现在已部分停止开发,使用人数较少
|
||||
- `RockyLinux` 新兴的 RedHat 系发行版,可以作为 CentOS 的继任者在服务器端使用,也可用于桌面系统
|
||||
- `Debian` 使用 dpkg/apt 管理软件包,操作简单,功能易学丰富,也适合作为服务器系统
|
||||
- `Ubuntu` 最受欢迎的桌面 Linux 发行版,笔者初入 Linux 选择的就是本系统。Ubuntu 还有 Server 服务器版本,不过不是很好用
|
||||
- `Deepin` 国产的一款 Linux 系统,使用独有的 DDE 桌面,开箱即用界面美观,但是 bug 较多,且性能要求较高
|
||||
- `ArchLinux` 使用独有的 pacman 管理软件包,有庞大的 AUR 支持。新手上手难度极高,默认只有命令行界面,但定制性也极高,但是系统为滚动更新,较不稳定,容易“滚挂”(指更新软件包导致系统无法启动等问题),被网友戏称为“邪教”
|
||||
- `Manjaro` 一款基于 ArchLinux 的带有图形界面的发行版,新手较为友好
|
||||
- `SteamOS` 一款默认被用在 SteamDeck 上的专为游戏设计的操作系统,对游戏的兼容性较好
|
||||
|
||||
还有一些比较小众的发行版,如`NixOS`、`Alpine Linux`,这里不一一说明了。
|
||||
|
||||
|
@ -73,4 +73,5 @@ Linux基本命令中的极大部分都来自 GNU(coreutils),如 `cat`、`grep`
|
|||
![Linux Distribution Time Line](./assets/2.3.1.svg)
|
||||
|
||||
---
|
||||
|
||||
> study-area-cn
|
||||
|
|
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 102 KiB |
|
@ -0,0 +1,179 @@
|
|||
# 学习 Shell。
|
||||
|
||||
## 概念
|
||||
|
||||
Shell(也称为壳)在计算机中指“为用户提供用户界面”的软件,通常指的是命令行界面的解析器。一般来说,这个词是指操作系统中提供访问内核所提供之服务的程序。Shell也用于泛指所有为用户提供操作界面的程序,也就是程序和用户交互的层面。因此与之相对的是内核(英语:Kernel),内核不提供和用户的交互功能。[1]
|
||||
|
||||
但是,在 Linux 中,我们通常所讲的 Shell 是指命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序来实现自动化的功能。
|
||||
|
||||
Shell 也指代一种命令语言,由这种语言编写的脚本称为 Shell Script。
|
||||
|
||||
Shell 命令语言的标准为参考 AT&T 的 ksh 和 GNU 计划的 Bourne Again Shell (bash) 制定的 The Open Group Base Specifications Issue 6 中的 [2.Shell Command Language](https://pubs.opengroup.org/onlinepubs/9690949599/utilities/xcu_chap02.html)。
|
||||
|
||||
本章我们将学习 Shell 的基本使用。
|
||||
|
||||
## 快捷键
|
||||
|
||||
Shell 也有快捷键?是的。大多数 Shell 都支持以下的快捷键:
|
||||
|
||||
- `C-C`:终止当前进程。
|
||||
- `C-Z`:暂停当前进程。
|
||||
- `C-D`:退出当前Shell(实际上是发送一个 `EOF` 文件结束字符)。
|
||||
- `C-L`:清屏。
|
||||
|
||||
> 其中 `C-C` 和 `C-D` 是十分重要的两个快捷键,十分常用。
|
||||
|
||||
在 Bash 中,还有一些特殊的快捷键,它们继承自 GNU Emacs 编辑器,用于快速移动光标以及编辑文本:
|
||||
|
||||
- `C-A`:移动光标到行首。
|
||||
- `C-E`:移动光标到行尾。
|
||||
- `C-B`:向左移动光标。
|
||||
- `C-F`:向右移动光标。
|
||||
- `C-K`:删除从光标位置到行尾的文本。
|
||||
- `C-U`:删除从光标位置到行首的文本。
|
||||
- `C-W`:删除光标左侧的单词。
|
||||
- `C-Y`:粘贴之前删除的文本。
|
||||
|
||||
> 这部分只需要了解即可
|
||||
|
||||
## 命令
|
||||
|
||||
命令分为内部命令和外部命令,内部命令是 Shell 自带的命令,外部命令是 Shell 外部的可执行程序。
|
||||
|
||||
一条 Shell 的指令的标准格式为:
|
||||
|
||||
```bash
|
||||
command [options] [arguments]
|
||||
```
|
||||
|
||||
其中,`command` 是命令的名称,`options` 是命令的选项,`arguments` 是命令的参数。
|
||||
|
||||
它的格式不一定必须遵守,但是通常遵守这个格式会带来更好的可读性(用什么工具采用什么方式对什么文件做什么)。
|
||||
|
||||
但是,有一个例外,就是指定输出,这时,我们推荐將指定输出的选项以及参数放在文件明后面。
|
||||
|
||||
例如,`ls` 命令用于列出当前目录下的文件和文件夹,它的选项可以是 `-l`、`-a` 等,参数可以是文件名或目录名。
|
||||
|
||||
## 变量
|
||||
|
||||
Shell 中的变量分为环境变量和用户变量,环境变量是Shell启动时自动设置的变量,用户变量是用户自定义的变量。
|
||||
|
||||
用户变量可以通过 `export` 命令设置为临时环境变量,例如:
|
||||
|
||||
```bash
|
||||
export GREET="Hello, World!"
|
||||
```
|
||||
|
||||
然后我们在这个 Shell 里启动一个新的 Shell,仍然可以在环境中找到这个变量。
|
||||
|
||||
```bash
|
||||
bash -c 'echo $GREET'
|
||||
```
|
||||
|
||||
> `export` 声明的变量只在当前环境下有效,如果你开启了个新的终端或者重启,那么这个环境就无效了
|
||||
|
||||
用户变量可以通过 `declare` 命令声明,例如:
|
||||
|
||||
```bash
|
||||
declare USER_GREET="Hello, Shell"
|
||||
```
|
||||
|
||||
变量可以通过 `${}` 或 `$` 符号来引用,例如:
|
||||
|
||||
```bash
|
||||
echo ${GREET}
|
||||
echo $USER_GREET
|
||||
```
|
||||
|
||||
> 当变量的前后有别的内容紧挨着,那么只能使用 `${}`。
|
||||
|
||||
## 特殊的环境变量
|
||||
|
||||
Shell 中有一些特殊的环境变量,它们在 Shell 启动时自动设置,例如:
|
||||
|
||||
- `$HOME`:当前用户的主目录。
|
||||
- `$PATH`:可执行文件的搜索路径。
|
||||
- `$SHELL`:当前Shell的名称。
|
||||
- `$PWD`:当前工作目录。
|
||||
- `$USER`:当前用户的用户名。
|
||||
|
||||
其中最重要也是最常用的就是 PATH,它决定了Shell在执行命令时搜索可执行文件的路径。当我们发现明明安装了某个软件但是找不到可执行文件的时候应该首先检查 PATH 的设置。如果你熟悉 Windows,你会发现 Windows 的 PATH 是一串由分号分隔的路径。而 Linux 下的路径使用的是 `:` 冒号分隔。
|
||||
|
||||
> 在 Windows 中的 PATH 中有一条路径是 `.` 就是当前目录,而 Linux 中默认是不会搜索当前目录的。如果你在当前目录有一个 `run.sh`,那么你必须要使用 `./run.sh` 才能执行。
|
||||
|
||||
## 管道
|
||||
|
||||
Shell 中的管道是链接两个命令的方式,管道遵守下面的格式。
|
||||
|
||||
```bash
|
||||
command1 | command2
|
||||
```
|
||||
|
||||
`command1` 的输出将会作为 `command2` 的输入提供,例如:
|
||||
|
||||
```bash
|
||||
ls -a | grep "test"
|
||||
```
|
||||
|
||||
这个命令将会列出当前目录下的所有文件,然后使用 `grep` 命令过滤出文件名包含"test"的文件。
|
||||
|
||||
## 输出重定向
|
||||
|
||||
Shell 中的重定向是改变命令的输出地点的方式,重定向遵守下面的格式。
|
||||
|
||||
```bash
|
||||
command > file
|
||||
```
|
||||
|
||||
`command` 的输出将会被重定向到 `file` 中,例如:
|
||||
|
||||
```bash
|
||||
ls -a > files.txt
|
||||
```
|
||||
|
||||
这个命令将会列出当前目录下的所有文件,然后使用 `>` 符号将输出重定向到 `files.txt` 中。
|
||||
|
||||
## 输入重定向
|
||||
|
||||
Shell 中的输入重定向是改变命令的输入地点的方式,输入重定向遵守下面的格式。
|
||||
|
||||
```bash
|
||||
command < file
|
||||
```
|
||||
|
||||
`command` 的输入将会被重定向到 `file` 中,例如:
|
||||
|
||||
```bash
|
||||
cat < files.txt
|
||||
```
|
||||
|
||||
这个命令将会读取 `files.txt` 中的内容,然后使用 `cat` 命令输出到标准输出中。
|
||||
|
||||
## 将命令的输出作为参数
|
||||
|
||||
让我们想像这个场景:有一个文件有一个文件名列表,我们想要获取这些文件的详细信息,这怎么实现呢?
|
||||
|
||||
运算符 `$()` 可以将命令的输出作为参数,它的标准格式如下:
|
||||
|
||||
```bash
|
||||
command1 $(command2)
|
||||
```
|
||||
|
||||
`command2` 的输出将会作为 `command1` 的参数。
|
||||
|
||||
实现前文的场景所需的命令如下:
|
||||
|
||||
```bash
|
||||
ls -l $(cat files.txt)
|
||||
```
|
||||
|
||||
这个命令将会读取 `files.txt` 中的文件名列表,然后使用 `ls -l` 命令获取这些文件的详细信息。
|
||||
|
||||
## 课后作业
|
||||
|
||||
1. 使用 Shell 的输出重定向功能,在主目录中创建一个保存了主目录中所有文件列表的文件,命名为 `files.txt`
|
||||
2. 使用 `cat` 读取所有文件的内容。
|
||||
|
||||
## 参考
|
||||
|
||||
- [Shell - 维基百科,自由的百科全书](https://zh.wikipedia.org/wiki/Shell)
|
|
@ -0,0 +1 @@
|
|||
# Shell 与 Shell Script
|
|
@ -0,0 +1,198 @@
|
|||
# Vim 编辑器
|
||||
|
||||
> 在 Vim 中所有的键位注意区分大小写,所有大写的命令都需要按下 `Shift` 键,例如 `V` 表示为 `S-v`
|
||||
|
||||
不知道你有没有听说过 Bram 发明的 Vim 编辑器,有这么一个梗,就是:
|
||||
|
||||
> 如何产生一串随机字符串?答:让新手退出 Vim。
|
||||
|
||||
你应该能看出 Vim 的操作是多么“反人类”了吧。事实上,在 Vim 发明的时候,电脑上还没有鼠标,所有的操作只能靠命令完成的(可以想一想 tty)。所以,Vim 的设计理念就是让用户通过键盘完成所有的操作。
|
||||
|
||||
但是,我们如果要通过终端远程管理一台 Linux 服务器,那么必须使用像 Vim 这样的终端编辑器。Vim 的功能比前文的 Nano 强大许多,如果你熟悉了 Vim,那么你的速度可能远远超过那些使用其它编辑器的人。
|
||||
|
||||
> Vim 的前身是 Vi,本文的绝大部分命令同样适用于 Vi。几乎所有的 Linux 发行版都自带 Vi 或是 Vim 其中之一,不用担心是否安装了 Vim。其实 Windows 上也可以安装 Vim。
|
||||
>
|
||||
> 如果你在 Vim 中困住了,只需要按下 `<Esc>:q!<Enter>` 就可以退出 Vim 了
|
||||
|
||||
## 启动 Vim
|
||||
|
||||
Vim 的启动十分简单,只需要在终端输入 `vim` 即可。
|
||||
|
||||
```bash
|
||||
vim [文件名]
|
||||
```
|
||||
|
||||
文件名是可选的。如果文件存在,Vim 就会打开这个文件;如果文件不存在,Vim 就会创建这个文件。
|
||||
|
||||
然后你会看到如下界面:
|
||||
|
||||
![Vim](./assets/2.3.2.1.png)
|
||||
|
||||
## Vim 的使用
|
||||
|
||||
首先,我们进入 Vim,会发现我们并不能像 Nano 一样直接打字。这是因为 Vim 默认处于“命令模式”,我们需要按下对应的按键可以进入到不同的模式。记住:无论在任何时候,按下 `Esc` 键都可以回到命令模式。
|
||||
|
||||
下面是一张 Vim 的键位图:
|
||||
|
||||
![Vim Keymap](./assets/2.3.2.2.png)
|
||||
|
||||
如果看不懂也没关系,下面我们会讲解其中常用的一些功能。
|
||||
|
||||
### Vim 的“模式”
|
||||
|
||||
Vim 有一个最基本的东西“模式”,在不同模式下,快捷键的功能会有所不同。Vim 会在左下角提示你所在的模式。
|
||||
|
||||
以下是常见的模式:
|
||||
|
||||
- `命令模式` 这个是 Vim 启动所在的模式,以下的所有内容均在这个模式内进行。其它模式均可以使用 `Esc` 退出到命令模式。
|
||||
- `编辑模式` 使用 `i` 进入,底部会提示 `-- INSERT --`(`-- 插入 --`),在这个模式下,你可以正常编辑文档,和一般的文本编辑器无异。
|
||||
- `替换模式` 底部会提示 `-- REPLACE --`(`-- 替换 --`),使用 `R` 进入,这个模式与编辑模式差别不大,但是你输入的所有内容都会替换光标后的内容。
|
||||
- `选择模式` 原名是“可视模式”,使用 `v` 进入,底部会提示 `-- VISUAL --`(`-- 可视 --`),你可以选择一段文本进行操作。
|
||||
- `选择行模式` 使用 `V` 进入,底部会提示 `-- VISUAL LINE --`(`-- 可视 行 --`),此时所有的选择都变成了整行选择。操作没有任何区别。
|
||||
- `底部命令行模式` 使用 `:`、`/`、`?` 进入(功能不同),此时整个底部都会变成命令行,以 `:` 与 `/` 等字符开头,此时可以输入命令,按下 `Enter` 就可以执行并退出。
|
||||
|
||||
### 移动光标
|
||||
|
||||
在命令模式下,我们可以使用键盘上的方向键来移动光标。但是,我们也可以使用 Vim 提供的命令来移动光标:
|
||||
|
||||
```text
|
||||
^
|
||||
k
|
||||
< h l >
|
||||
j
|
||||
v
|
||||
```
|
||||
|
||||
> 当你熟悉了 `hjkl` 的使用后,你会发现使用这几个命令比使用方向键快多了
|
||||
|
||||
### 命令行
|
||||
|
||||
我们输入 `:` 就可以进入命令行(和上面的底部命令行模式有点区别)了。在 Vim 中,命令行负责了许多复杂的工作。
|
||||
|
||||
下面是最常见的命令组合:
|
||||
|
||||
- `:w` 保存文件
|
||||
- `:wq` 保存并退出 Vim
|
||||
- `:q!` 强制退出 Vim(文件未保存的情况下)
|
||||
|
||||
> `!` 接在命令后表示强制执行一个命令
|
||||
>
|
||||
> 另外,在 `w` 命令后面可以接上文件保存的路径,实现另存为的功能,例如 `:w 1.txt`
|
||||
|
||||
其中命令行模式的其它功能我们在下面还会讲到。
|
||||
|
||||
### 删除与剪切
|
||||
|
||||
假如有一大段文字,在 Vim 中又不能像图形化一样鼠标一拖一删,那么如何快速删除呢?
|
||||
|
||||
在 Vim 中,我们可以单独使用 `x` 和 `d` 命令,也可以在“可视模式”(待会会讲到)下编辑。
|
||||
|
||||
`x` 命令可以删除光标所指的当前字符,而 `d` 命令的功能就比较复杂了。`d` 命令是一个“多字符命令”,需要在 `d` 后面输入其它的东西搭配使用。
|
||||
|
||||
> `d` 命令实际上是剪切,后面会说如何粘贴
|
||||
|
||||
下面是一些例子(均包括开头的 `d`):
|
||||
|
||||
- `dd` 删除整行
|
||||
- `dw` 删除当前单词(以空格分割)
|
||||
- `d0` 删除这行从光标的位置到最前
|
||||
- `d$` 删除这行从光标的位置到最后
|
||||
|
||||
> 在 Vim 中,很多命令例如 `x`、`d` 和后文的 `y`、`G`、`gg` 等前面都可以加一个数字,表示重复这个命令多少次,例如 `5dd` 就是删除5行,包括 `hjkl` 也可以。
|
||||
|
||||
### 复制
|
||||
|
||||
前面我们说到了 `d` 的本质是剪切,那么我们如何复制呢?`y` 命令便可以复制。
|
||||
|
||||
> 注意:Vim 的剪贴板是独立的,和系统使用的不同
|
||||
|
||||
`y` 命令和 `d` 命令的用法如出一辙,例如 `yy` 就是复制整行,`yw` 就是复制单词。
|
||||
|
||||
### 粘贴
|
||||
|
||||
`p` 命令代表 `parse`,就是粘贴。可以粘贴使用 `y` 复制或者 `d` 剪切的内容。
|
||||
|
||||
### 跳转
|
||||
|
||||
如果我们想要快速在文件中跳转,那么`gg` 命令和 `G` 命令是不可或缺的。
|
||||
|
||||
`gg` 命令可以让你快速来到文件的开头,而 `G` 命令单独使用可以来到文件尾部,
|
||||
|
||||
这个两个命令前面加上数字,就可以快速跳转到指定的行(`G` 命令也是从头开始数的)。
|
||||
|
||||
使用也非常简单,按一下就可以,前面也可以加数字。
|
||||
|
||||
另外,可以使用 `0` 跳转到行首和 `$` 跳转到行尾。
|
||||
|
||||
`d` 和 `y` 命令后面也可以接 `gg`、`G`、`0`、`$` 命令,效果就是从指定的位置选择到当前光标所在处。
|
||||
|
||||
### 重复上一个命令
|
||||
|
||||
这个命令是 `.`,没错,就是点。可以重复你的上一个命令。
|
||||
|
||||
### 选择模式(可视模式)
|
||||
|
||||
可视模式,这个名字其实有点误导人。事实上,这个模式就是选择一段文字。(事实上你如果在终端中直接使用鼠标进入的就是这个模式)
|
||||
|
||||
下面是在可视模式中的操作:
|
||||
|
||||
- 使用 `hjkl` 移动(当然方向键也可以)
|
||||
- `y` 复制
|
||||
- `d` 剪切
|
||||
- `x` 删除
|
||||
- `p` 覆盖粘贴
|
||||
- `gg`、`G`、`0`、`$` 移动光标
|
||||
|
||||
### 查找内容
|
||||
|
||||
在 Vim 中,我们可以使用 `/` 进行查找,输入 `/` 然后再输入关键词。
|
||||
|
||||
在查找过程中,我们可以使用 `n` 查找下一个,`N` 查找上一个。
|
||||
|
||||
### 小技巧:使用 `:!` 快速调试 Shell 脚本
|
||||
|
||||
在使用 Vim 的过程中,假如我们需要调试一个 Shell,那么我们就需要退出 Vim,启动脚本,再打开 Vim,十分的麻烦。不过 Vim 提供了一个命令 `:!` 来让我们快速运行一行命令。
|
||||
|
||||
```text
|
||||
:! [要执行的命令]
|
||||
```
|
||||
|
||||
然后我们会跳出 Vim,并看到这个命令的执行结果。如果想要回到 Vim,只需要在程序结束后敲一下 `<Enter>` 便可以回到 Vim 了。
|
||||
|
||||
另外,我们可以单独使用 `:!` 查看执行的历史记录。
|
||||
|
||||
## Vim 的配置
|
||||
|
||||
在 Vim 中,我们可以使用 `:set (no)[配置名]` 去开关某些配置。
|
||||
|
||||
对于有参数的配置,可以使用 `:set [配置名]=[值]`
|
||||
|
||||
下面是一些常用配置:
|
||||
|
||||
```text
|
||||
:set number "启用行号
|
||||
:set autoindent "自动缩进
|
||||
:set autoread "如果文件有更改自动更新文件
|
||||
:set wrap "自动折行
|
||||
:set encoding=utf-8 "设置显示格式,文件显示乱码可尝试调整
|
||||
:set fileencoding=utf-8 "设置写入格式
|
||||
:set hlsearch "高亮搜索结果
|
||||
```
|
||||
|
||||
这些配置都是临时启用,如果每次启动时都要手动配置,属实有点麻烦。那么该怎么办呢?我们可以将配置文件写入 `~/.vimrc` 文件实现永久配置。(注意所有配置不要带冒号)
|
||||
|
||||
> 其实 Vim 的功能远不止如此,感兴趣的可自行了解 VimScript 相关内容。
|
||||
|
||||
## 课后作业
|
||||
|
||||
Vim 的功能十分强大,并且在维护时十分常用。下面的练习可以帮你更好掌握 Vim:
|
||||
|
||||
> 试试看在下面的过程中,全程不使用方向键吧!
|
||||
|
||||
1. 使用 `touch` 新建一份 `.sh` 文件,文件名随意
|
||||
2. 使用 Vim 编辑这个文件,使用 `echo` 输出一个 `helloworld`
|
||||
3. 保存这个文件
|
||||
4. 使用 `:!` 运行这个文件
|
||||
5. 退出 Vim
|
||||
6. 使用 Vim 定制你的 `~/.vimrc` 配置文件
|
||||
7. 你也可以将这个配置文件发到论坛上与小伙伴交流
|
|
@ -41,4 +41,5 @@ Dennis Ritchie得知了这个这个计划后,就开始和Ken一起将Unix使
|
|||
现在的 Linux 发行版(就是 linux 内核与软件包的结合,下一篇文章会详细讲述)包含着很多其它 GNU 中的软件。你如今可以在 [kernel.org](kernel.org) 下载 Linux 内核,也可以在 GNU 官网找到其它 GNU 软件并安装在 Linux
|
||||
|
||||
---
|
||||
|
||||
> study-area-cn
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
## 命令太多我记不住,怎么办?
|
||||
|
||||
实际上我们没有人会特意记命令。有个人开玩笑就说
|
||||
|
||||
> 直接用 Linux 就好了啊没有人用 Windows 是先看"Windows 使用理论与实践"的。
|
||||
|
||||
虽然这只是一句玩笑,但是也挺有道理的。
|
||||
|
@ -41,6 +42,7 @@ Linux内核本身,和在Linux上使用的大部分软件都是开源软件。
|
|||
有的同学可能会问:那不是代表 Linux 不安全吗?
|
||||
其实这个看法也对,也不对:因为把系统完整的权限交给用户,确实可能会造成一些不安全的行为。但是 Windows 是把系统的完全控制权交给微软,你不知道这个系统里面有没有什么后门。所以相比把权限交给其他人,还是把权限牢牢的攥在自己手里更安心。
|
||||
而且由于 SELinux 和用户组这些东西,Linux 一般用户的权限都是受到限制的,正常使用没有什么不安全的问题。
|
||||
|
||||
> SELinux 这东西极大的提高了 Linux 的安全,我们后文也会讲到。
|
||||
|
||||
### 4.系统占用
|
||||
|
@ -50,7 +52,7 @@ Linux内核本身,和在Linux上使用的大部分软件都是开源软件。
|
|||
这是我的电脑在两个系统下的占用(刚刚开机,Windows 自带 GUI,Linux:KDE)
|
||||
|
||||
| 系统 | CPU | 内存 |
|
||||
|-----|-----|-----|
|
||||
| ------- | ----- | ------ |
|
||||
| Linux | 0.8% | 2G/16G |
|
||||
| Windows | 12.1% | 6G/16G |
|
||||
|
||||
|
@ -60,4 +62,5 @@ Linux内核本身,和在Linux上使用的大部分软件都是开源软件。
|
|||
那么接下来我们就开始正式的学习吧!
|
||||
|
||||
---
|
||||
|
||||
> study-area-cn
|
||||
|
|
|
@ -192,9 +192,9 @@ Copyright 2024 The Study Area CN Team
|
|||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
You may obtain a copy of the License at:
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
[www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
|