From 275cb24b0fa49a9607a714aefa86f14be8519a95 Mon Sep 17 00:00:00 2001 From: estomm Date: Fri, 15 Nov 2019 18:41:12 +0800 Subject: [PATCH] linux --- Linux/基础篇/模板.md | 28 ++ Linux/基础篇/第0章 系统概述.md | 24 +- Linux/基础篇/第1章 文件管理.md | 640 ++++++++++++++++++++++++++++---- Linux/基础篇/第2章 用户管理.md | 59 +-- Linux/基础篇/第3章 磁盘管理.md | 98 ++--- Linux/工具篇/Vim编辑器.md | 126 ++++--- Linux/工具篇/fdisk分区与挂载.md | 56 +++ 7 files changed, 777 insertions(+), 254 deletions(-) create mode 100644 Linux/基础篇/模板.md create mode 100644 Linux/工具篇/fdisk分区与挂载.md diff --git a/Linux/基础篇/模板.md b/Linux/基础篇/模板.md new file mode 100644 index 00000000..bae620a8 --- /dev/null +++ b/Linux/基础篇/模板.md @@ -0,0 +1,28 @@ +# 标题 +> 写的太详细了,反而会失去价值。应该尽可能简单的描述。 +> 包括两部分:命令介绍。操作实现。 +> 当前的内容就包括这些把,遇到什么问题,就去解决什么问题。 +## 分类 + +### ls命令 +简介 + +balabala + +命令 + +``` +ls [配置] [目录] +``` + +选项 + +* -a:这是a +* -b:这是b + +实例 + +``` +输出并显示行号 +ls| cat -n +``` \ No newline at end of file diff --git a/Linux/基础篇/第0章 系统概述.md b/Linux/基础篇/第0章 系统概述.md index 2aed2bbb..6d6c9099 100644 --- a/Linux/基础篇/第0章 系统概述.md +++ b/Linux/基础篇/第0章 系统概述.md @@ -55,18 +55,24 @@ s就是Super User的意思,这里存放的是系统管理员使用的系统管 * /usr: 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。 - * /usr/bin: -系统用户使用的应用程序。 - - * /usr/sbin: -超级用户使用的比较高级的管理程序和系统守护程序。 - - * /usr/src: -内核源代码默认的放置目录。 + * /usr/bin/ 存放系统命令,普通用户和超级用户都可以执行。这些命令和系统启动无关,在单用户模式下不能执行 + * /usr/sbin/ 存放根文件系统不必要的系统管理命令,如多数服务程序,只有 root 可以使用。 + * /usr/lib/ 应用程序调用的函数库保存位置 + * /usr/XllR6/ 图形界面系统保存位置 + * /usr/local/ 手工安装的软件保存位置。我们一般建议源码包软件安装在这个位置 + * /usr/share/ 应用程序的资源文件保存位置,如帮助文档、说明文档和字体目录 + * /usr/src/ 源码包保存位置。我们手工下载的源码包和内核源码包都可以保存到这里。不过笔者更习惯把手工下载的源码包保存到 /usr/local/src/ 目录中,把内核源码保存到 /usr/src/linux/ 目录中 + * /usr/include C/C++ 等编程语言头文件的放置目录 * /var: 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。 - + * /var/lib/ 程序运行中需要调用或改变的数据保存位置。如 MySQL 的数据库保存在 /var/lib/mysql/ 目录中 + * /var/log/ 登陆文件放置的目录,其中所包含比较重要的文件如 /var/log/messages, /var/log/wtmp 等。 + * /var/run/ 一些服务和程序运行后,它们的 PID(进程 ID)保存位置 + * /var/spool/ 里面主要都是一些临时存放,随时会被用户所调用的数据,例如 /var/spool/mail/ 存放新收到的邮件,/var/spool/cron/ 存放系统定时任务。 + * /var/www/ RPM 包安装的 Apache 的网页主目录 + * /var/nis和/var/yp NIS 服务机制所使用的目录,nis 主要记录所有网络中每一个 client 的连接信息;yp 是 linux 的 nis 服务的日志文件存放的目录 + * /var/tmp 一些应用程序在安装或执行时,需要在重启后使用的某些文件,此目录能将该类文件暂时存放起来,完成后再行删除 * /run: 是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。 diff --git a/Linux/基础篇/第1章 文件管理.md b/Linux/基础篇/第1章 文件管理.md index 6681fb46..444b9e57 100644 --- a/Linux/基础篇/第1章 文件管理.md +++ b/Linux/基础篇/第1章 文件管理.md @@ -1,39 +1,289 @@ # 文件及目录管理 -> * 文件管理,目录的创建、删除、查询、管理: mkdir rm mv +> * ls: 列出目录 +> * cd:切换目录 +> * pwd:显示目前的目录 +> * mkdir:创建一个新的目录 +> * rmdir:删除一个空的目录 +> * cp: 复制文件或目录 +> * rm: 移除文件或目录 +> * mv: 移动文件与目录,或修改文件与目录的名称 > * 文件的查询和检索: find locate > * 查看文件内容:cat vi tail more > * 管道和重定向: ; | && > > * 写出命令以及主要的参数说明,具体内容查看参考手册。 -## 1 创建、删除、移动、复制 + +- [文件及目录管理](#%e6%96%87%e4%bb%b6%e5%8f%8a%e7%9b%ae%e5%bd%95%e7%ae%a1%e7%90%86) + - [1 文件目录操作](#1-%e6%96%87%e4%bb%b6%e7%9b%ae%e5%bd%95%e6%93%8d%e4%bd%9c) + - [ls:列出目录](#ls%e5%88%97%e5%87%ba%e7%9b%ae%e5%bd%95) + - [cd:切换目录](#cd%e5%88%87%e6%8d%a2%e7%9b%ae%e5%bd%95) + - [pwd:显示目前所在的目录](#pwd%e6%98%be%e7%a4%ba%e7%9b%ae%e5%89%8d%e6%89%80%e5%9c%a8%e7%9a%84%e7%9b%ae%e5%bd%95) + - [mkdir (创建新目录)](#mkdir-%e5%88%9b%e5%bb%ba%e6%96%b0%e7%9b%ae%e5%bd%95) + - [rmdir (删除空的目录)](#rmdir-%e5%88%a0%e9%99%a4%e7%a9%ba%e7%9a%84%e7%9b%ae%e5%bd%95) + - [cp (复制文件或目录)](#cp-%e5%a4%8d%e5%88%b6%e6%96%87%e4%bb%b6%e6%88%96%e7%9b%ae%e5%bd%95) + - [rm (移除文件或目录)](#rm-%e7%a7%bb%e9%99%a4%e6%96%87%e4%bb%b6%e6%88%96%e7%9b%ae%e5%bd%95) + - [mv (移动文件与目录,或修改名称)](#mv-%e7%a7%bb%e5%8a%a8%e6%96%87%e4%bb%b6%e4%b8%8e%e7%9b%ae%e5%bd%95%e6%88%96%e4%bf%ae%e6%94%b9%e5%90%8d%e7%a7%b0) + - [2 文件查找](#2-%e6%96%87%e4%bb%b6%e6%9f%a5%e6%89%be) + - [find](#find) + - [locate](#locate) + - [3 文件内容](#3-%e6%96%87%e4%bb%b6%e5%86%85%e5%ae%b9) + - [cat](#cat) + - [tac](#tac) + - [nl](#nl) + - [more](#more) + - [less](#less) + - [head](#head) + - [tail](#tail) + - [$diff file1 file2](#diff-file1-file2) + - [使用egrep查询文件内容:](#%e4%bd%bf%e7%94%a8egrep%e6%9f%a5%e8%af%a2%e6%96%87%e4%bb%b6%e5%86%85%e5%ae%b9) + - [4 链接(快捷方式)](#4-%e9%93%be%e6%8e%a5%e5%bf%ab%e6%8d%b7%e6%96%b9%e5%bc%8f) + - [硬连接](#%e7%a1%ac%e8%bf%9e%e6%8e%a5) + - [软连接](#%e8%bd%af%e8%bf%9e%e6%8e%a5) + - [实验](#%e5%ae%9e%e9%aa%8c) + - [总结](#%e6%80%bb%e7%bb%93) + - [5 管道和重定向](#5-%e7%ae%a1%e9%81%93%e5%92%8c%e9%87%8d%e5%ae%9a%e5%90%91) + - [6 打包压缩](#6-%e6%89%93%e5%8c%85%e5%8e%8b%e7%bc%a9) + - [打包/ 压缩](#%e6%89%93%e5%8c%85-%e5%8e%8b%e7%bc%a9) + - [解包/解压缩](#%e8%a7%a3%e5%8c%85%e8%a7%a3%e5%8e%8b%e7%bc%a9) + - [7 属性修改](#7-%e5%b1%9e%e6%80%a7%e4%bf%ae%e6%94%b9) + - [chgrp:更改文件属组](#chgrp%e6%9b%b4%e6%94%b9%e6%96%87%e4%bb%b6%e5%b1%9e%e7%bb%84) + - [chown:更改文件属主,也可以同时更改文件属组](#chown%e6%9b%b4%e6%94%b9%e6%96%87%e4%bb%b6%e5%b1%9e%e4%b8%bb%e4%b9%9f%e5%8f%af%e4%bb%a5%e5%90%8c%e6%97%b6%e6%9b%b4%e6%94%b9%e6%96%87%e4%bb%b6%e5%b1%9e%e7%bb%84) + - [chmod](#chmod) + +## 1 文件目录操作 +### ls:列出目录 +简介: + +在Linux系统当中, ls 命令可能是最常被运行的。 + +语法: ``` -创建:mkdir -删除:rm -删除非空目录:rm -rf file目录 -删除日志 rm *log (等价: $find ./ -name “*log” -exec rm {} ;) -移动:mv -复制:cp (复制目录:cp -r ) -复制目录:$cp -r source_dir dest_dir -``` -## 2 目录切换 -``` -找到文件/目录位置:cd -切换到上一个工作目录: cd - -切换到home目录: cd or cd ~ -显示当前路径: pwd -更改当前工作路径为path: $cd path +[root@www ~]# ls [-aAdfFhilnrRSt] 目录名称 +[root@www ~]# ls [--color={never,auto,always}] 目录名称 +[root@www ~]# ls [--full-time] 目录名称 ``` -## 3 列出目录项 +选项: + +* -a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用) +* -d :仅列出目录本身,而不是列出目录内的文件数据(常用) +* -l :长数据串列出,包含文件的属性与权限等等数据;(常用) + +实例: ``` -显示当前目录下的文件 ls -按时间排序,以列表的方式显示目录项 ls -lrt -给每项文件前面增加一个id编号(看上去更加整洁):>ls | cat -n +# 将家目录下的所有文件列出来(含属性与隐藏档) +[root@www ~]# ls -al ~ ``` -## 4 查找目录及文件 find/locate +### cd:切换目录 +简介: + +cd是Change Directory的缩写,这是用来变换工作目录的命令。 + +语法: +``` +cd [相对路径或绝对路径] +``` + +实例: +``` +#使用 mkdir 命令创建 runoob 目录 +[root@www ~]# mkdir runoob + +#使用绝对路径切换到 runoob 目录 +[root@www ~]# cd /root/runoob/ + +#使用相对路径切换到 runoob 目录 +[root@www ~]# cd ./runoob/ + +# 表示回到自己的家目录,亦即是 /root 这个目录 +[root@www runoob]# cd ~ + +# 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思; +[root@www ~]# cd .. +接下来大家多操作几次应该就可以很好的理解 cd 命令的。 +``` + +### pwd:显示目前所在的目录 +简介: + +pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。 + +``` +[root@www ~]# pwd [-P] +``` + +选项: + +* -P :显示出确实的路径,而非使用连结 (link) 路径。 + +实例: +``` +[root@www ~]# pwd +/root <== 显示出目录啦~ +实例显示出实际的工作目录,而非连结档本身的目录名而已。 + +[root@www ~]# cd /var/mail <==注意,/var/mail是一个连结档 +[root@www mail]# pwd +/var/mail <==列出目前的工作目录 +[root@www mail]# pwd -P +/var/spool/mail <==怎么回事?有没有加 -P 差很多~ +[root@www mail]# ls -ld /var/mail +lrwxrwxrwx 1 root root 10 Sep 4 17:54 /var/mail -> spool/mail +# 看到这里应该知道为啥了吧?因为 /var/mail 是连结档,连结到 /var/spool/mail +# 所以,加上 pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径啊! +``` + +### mkdir (创建新目录) +简介: + +如果想要创建新的目录的话,那么就使用mkdir (make directory)吧。 + +语法: +``` +mkdir [-mp] 目录名称 +``` + +选项: + +* -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~ +* -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来! + +``` +# 请到/tmp底下尝试创建数个新目录看看: +[root@www ~]# cd /tmp +[root@www tmp]# mkdir test <==创建一名为 test 的新目录 +[root@www tmp]# mkdir test1/test2/test3/test4 +mkdir: cannot create directory `test1/test2/test3/test4': +No such file or directory <== 没办法直接创建此目录啊! +[root@www tmp]# mkdir -p test1/test2/test3/test4 +加了这个 -p 的选项,可以自行帮你创建多层目录! + +# 实例:创建权限为 rwx--x--x 的目录。 +[root@www tmp]# mkdir -m 711 test2 +[root@www tmp]# ls -l +drwxr-xr-x 3 root root 4096 Jul 18 12:50 test +drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1 +drwx--x--x 2 root root 4096 Jul 18 12:54 test2 +上面的权限部分,如果没有加上 -m 来强制配置属性,系统会使用默认属性。 + +如果我们使用 -m ,如上例我们给予 -m 711 来给予新的目录 drwx--x--x 的权限。 +``` + +### rmdir (删除空的目录) + +语法: +``` + rmdir [-p] 目录名称 +``` +选项: + +* -p :连同上一级『空的』目录也一起删除 + +实例: +``` +删除 runoob 目录 +[root@www tmp]# rmdir runoob/ +将 mkdir 实例中创建的目录(/tmp 底下)删除掉! + +[root@www tmp]# ls -l <==看看有多少目录存在? +drwxr-xr-x 3 root root 4096 Jul 18 12:50 test +drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1 +drwx--x--x 2 root root 4096 Jul 18 12:54 test2 +[root@www tmp]# rmdir test <==可直接删除掉,没问题 +[root@www tmp]# rmdir test1 <==因为尚有内容,所以无法删除! +rmdir: `test1': Directory not empty +[root@www tmp]# rmdir -p test1/test2/test3/test4 +[root@www tmp]# ls -l <==您看看,底下的输出中test与test1不见了! +drwx--x--x 2 root root 4096 Jul 18 12:54 test2 +利用 -p 这个选项,立刻就可以将 test1/test2/test3/test4 一次删除。 + +不过要注意的是,这个 rmdir 仅能删除空的目录,你可以使用 rm 命令来删除非空目录。 +``` + +### cp (复制文件或目录) +简介: + +cp 即拷贝文件和目录。 + +语法: +``` +[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination) +[root@www ~]# cp [options] source1 source2 source3 .... directory +``` +选项: + +* -a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用) +* -d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身; +* -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次; +* -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用) +* -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身; +* -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用); +* -r:递归持续复制,用於目录的复制行为;(常用) +* -s:复制成为符号连结档 (symbolic link),亦即『捷径』文件; +* -u:若 destination 比 source 旧才升级 destination ! + +实例: +``` +用 root 身份,将 root 目录下的 .bashrc 复制到 /tmp 下,并命名为 bashrc + +[root@www ~]# cp ~/.bashrc /tmp/bashrc +[root@www ~]# cp -i ~/.bashrc /tmp/bashrc +cp: overwrite `/tmp/bashrc'? n <==n不覆盖,y为覆盖 +``` + +### rm (移除文件或目录) +语法: +``` + rm [-fir] 文件或目录 +``` + +选项与参数: + +* -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息; +* -i :互动模式,在删除前会询问使用者是否动作 +* -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!! + +实例: +``` +将刚刚在 cp 的实例中创建的 bashrc 删除掉! + +[root@www tmp]# rm -i bashrc +rm: remove regular file `bashrc'? y +如果加上 -i 的选项就会主动询问喔,避免你删除到错误的档名! +``` +### mv (移动文件与目录,或修改名称) +语法: +``` +[root@www ~]# mv [-fiu] source destination +[root@www ~]# mv [options] source1 source2 source3 .... directory +``` +选项: + +* -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖; +* -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖! +* -u :若目标文件已经存在,且 source 比较新,才会升级 (update) + +实例: +``` +复制一文件,创建一目录,将文件移动到目录中 +[root@www ~]# cd /tmp +[root@www tmp]# cp ~/.bashrc bashrc +[root@www tmp]# mkdir mvtest +[root@www tmp]# mv bashrc mvtest +将某个文件移动到某个目录去,就是这样做! +将刚刚的目录名称更名为 mvtest2 +[root@www tmp]# mv mvtest mvtest2 +``` +## 2 文件查找 + +### find +简介: + 搜寻文件或目录: + +实例: ``` $find ./ -name "core*" | xargs file ``` @@ -49,68 +299,242 @@ $find ./ -name "*.o" -exec rm {} \; ``` $find ./ | wc -l ``` + +### locate +简介: + find是实时查找,如果需要更快的查询,可试试locate;locate会为文件系统建立索引数据库,如果有文件更新,需要定期执行更新命令来更新索引库: + +语法: ``` $locate string $updatedb ``` -2.5. 查看文件内容 -查看文件: +## 3 文件内容 +### cat +简介: + +由第一行开始显示文件内容 + +语法: ``` -cat vi head tail more +cat [-AbEnTv] ``` -显示时同时显示行号: + +选项与参数: + +* -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已; +* -b :列出行号,仅针对非空白行做行号显示,空白行不标行号! +* -E :将结尾的断行字节 $ 显示出来; +* -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同; +* -T :将 [tab] 按键以 ^I 显示出来; +* -v :列出一些看不出来的特殊字符 + +实例: ``` -$cat -n +检看 /etc/issue 这个文件的内容: + +[root@www ~]# cat /etc/issue +CentOS release 6.4 (Final) +Kernel \r on an \m ``` -按页显示列表内容: + +### tac +简介: + +tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!如: + +语法: ``` -$ls -al | more +[root@www ~]# tac /etc/issue ``` -只看前10行: + +### nl +简介: + +显示行号 + +语法: ``` -$head - 10 ** +nl [-bnw] 文件 ``` -显示文件第一行: + +选项与参数: + +* -b :指定行号指定的方式,主要有两种: +* -b a :表示不论是否为空行,也同样列出行号(类似 cat -n); +* -b t :如果有空行,空的那一行不要列出行号(默认值); +* -n :列出行号表示的方法,主要有三种: +* -n ln :行号在荧幕的最左方显示; +* -n rn :行号在自己栏位的最右方显示,且不加 0 ; +* -n rz :行号在自己栏位的最右方显示,且加 0 ; +* -w :行号栏位的占用的位数。 + +实例: ``` -$head -1 filename +实例一:用 nl 列出 /etc/issue 的内容 + +[root@www ~]# nl /etc/issue + 1 CentOS release 6.4 (Final) + 2 Kernel \r on an \m ``` -显示文件倒数第五行: + +### more +简介: + +一页一页翻动 + +语法: ``` -$tail -5 filename +[root@www ~]# more /etc/man_db.config +# +# Generated automatically from man.conf.in by the +# configure script. +# +# man.conf from man-1.6d +....(中间省略).... +--More--(28%) <== 重点在这一行喔!你的光标也会在这里等待你的命令 ``` -查看两个文件间的差别: + +选项: + +* 空白键 (space):代表向下翻一页; +* Enter :代表向下翻『一行』; +* /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字; +* :f :立刻显示出档名以及目前显示的行数; +* q :代表立刻离开 more ,不再显示该文件内容。 +* b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。 + +### less +简介: + +一页一页翻动,以下实例输出/etc/man.config文件的内容: + +语法: ``` -$diff file1 file2 +[root@www ~]# less /etc/man.config +# +# Generated automatically from man.conf.in by the +# configure script. +# +# man.conf from man-1.6d +....(中间省略).... +: <== 这里可以等待你输入命令! +``` + +选项: +* 空白键 :向下翻动一页; +* [pagedown]:向下翻动一页; +* [pageup] :向上翻动一页; +* /字串 :向下搜寻『字串』的功能; +* ?字串 :向上搜寻『字串』的功能; +* n :重复前一个搜寻 (与 / 或 ? 有关!) +* N :反向的重复前一个搜寻 (与 / 或 ? 有关!) +* q :离开 less 这个程序; + +### head +简介: + +取出文件前面几行 + +语法: +``` +head [-n number] 文件 +``` +选项与参数: + +* -n :后面接数字,代表显示几行的意思 + +实例: +``` +[root@www ~]# head /etc/man.config +默认的情况中,显示前面 10 行!若要显示前 20 行,就得要这样: + +[root@www ~]# head -n 20 /etc/man.config +``` + +### tail +简介: + +取出文件后面几行 + +语法: +``` +tail [-n number] 文件 +``` + +选项与参数: + +* -n :后面接数字,代表显示几行的意思 +* -f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测 +``` +[root@www ~]# tail /etc/man.config +# 默认的情况中,显示最后的十行!若要显示最后的 20 行,就得要这样: +[root@www ~]# tail -n 20 /etc/man.config +``` + +### $diff file1 file2 ``` 动态显示文本最新信息: ``` -$tail -f crawler.log -``` -2.6. 查找文件内容 -使用egrep查询文件内容: +### 使用egrep查询文件内容: ``` egrep '03.1\/CO\/AE' TSF_STAT_111130.log.012 egrep 'A_LMCA777:C' TSF_STAT_111130.log.035 > co.out2 ``` -## 7 文件与目录权限修改 -``` -改变文件的拥有者 chown -改变文件读、写、执行等属性 chmod -递归子目录修改: chown -R tuxapp source/ -增加脚本可执行权限: chmod a+x myscript -``` -## 8 快捷方式 -创建符号链接/硬链接: -``` -ln cc ccAgain :硬连接;删除一个,将仍能找到; -ln -s cc ccTo :符号链接(软链接);删除源,另一个无法使用;(后面一个ccTo 为新建的文件) -``` +## 4 链接(快捷方式) -## 9 管道和重定向 +Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln 命令产生硬链接。 + +### 硬连接 + +硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。 + +硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。 + +### 软连接 + +另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。 + +### 实验 +``` +[oracle@Linux]$ touch f1 #创建一个测试文件f1 +[oracle@Linux]$ ln f1 f2 #创建f1的一个硬连接文件f2 +[oracle@Linux]$ ln -s f1 f3 #创建f1的一个符号连接文件f3 +[oracle@Linux]$ ls -li # -i参数显示文件的inode节点信息 +total 0 +9797648 -rw-r--r-- 2 oracle oinstall 0 Apr 21 08:11 f1 +9797648 -rw-r--r-- 2 oracle oinstall 0 Apr 21 08:11 f2 +9797649 lrwxrwxrwx 1 oracle oinstall 2 Apr 21 08:11 f3 -> f1 +``` +从上面的结果中可以看出,硬连接文件 f2 与原文件 f1 的 inode 节点相同,均为 9797648,然而符号连接文件的 inode 节点不同。 +``` +[oracle@Linux]$ echo "I am f1 file" >>f1 +[oracle@Linux]$ cat f1 +I am f1 file +[oracle@Linux]$ cat f2 +I am f1 file +[oracle@Linux]$ cat f3 +I am f1 file +[oracle@Linux]$ rm -f f1 +[oracle@Linux]$ cat f2 +I am f1 file +[oracle@Linux]$ cat f3 +cat: f3: No such file or directory +``` +通过上面的测试可以看出:当删除原始文件 f1 后,硬连接 f2 不受影响,但是符号连接 f1 文件无效 + +### 总结 +依此您可以做一些相关的测试,可以得到以下全部结论: + +* 删除符号连接f3,对f1,f2无影响; +* 删除硬连接f2,对f1,f3也无影响; +* 删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效; +* 同时删除原文件f1,硬连接f2,整个文件会真正的被删除。 +## 5 管道和重定向 ``` 批处理命令连接执行,使用 | 串联: 使用分号 ; @@ -142,15 +566,99 @@ echo aa >> a.txt ``` -## 10 Bash快捷输入或删除 -快捷键: -``` -Ctl-U 删除光标到行首的所有字符,在某些设置下,删除全行 -Ctl-W 删除当前光标到前边的最近一个空格之间的字符 -Ctl-H backspace,删除光标前边的字符 -Ctl-R 匹配最相近的一个文件,然后输出 -``` -2.12. 综合应用 -查找record.log中包含AAA,但不包含BBB的记录的总数: +## 6 打包压缩 +### 打包/ 压缩 +在linux中打包和压缩和分两步来实现的; -cat -v record.log | grep AAA | grep -v BBB | wc -l \ No newline at end of file +1. 打包是将多个文件归并到一个文件: +``` +tar -cvf etc.tar /etc <==仅打包,不压缩! +-c :打包选项 +-v :显示打包进度 +-f :使用档案文件 +注:有的系统中指定参数时不需要在前面加上-,直接使用tar xvf +``` + +用tar实现文件夹同步,排除部分文件不同步: + +``` +tar --exclude '*.svn' -cvf - /path/to/source | ( cd /path/to/target; tar -xf -) +``` + +2. 压缩,生成 demo.txt.gz +``` +$gzip demo.txt +``` + +### 解包/解压缩 +解包 +``` +tar -xvf demo.tar +-x 解包选项 +``` + +解压后缀为 .tar.gz的文件 + +1. 解压缩 +``` +$gunzip demo.tar.gz +``` +2. 解包: +``` +$tar -xvf demo.tar +``` + +bz2解压解包: +``` +tar jxvf demo.tar.bz2 +``` +如果tar 不支持j,则同样需要分两步来解包解压缩,使用bzip2来解压,再使用tar解包: +``` +bzip2 -d demo.tar.bz2 +tar -xvf demo.tar +-d decompose,解压缩 +``` + +tar解压参数说明: +``` +-z 解压gz文件 +-j 解压bz2文件 +-J 解压xz文件 +``` + + + +## 7 属性修改 +### chgrp:更改文件属组 +语法: +``` +chgrp [-R] 属组名 文件名 +``` +参数选项: + +-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。 + + +### chown:更改文件属主,也可以同时更改文件属组 +语法: +``` +chown [–R] 属主名 文件名 +chown [-R] 属主名:属组名 文件名 +``` + +### chmod +Linux文件属性有两种设置方法,一种是数字,一种是符号。 + +Linux文件的基本权限就有九个 + +* 三种身份:owner/group/others +* 三种权限:read/write/execute + +各权限的分数对照表如下: + +* r:4、w:2、x:1 + +``` +chmod [-R] xyz 文件或目录 +chmod u/g/o/a +(加入)/-(除去)/=(设定) r/w/x 文件或目录 +``` \ No newline at end of file diff --git a/Linux/基础篇/第2章 用户管理.md b/Linux/基础篇/第2章 用户管理.md index 77f95a4e..0570b68f 100644 --- a/Linux/基础篇/第2章 用户管理.md +++ b/Linux/基础篇/第2章 用户管理.md @@ -1,7 +1,7 @@ # 用户管理 > useradd passwd userdel usermod chmod chown .bashrc .bash_profile -## 1 添加删除 +## 1 用户管理 添加用户,为用户创建相应的帐号和用户目录/home/username; ``` @@ -26,7 +26,7 @@ $su userB 进入交互模型,输入密码授权进入; -## 2 用户的组 +## 2 用户组管理 将用户加入到组 默认情况下,添加用户操作也会相应的增加一个同名的组,用户属于同名组; 查看当前用户所属的组: ``` @@ -49,60 +49,7 @@ $more /etc/passwd $more /etc/group ``` -## 3 用户权限 -使用ls -l可查看文件的属性字段,文件属性字段总共有10个字母组成,第一个字母表示文件类型,如果这个字母是一个减号”-”,则说明该文件是一个普通文件。字母”d”表示该文件是一个目录,字母”d”,是dirtectory(目录)的缩写。 后面的9个字母为该文件的权限标识,3个为一组,分别表示文件所属用户、用户所在组、其它用户的读写和执行权限; 例如: -``` -[/home/weber#]ls -l /etc/group --rwxrw-r-- colin king 725 2013-11-12 15:37 /home/colin/a -``` -表示这个文件对文件拥有者colin这个用户可读写、可执行;对colin所在的组(king)可读可写;对其它用户只可读; - -更改读写权限 -使用chmod命令更改文件的读写权限,更改读写权限有两种方法,一种是字母方式,一种是数字方式 - -字母方式: -``` -$chmod userMark(+|-)PermissionsMark -``` -userMark取值: -``` -u:用户 -g:组 -o:其它用户 -a:所有用户 -``` -PermissionsMark取值: -``` -r:读 -w:写 -x:执行 -``` -例如: -``` -$chmod a+x main 对所有用户给文件main增加可执行权限 -$chmod g+w blogs 对组用户给文件blogs增加可写权限 -``` - -数字方式: - -数字方式直接设置所有权限,相比字母方式,更加简洁方便; - -使用三位八进制数字的形式来表示权限,第一位指定属主的权限,第二位指定组权限,第三位指定其他用户的权限,每位通过4(读)、2(写)、1(执行)三种数值的和来确定权限。如6(4+2)代表有读写权,7(4+2+1)有读、写和执行的权限。 - -例如: -``` -$chmod 740 main 将main的用户权限设置为rwxr----- -``` -更改文件或目录的拥有者 -``` -$chown username dirOrFile -``` -使用-R选项递归更改该目下所有文件的拥有者: -``` -$chown -R weber server/ -``` - -# 4 环境变量 +# 3 环境变量 ### bashrc & profile bashrc与profile都用于保存用户的环境信息,bashrc用于交互式non-loginshell,而profile用于交互式login shell。 diff --git a/Linux/基础篇/第3章 磁盘管理.md b/Linux/基础篇/第3章 磁盘管理.md index 04ac3f86..5f7ef78a 100644 --- a/Linux/基础篇/第3章 磁盘管理.md +++ b/Linux/基础篇/第3章 磁盘管理.md @@ -1,8 +1,9 @@ # 磁盘管理 -> * 查看磁盘空间 df -h -> * 查看目录大小 du -sh +> * df:列出文件系统的整体磁盘使用量 +> * du:检查磁盘空间使用量 +> * fdisk:用于磁盘分区 > * 打包 tar -cvf > * 解包 tar -xvf > * 压缩 gzip bzip @@ -10,82 +11,49 @@ 解压缩 gunzip bzip -## 1 查看磁盘空间 -查看磁盘空间利用大小: -``` -df -h -``` --h: human缩写,以易读的方式显示结果 -查看当前目录所占空间大小: -``` -du -sh --h 人性化显示 --s 递归整个目录的大小 -$du -sh -653M -``` -查看当前目录下所有子文件夹排序后的大小: -``` -for i in `ls`; do du -sh $i; done | sort -或者: -du -sh `ls` | sort -``` +## 1 df:磁盘使用量 +df命令参数功能: -4.2. 打包/ 压缩 -在linux中打包和压缩和分两步来实现的; +检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。 -* 打包是将多个文件归并到一个文件: +语法: ``` -tar -cvf etc.tar /etc <==仅打包,不压缩! --c :打包选项 --v :显示打包进度 --f :使用档案文件 -注:有的系统中指定参数时不需要在前面加上-,直接使用tar xvf +df [-ahikHTm] [目录或文件名] ``` +选项与参数: +* -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统; +* -k :以 KBytes 的容量显示各文件系统; +* -m :以 MBytes 的容量显示各文件系统; +* -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示; +* -H :以 M=1000K 取代 M=1024K 的进位方式; +* -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出; +* -i :不用硬盘容量,而以 inode 的数量来显示 -用tar实现文件夹同步,排除部分文件不同步: +## 2 du:使用空间 -``` -tar --exclude '*.svn' -cvf - /path/to/source | ( cd /path/to/target; tar -xf -) -``` +Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍Linux du命令。 -* 压缩,生成 demo.txt.gz +语法: ``` -$gzip demo.txt +du [-ahskm] 文件或目录名称 ``` +选项与参数: -## 3 解包/解压缩 -解包 -``` -tar -xvf demo.tar --x 解包选项 -``` +* -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。 +* -h :以人们较易读的容量格式 (G/M) 显示; +* -s :列出总量而已,而不列出每个各别的目录占用容量; +* -S :不包括子目录下的总计,与 -s 有点差别。 +* -k :以 KBytes 列出容量显示; +* -m :以 MBytes 列出容量显示; -解压后缀为 .tar.gz的文件 +## 3 fdisk:磁盘分区 +fdisk 是 Linux 的磁盘分区表操作工具。 -1. 解压缩 +语法: ``` -$gunzip demo.tar.gz -``` -2. 解包: -``` -$tar -xvf demo.tar +fdisk [-l] 装置名称 ``` +选项与参数: -bz2解压解包: -``` -tar jxvf demo.tar.bz2 -``` -如果tar 不支持j,则同样需要分两步来解包解压缩,使用bzip2来解压,再使用tar解包: -``` -bzip2 -d demo.tar.bz2 -tar -xvf demo.tar --d decompose,解压缩 -``` +* -l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。 -tar解压参数说明: -``` --z 解压gz文件 --j 解压bz2文件 --J 解压xz文件 -``` diff --git a/Linux/工具篇/Vim编辑器.md b/Linux/工具篇/Vim编辑器.md index 8629a61b..a06fd567 100644 --- a/Linux/工具篇/Vim编辑器.md +++ b/Linux/工具篇/Vim编辑器.md @@ -87,70 +87,80 @@ nG |n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到 ### 搜索替换 |操作|效果| |-|-| -|/word 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用) -|?word 向光标之上寻找一个字符串名称为 word 的字符串。 -|n 这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串! -|N 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。 -|使用 /word 配合 n 及 N 是非常有帮助的!可以让你重复的找到一些你搜寻的关键词! -| :n1,n2s/word1/word2/g n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则: -『:100,200s/vbird/VBIRD/g』。(常用) -:1,$s/word1/word2/g 或 :%s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用) -:1,$s/word1/word2/gc 或 :%s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用) -删除、复制与贴上 -x, X 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用) -nx n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。 -dd 删除游标所在的那一整行(常用) -ndd n 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用) -d1G 删除光标所在到第一行的所有数据 -dG 删除光标所在到最后一行的所有数据 -d$ 删除游标所在处,到该行的最后一个字符 -d0 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符 -yy 复制游标所在的那一行(常用) -nyy n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用) -y1G 复制游标所在行到第一行的所有数据 -yG 复制游标所在行到最后一行的所有数据 -y0 复制光标所在的那个字符到该行行首的所有数据 -y$ 复制光标所在的那个字符到该行行尾的所有数据 -p, P p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用) -J 将光标所在行与下一行的数据结合成同一行 -c 重复删除多个数据,例如向下删除 10 行,[ 10cj ] -u 复原前一个动作。(常用) -[Ctrl]+r 重做上一个动作。(常用) -这个 u 与 [Ctrl]+r 是很常用的指令!一个是复原,另一个则是重做一次~ 利用这两个功能按键,你的编辑,嘿嘿!很快乐的啦! -. 不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用) +|/word| 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)| +|?word| 向光标之上寻找一个字符串名称为 word 的字符串。| +|n| 这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!| +|N |这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。| +||使用 /word 配合 n 及 N 是非常有帮助的!可以让你重复的找到一些你搜寻的关键词!| +| :n1,n2s/word1/word2/g |n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则:『:100,200s/vbird/VBIRD/g』。(常用)| +|:1,$s/word1/word2/g 或 :%s/word1/word2/g |从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用)| +|:1,$s/word1/word2/gc 或 :%s/word1/word2/gc |从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用)| + +### 删除、复制与贴上 +|操作|效果| +|-|-| +|x, X| 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)| +|nx n |为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。| +|dd |删除游标所在的那一整行(常用)| +|ndd| n 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用)| +|d1G| 删除光标所在到第一行的所有数据| +|dG| 删除光标所在到最后一行的所有数据| +|d$| 删除游标所在处,到该行的最后一个字符| +|d0| 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符| +|yy| 复制游标所在的那一行(常用)| +|nyy| n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用)| +|y1G| 复制游标所在行到第一行的所有数据| +|yG| 复制游标所在行到最后一行的所有数据| +|y0| 复制光标所在的那个字符到该行行首的所有数据| +|y$| 复制光标所在的那个字符到该行行尾的所有数据| +|p, P| p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用)| +|J| 将光标所在行与下一行的数据结合成同一行| +|c| 重复删除多个数据,例如向下删除 10 行,[ 10cj ]| +|u| 复原前一个动作。(常用)| +|[Ctrl]+r| 重做上一个动作。(常用)| +|. |不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用)| + +u 与 [Ctrl]+r 是很常用的指令!一个是复原,另一个则是重做一次~ 利用这两个功能按键,你的编辑,嘿嘿!很快乐的啦! + +## 3 编辑模式 -## 编辑模式 第二部分:一般模式切换到编辑模式的可用的按钮说明 进入输入或取代的编辑模式 -i, I 进入输入模式(Insert mode): -i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。 (常用) -a, A 进入输入模式(Insert mode): -a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用) -o, O 进入输入模式(Insert mode): -这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处输入新的一行』; O 为在目前光标所在处的上一行输入新的一行!(常用) -r, R 进入取代模式(Replace mode): -r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用) -上面这些按键中,在 vi 画面的左下角处会出现『--INSERT--』或『--REPLACE--』的字样。 由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时, 一定要在左下角处看到 INSERT 或 REPLACE 才能输入喔! -[Esc] 退出编辑模式,回到一般模式中(常用) -## 底线模式 +|操作|效果| +|-|-| +|i, I| 进入输入模式(Insert mode):| +|i |为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。 (常用)| +|a, A| 进入输入模式(Insert mode):a为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用)| +|o, O| 进入输入模式(Insert mode):这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处输入新的一行』; O 为在目前光标所在处的上一行输入新的一行!(常用)| +|r, R| 进入取代模式(Replace mode):| +|r| 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)| +||上面这些按键中,在 vi 画面的左下角处会出现『--INSERT--』或『--REPLACE--』的字样。 由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时, 一定要在左下角处看到 INSERT 或 REPLACE 才能输入喔!| +|[Esc]| 退出编辑模式,回到一般模式中(常用)| + +## 4 底线模式 第三部分:一般模式切换到指令行模式的可用的按钮说明 指令行的储存、离开等指令 -:w 将编辑的数据写入硬盘档案中(常用) -:w! 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊! -:q 离开 vi (常用) -:q! 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。 -注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~ -:wq 储存后离开,若为 :wq! 则为强制储存后离开 (常用) -ZZ 这是大写的 Z 喔!若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开! -:w [filename] 将编辑的数据储存成另一个档案(类似另存新档) -:r [filename] 在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面 -:n1,n2 w [filename] 将 n1 到 n2 的内容储存成 filename 这个档案。 -:! command 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如 -『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息! -vim 环境的变更 -:set nu 显示行号,设定之后,会在每一行的前缀显示该行的行号 -:set nonu 与 set nu 相反,为取消行号! +|操作|效果| +|-|-| +|:w| 将编辑的数据写入硬盘档案中(常用)| +|:w!| 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊!| +|:q| 离开 vi (常用)| +|:q!| 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。 +||注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~| +|:wq| 储存后离开,若为 :wq! 则为强制储存后离开 (常用)| +|ZZ| 这是大写的 Z 喔!若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开!| +|:w [filename]| 将编辑的数据储存成另一个档案(类似另存新档)| +|:r [filename]| 在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面| +|:n1,n2 w [filename]| 将 n1 到 n2 的内容储存成 filename 这个档案。| +|:! command| 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!| + +### vim 环境的变更 +|操作|效果| +|-|-| +|:set nu| 显示行号,设定之后,会在每一行的前缀显示该行的行号| +|:set nonu| 与 set nu 相反,为取消行号!| + 特别注意,在 vi/vim 中,数字是很有意义的!数字通常代表重复做几次的意思! 也有可能是代表去到第几个什么什么的意思。 举例来说,要删除 50 行,则是用 『50dd』 对吧! 数字加在动作之前,如我要向下移动 20 行呢?那就是『20j』或者是『20↓』即可。 \ No newline at end of file diff --git a/Linux/工具篇/fdisk分区与挂载.md b/Linux/工具篇/fdisk分区与挂载.md new file mode 100644 index 00000000..0bb48b39 --- /dev/null +++ b/Linux/工具篇/fdisk分区与挂载.md @@ -0,0 +1,56 @@ +# 分区与挂载 + +> 文件系统是软件系统,为其他程序提供访问数据的接口。 +> 磁盘管理是对硬件的管理,为文件管理提供上层接口。 +> 文件系统建立在磁盘管理之上。 + +## 1 文件系统 + +## 2 分区方式 + +### MBR分区 + +最多支持 4 个主分区,只能用扩展分区衍生出更多的逻辑分区。 +扩展分区要占一个主分区。 +系统只能转在主分区。 +MBR 最大支持的分区大小为 2 TB(大数据时代显然是不够的)。 + +### GPT分区 + +支持无线多个主分区( OS 可能会做限制,例如:windows 下最多 128 个分区)。 +最大支持 18EB 的大容量。(1024TB=1PB,1024PB=1EB)。 +Windows 7 后只支持 GPT 方式。 + +### Win与Linux分区区别 + +区别在于挂载。 + +Windows 中都是分区都是按照磁盘号来分区的,分区就拥有一个磁盘号,每一个磁盘分区的根目录都可以说是平级的,没有太大的相关性。文件系统位于磁盘分区之上。 + +Linux中文件系统与磁盘管理相互独立,通过“挂载”过程建立关联。文件系统并非确定位于某个磁盘分区上的系统。在 Linux 中就是把某个目录树中的目录与分区关联起来,即挂载。一个分区必须和目录树上的一个文件目录关联起来,这个目录里的所有文件都会存储与这个分区之中。 + +其与 Windows 最大的区别点就在于:不管怎么分区,Linux 中的目录结构不会改变,与磁盘分区相互独立,互补影响。而不像 Windows 中每个分区的根目录都是平级存在的,分区决定了目录的位置。 + +### 硬盘接口说明 + +IDE 、 STATA 、M2、NVME,IDE一般都是机械硬盘使用的,STATA、M2、MVME都是固态硬盘使用的接口,速度会比 IDE 快上许多,随着时间的流逝,IDE 肯定会像 MBR 分区格式一样被淘汰的。 + + +自动分区的编号分别是 + +* IDE:hda,hda1,hda2,hdb +* STATA:sda,sda1,sda2,sdb +* NVME:nvme0n1,nvme0n1p1,nvme0n1p2, +* virtio(虚拟机):vda,vda1,vda2 + + +## 分区配置 + +### 查看系统分区 + +查看系统分区 +``` +lsblk -f # 查看系统分区情况 +``` + +