docs: update docs

Log:
This commit is contained in:
xiangzelong
2023-02-16 10:56:23 +08:00
parent 710ce6d6fa
commit 82ed19889b
7 changed files with 225 additions and 71 deletions

View File

@@ -9,7 +9,6 @@ Deepin GNU/linux 23 foo tty2
foo login
```
你需要在login后面输入你的用户名 然后回车
此时,登陆提示符显示如下:
@@ -18,7 +17,6 @@ foo login
Password
```
输入用户密码即可。
:::tip
@@ -38,7 +36,6 @@ Welcome to Deepin V23 GNU/Linux
* Bugreport:https://bbs.deepin.org/
```
你可以用root权限来修改此文件来达到自定义的目的
此时你就在shell下了你可以在shell下尝试与电脑交流。
@@ -73,7 +70,7 @@ root 账户也被称作超级用户或特权用户。用这个账户,你能够
注意:如果有人告诉你形如:`sudo rm -rf /*` ,请谨慎对待,最好你在执行此命令之前了解此命令含义,否则会造成不可挽回的后果。
:::
一个文件(包括硬件设备,如 CD-ROM 等,这些对 Linux 系统来说都只是一个文件)的权限可能会导致非 root 用户无法使用或访问它 。虽然在这种情况下,使用 root 帐户是一个快速的方法,但正确的解决方法应该是对文件权限和用户组的成员进行合适的设置(参见第[ 1.2.3 节 “文件系统权限](https://flowus.cn/16aaa542-96fb-40e1-bfca-d77989d1418b#b6113247-d21b-4ce4-92ff-0e3f94886ec1)”)。
一个文件(包括硬件设备,如 CD-ROM 等,这些对 Linux 系统来说都只是一个文件)的权限可能会导致非 root 用户无法使用或访问它 。虽然在这种情况下,使用 root 帐户是一个快速的方法,但正确的解决方法应该是对文件权限和用户组的成员进行合适的设置(参见第[1.2.3 节 “文件系统权限](https://flowus.cn/16aaa542-96fb-40e1-bfca-d77989d1418b#b6113247-d21b-4ce4-92ff-0e3f94886ec1)”)。
## 1.1.4. root shell 提示符
@@ -91,8 +88,6 @@ root 账户也被称作超级用户或特权用户。用这个账户,你能够
注意任何情况都不建议使用root用户直接登陆而是使用sudo+命令方式
## 1.1.5. 虚拟控制台
在默认的 deepin系统中有6个可切换的类VT100字符控制台可以直接在 Linux 主机上启动 shell。GUI界面占据tty1。
@@ -107,7 +102,6 @@ root 账户也被称作超级用户或特权用户。用这个账户,你能够
sudo chvt 3
```
## 1.1.6. 雷神终端
这是deepin的特有功能在GUI界面下按Alt+F2唤出和普通终端一致。快捷键可以在控制中心修改。
@@ -134,14 +128,12 @@ sudo chvt 3
sudo shutdown -h now
```
在单用户模式下,可以使用命令行关闭系统。
```Shell
sudo poweroff -i -f
```
参见[第 6.3.8 节 “怎样通过 SSH 关闭远程系统”](https://www.debian.org/doc/manuals/debian-reference/ch06.zh-cn.html#_how_to_shutdown_the_remote_system_on_ssh)。
## 1.1.9. 恢复一个正常的控制台
@@ -164,7 +156,6 @@ deepin作为一个开箱即用的系统已经预装了许多软件包
sudo apt-get install <package_name>
```
## 1.1.11. 额外用户账号
如果你不想用你自己的主用户账户来进行下面的练习操作,你可以使用下面的方式创建一个练习用户账户,比如说,创建一个用户名为 `fish` 的账号。
@@ -173,7 +164,6 @@ sudo apt-get install <package_name>
sudo adduser fish
```
回答所有问题。
这将创建一个名为 `fish` 的新账号。在你练习完成后,你可以使用下面的命令删除这个用户账号和它的用户主目录。
@@ -182,7 +172,6 @@ sudo adduser fish
sudo deluser --remove-home fish
```
## 1.1.12. sudo 配置
对于典型的单用户工作站,例如运行在笔记本电脑上的桌面 deepin 系统,通常简单地配置 `sudo`(8) 来使为非特权用户(例如用户 `penguin`)只需输入用户密码而非 root 密码就能获得管理员权限。
@@ -191,14 +180,12 @@ sudo deluser --remove-home fish
sudo echo "penguin ALL=(ALL) ALL" >> /etc/sudoers
```
另外,可以使用下列命令使非特权用户(例如用户 `penguin`)无需密码就获得管理员权限。
```Shell
sudo echo "penguin ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
```
这些技巧只对你管理的单用户工作站中那个唯一的用户有用。
在多用户工作站中不要建立这样的普通用户账户,因为它会导致非常严重的系统安全问题。

View File

@@ -10,7 +10,6 @@ cd /
tree -L 3
```
这会展示出`/`目录下的文件树深度为3
这些文件和目录可以分散在多个设备中。`mount`(8)用于把某个设备上找到的文件系统附着到巨大的文件树上。相反的,`umount`(8)把它再次分离。在最近的 Linux 内核里,`mount`(8)带某些参数时可以把文件树的一部分绑定到另外的地方,或者可以把文件系统挂载为共享的、私有的、从设备、或不可绑定的。对每个文件系统支持的挂载选项可以在`/usr/share/doc/linux-doc-*/Documentation/filesystems/`找到。
@@ -35,7 +34,7 @@ Unix系统上叫做**目录**,某些其他系统上叫做**文件夹**。请
- 对于一个物理设备, 是没有一个特定的目录路径名来对应的组成部分. 这不同于RT-11, CP/M,OpenVMS,MS-DOS,AmigaOS, 以及微软的Windows这些系统存在一个路径包含了一个设备名字比如"C:"。(尽管如此, 路径条目确实存在引用了物理设备作为正常的文件系统的一部分. 参考第 1.2.2 节 “文件系统深入解析”。)
虽然你**可以**在文件名中使用任意的字幕或者符号, 但是在实际情况下这样做是一个坏主意. 最好避免使用一些在命令行里面含有特殊意义的字符, 比如空格, 制表符, 换行符, 和其它的特殊字符: `{ } ( ) [ ] ' ` " \ / >< | ; ! #&^ * % @ $`. 如果你想有一个区分度良好的命名, 比较好的选择是利用 时期, 连字符和下划线. 你也可以每个单词的首字母大写, 这叫大驼峰命名法, 比如这样 "`LikeThis`". 经验丰富的Linux用户会趋向于在文件名中不使用空格.
虽然你**可以**在文件名中使用任意的字幕或者符号, 但是在实际情况下这样做是一个坏主意. 最好避免使用一些在命令行里面含有特殊意义的字符, 比如空格, 制表符, 换行符, 和其它的特殊字符: `{ } ( ) [ ] '` " \ / >< | ; ! #&^ * % @ $`. 如果你想有一个区分度良好的命名, 比较好的选择是利用 时期, 连字符和下划线. 你也可以每个单词的首字母大写, 这叫大驼峰命名法, 比如这样 "`LikeThis`". 经验丰富的Linux用户会趋向于在文件名中不使用空格.
这个 "root" 可能既表示 "超级用户root" 又表示 " 根目录"(/root) . 应该根据上下文确定它的用法
@@ -113,7 +112,7 @@ Unix系统上叫做**目录**,某些其他系统上叫做**文件夹**。请
- 文件的名字
字符 说明
字符 说明
|||
|-|-|
@@ -133,7 +132,6 @@ sudo chgrp newgroup foo
sudo chmod [ugoa][+-=][rwxXst][,...] foo
```
例如,你可以按照下面使一个目录树被用户`foo`所有,并共享给组`bar`。
```Shell
@@ -142,7 +140,6 @@ sudo chown -R foo:bar .
sudo chmod -R ug+rwX,o=rX .
```
有三个更加特殊的权限位。
- Set-User-ID(SUID)位s或S替换用户的x
@@ -155,7 +152,7 @@ sudo chmod -R ug+rwX,o=rX .
给一个可执行文件设置 **Set-User-ID** 位将允许一个用户以他自己的ID运行这个可执行文件例如 **root 用户**)。类似的,给一个可执行文件设置了**Set-Group-ID** 位将允许一个用户以文件所属组的 ID 运行该文件。(例如 **root** 组)。由于这些设置可能导致安全风险,设置它们为可用的时候需要格外留意。
在一个目录上设置“**Set-Group-ID**”将打开[类 BSD ](https://zh.wikipedia.org/wiki/Berkeley_Software_Distribution)的文件创建计划,所有在目录里面创建的文件将属于目录所属的**组**。
在一个目录上设置“**Set-Group-ID**”将打开[类 BSD](https://zh.wikipedia.org/wiki/Berkeley_Software_Distribution)的文件创建计划,所有在目录里面创建的文件将属于目录所属的**组**。
给一个目录设置“**粘滞位**”将保护该目录内的文件不被其所有者之外的一个用户删除。为了保护一个在像“`/tmp`”这样所有人可写或同组可写的目录下文件内容的安全,不仅要去除**可写**权限,还要给其所在目录设置**粘滞位**。否则,该文件可以被任意对其所在目录有写权限的用户删除并创建一个同名的新文件。
@@ -175,7 +172,6 @@ drwxrwsr-x 2 root mail 4096 Oct 15 21:40 /var/mail
drwxrwxrwt 3 root root 4096 Oct 16 21:20 /var/tmp
```
`chmod`(1)有另一种数值模式来描述文件权限。这种数字模式使用3到4位八进制底为8
|数字|说明|
@@ -198,7 +194,6 @@ ls -l foo bar
-rw-r--r-- 1 penguin penguin 0 Oct 16 21:35 foo
```
如果你需要在 shell 脚本中访问“`ls -l`”显示的信息,你需要使用相关命令,如`test`(1)`stat`(1)和`readlink`(1)。shell 内置命令,如“[”或“test”可能也会用到。
## 1.2.4. 控制新建文件的权限umask
@@ -209,7 +204,6 @@ ls -l foo bar
(file permissions) = (requested file permissions) & ~(umask value)
```
|umask值|创建的文件权限|创建的目录权限|用法|
|-|-|-|-|
|0022|-rw-r--r--|-rwxr-xr-x|仅所属用户可写|
@@ -224,13 +218,10 @@ deepin 默认使用用户私人组UPG。每当一个新用户添加到系
组的成员。你需要注销之后重新登录(或运行 “`exec newgrp`”)以启用新
的组配置。
或者,你可以通过添加一行 “`auth optional pam_group.so`”到 “`/etc/
pam.d/common-auth`” 以及配置 “`/etc/security/group.conf`” ,使得在身
份验证过程动态添加用户到组。(参见第 4 章认证和访问控制。)
在 deepin 系统中,硬件设备是另一种文件。如果你从一个用户账户访问
某些设备出现问题例如CD-ROM和U盘你需要使这个用户成为相关
组的成员。
@@ -308,7 +299,6 @@ $ LANG=fr_FR.UTF-8 ls -l foo
-rw-rw-r-- 1 penguin penguin 0 oct. 16 21:35 foo
```
参考第 9.3.4 节 “定制时间和日期的显示” 自定义 “ls -l” 输出 。
## 1.2.7. 链接
@@ -319,9 +309,9 @@ $ LANG=fr_FR.UTF-8 ls -l foo
[硬链接](https://zh.wikipedia.org/wiki/Hard_link)
- 对现有文件重复名称
- 对现有文件重复名称
- “`ln foo bar`”
- “`ln foo bar`”
- [符号链接或 symlink](https://zh.wikipedia.org/wiki/Symbolic_link)
@@ -354,7 +344,6 @@ $ cat baz
New Content
```
硬链接可以在同一个文件系统内创建,并共用同一个 inode 号,由`ls`(1)带 “`-i`”选项显示。
符号链接总是名义上具有“`rwxrwxrwx`”的文件访问权限,如上面例子所示,实际的有效访问权限由它所指向的文件确定。
@@ -389,7 +378,6 @@ mypipe
$ rm mypipe
```
## 1.2.9. 套接字
套接字被广泛应用于所有的互联网通信数据库和操作系统本身。它类似于命名管道FIFO并且允许进程之间甚至不同计算机之间进行信息交换。对于套接字这些进程不需要在同一时间运行也不需要是同一个父进程的子进程。它是[进程间通信IPC](https://zh.wikipedia.org/wiki/Inter-process_communication)的一个节点。信息的交换可能会通过网络发生在不同主机之间。最常见的两种是 [互联网套接字](https://zh.wikipedia.org/wiki/Internet_socket) 和 [UNIX域套接字](https://zh.wikipedia.org/wiki/Unix_domain_socket) 。
@@ -432,7 +420,6 @@ crw-rw---T 1 root dialout 4, 64 Oct 16 20:57 /dev/ttyS0
crw-rw-rw- 1 root root 1, 5 Oct 16 20:57 /dev/zero
```
- "`/dev/sda`"的主设备号是8次设备号是0。它可以被`disk`群组的用户读写。
- "`/dev/sr0`"的主设备号是11次设备号是0。它可以被`cdrom`群组的用户读写。

View File

@@ -60,7 +60,6 @@ EDITOR=vim
export EDITOR
```
你可以在第 9 章 系统技巧中的第 9.3.6 节 “有颜色输出的命令”找到更多关于bash的定制技巧。
bash-completion 软件包能够让 bash 进行命令补全.
@@ -140,7 +139,10 @@ zsh几乎100%兼容bash的操作
我认为习惯于使用 Vim 命令是一个明智的选择,因为 Linux/Unix 系统里一般都附带了 Vi 编辑器。 (实际上最初的 `vi` 以及后来的 `nvi` 这类工具程序很常见。因为在 Vim 里提供了`F1`帮助键,在同类工具中它的功能更强大,所以我选择 Vim 而不是其它新出的一些工具。)
假设你不是用 [Emacs](https://zh.wikipedia.org/wiki/Emacs) 就是用 [XEmacs](https://zh.wikipedia.org/wiki/XEmacs) 作为你的编辑器,其实还有更好的选择,尤其是在编程的时候。 Emacs 还有很多其他的特点,包括新手导读,目录编辑器,邮件客户端等等。当编写脚本或程序的时候,它能自动识别当前工作模式所对应的格式,让使用更加便利。一些人甚至坚持认为 Linux 系统里最需要配备的就是 Emacs。花十分钟来学习 Emacs 可以为后面的工作剩下更多时间。在此强烈推荐学习使用 Emacs 时候直接使用 GNU Emacs 参考手册。
假设你不是用 [Emacs](https://zh.wikipedia.org/wiki/Emacs) 就是用 [XEmacs](https://zh.wikipedia.org/wiki/XEmacs) 作为你的编辑器,
其实还有更好的选择,尤其是在编程的时候。 Emacs 还有很多其他的特点,包括新手导读,目录编辑器,邮件客户端等等。当编写脚本或程序的时候,
它能自动识别当前工作模式所对应的格式,让使用更加便利。一些人甚至坚持认为 Linux 系统里最需要配备的就是 Emacs。花十分钟来学习 Emacs
可以为后面的工作剩下更多时间。在此强烈推荐学习使用 Emacs 时候直接使用 GNU Emacs 参考手册。
在实践应用中所有这些程序都会有一个教程,输入 "`vim`" 和F1键就可以启动Vim。建议你最好阅读一下前面的 35 行。移动光标到 "`|tutor|`" 并按 `Ctrl-]` 就可以看到在线培训教程。
@@ -157,10 +159,9 @@ Debian 有许多不同的编辑器。我们建议安装上面提到的 `vim` 软
Debian 通过命令“`/usr/bin/editor`”提供了对系统默认编辑器的统一访问,因此其它程序(例如 `reportbug`(1))可以调用它。你可以通过下列命令改变它。
```Shell
$ sudo update-alternatives --config editor
sudo update-alternatives --config editor
```
对于新手,我建议使用“`/usr/bin/vim.basic`”代替“`/usr/bin/vim.tiny`”,因为它支持格式高亮。
## 1.4.9.使用
@@ -195,8 +196,6 @@ $ sudo update-alternatives --config editor
## 1.4.10. 记录 shell 活动
shell 命令的输出有可能滚动出了屏幕并可能导致你无法再查看到它。将shell活动记录到文件中再来回顾它是个不错的主意。当你执行任何系统管理任务时这种记录是必不可少的。
记录 shell 活动的基本方法是在`script`(1)下运行 shell。
@@ -208,16 +207,14 @@ $ script
Script started, file is typescript
```
`script`下使用任何 shell 命令。
`Ctrl-D`来退出`script`
```Shell
$ vim typescript
vim typescript
```
## 1.4.11. 基本的 Unix 命令
让我们来学习基本的 Unix 命令。在这里我指的是一般意义上的“UNIX”。任何 UNIX 克隆系统通常都会提供等价的命令。deepin 系统也不例外。如果有一些命令不像你想的那样起作用,请不要担心。如果 shell 中使用了别名,其对应的命令输出会不同。这些例子并不意味着要以这个顺序来执行。
@@ -306,14 +303,13 @@ Unix 有一个惯例,以“.”开头的文件将被隐藏。它们一般为
尝试下列例子
```Shell
$ man man
$ man bash
$ man builtins
$ man grep
$ man ls
man man
man bash
man builtins
man grep
man ls
```
手册的风格可能让人有点难以习惯,因为它们都相当简洁,尤其是比较老旧、非常传统的那些手册。但是,一旦你习惯了它,你来欣赏它们的简洁。
请注意,许多 类 Unix 命令(包含来自 GNU 和 BSD 的)都可以显示简短的帮助信息,你可以使用下列的其中一种方式来查看它(有时不带任何参数也可以)。

View File

@@ -70,7 +70,6 @@ $ LANG=fr_FR.UTF-8 date -u
mer. 19 mai 2021 15:19:02 UTC
```
这里,`date`(1)程序执行时使用了不同的语言环境值
- 第一个命令,“`$LANG`” 设置为系统的默认[语言环境](https://zh.wikipedia.org/wiki/Locale)值 “`en_US.UTF-8`”。
@@ -85,7 +84,6 @@ $ date -u
mer. 19 mai 2021 15:19:24 UTC
```
对于语言环境配置的细节,参见 [第 8.1 节 “语言环境”](https://www.debian.org/doc/manuals/debian-reference/ch08.zh-cn.html#_the_locale)
## 1.5.3. "`$PATH`" 变量
@@ -122,13 +120,10 @@ $ date -R
Thu, 20 May 2021 01:08:12 +0900
```
这里的命令参数 "`-R`" 改变 `date`(1) 命令输出为 [RFC2822](http://tools.ietf.org/html/rfc2822) 标准的日期字符格式。
## 1.5.6. Shell 通配符
经常有这种情况你期望命令成串自动执行而不需要挨个输入,将文件名扩展为 **glob**(有时候被称为 **通配符**),以此来满足这方面的需求。
|shell glob 模式|匹配规则描述|
@@ -140,8 +135,6 @@ Thu, 20 May 2021 01:08:12 +0900
|[a-z]|"a" 到 "z" 之间的任意一个字符都可以作为精确字符|
|[^…]|除了包含在括号中的任意字符 ( " 1^ 2"除外 ),其它字符都可以作为精确字符|
尝试下列例子
```Shell
@@ -161,10 +154,9 @@ $ echo [^1-3]*
$ cd ..; rm -rf junk
```
参见 `glob`(7)。
与 shell 通用的文件名匹配方式不同, 使用 " `-name` " 选项的 `find` (1),其 shell 模式" `*` " ,匹配以" `.` "开始的文件名.(新[ POSIX ](https://zh.wikipedia.org/wiki/POSIX)的特性)
与 shell 通用的文件名匹配方式不同, 使用 " `-name` " 选项的 `find` (1),其 shell 模式" `*` " ,匹配以" `.` "开始的文件名.(新[POSIX](https://zh.wikipedia.org/wiki/POSIX)的特性)
BASH 可以使用内置的 shopt 选项如 " `dotglob` "" `noglob` "," `nocaseglob` "," `nullglob` "," `extglob` "定制全局行为,使用 `bash` ( 1 )查看详细说明。
@@ -186,7 +178,6 @@ $ [ 1 = 2 ] ; echo $?
1
```
## 1.5.8. 典型的顺序命令和 shell 重定向
让我们试着记住下面 Shell 命令里部分命令行所使用的命令习语。
@@ -213,25 +204,21 @@ deepin 系统是一个多任务的操作系统。后台任务让用户能够在
尝试下列例子
```Shell
$ </etc/motd pager
</etc/motd pager
```
```Shell
$ pager </etc/motd
pager </etc/motd
```
```Shell
$ pager /etc/motd
pager /etc/motd
```
```Shell
$ cat /etc/motd | pager
cat /etc/motd | pager
```
尽管4个 shell 重定向的例子都会显示相同的结果,但最后一个例子毫无意义地运行了额外的 `cat` 命令浪费了资源。
shell 允许你使用 `exec` 通过任意一个文件描述符来打开文件。
@@ -245,7 +232,6 @@ $ cat bar
Hello
```
预定义的文件描述符0-2。
|设备|说明|文件描述符|
@@ -261,10 +247,9 @@ Hello
尝试下列例子
```Shell
$ alias la='ls -la'
alias la='ls -la'
```
现在,“`la`”是“`ls -al`”的简写形式,并同样会以长列表形式列出所有的文件。
你可以使用 `alias` 来列出所有的别名(参见 `bash`(1) 中的“SHELL BUILTIN COMMANDS”
@@ -275,7 +260,6 @@ $ alias
alias la='ls -la'
```
你可以使用 `type` 来确认命令的准确路径或类型(参见 `bash`(1) 中的“SHELL BUILTIN COMMANDS”
尝试下列例子
@@ -291,7 +275,6 @@ $ type file
file is /usr/bin/file
```
`ls` 在最近被使用过,而 “`file`” 没有,因此 “`ls`” 标记为 “hashed”被录入哈希表即 shell 有一个内部的记录用来快速访问 “`ls`” 所处的位置。
:::tip

View File

@@ -1,3 +1,5 @@
# 简介
我认为学习一个计算机系统,就像学习一门新的外语。虽然教程和文档是有帮助的,但你必须自己练习。为了帮助你平滑起步,我详细说明一些基本要点。
[deepin](https://www.deepin.org/) [GNU](https://zh.wikipedia.org/wiki/GNU)/[Linux](https://zh.wikipedia.org/wiki/Linux)中最强大的设计来自[Unix](https://zh.wikipedia.org/wiki/Unix)操作系统,一个[多用户](https://zh.wikipedia.org/wiki/Multi-user)[多任务](https://zh.wikipedia.org/wiki/Computer_multitasking)的操作系统。你必须学会利用这些特性以及Unix和GNU/Linux的相似性。