mirror of
https://github.com/Estom/notes.git
synced 2026-04-05 11:57:37 +08:00
linux
This commit is contained in:
28
Linux/基础篇/模板.md
Normal file
28
Linux/基础篇/模板.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# 标题
|
||||
> 写的太详细了,反而会失去价值。应该尽可能简单的描述。
|
||||
> 包括两部分:命令介绍。操作实现。
|
||||
> 当前的内容就包括这些把,遇到什么问题,就去解决什么问题。
|
||||
## 分类
|
||||
|
||||
### ls命令
|
||||
简介
|
||||
|
||||
balabala
|
||||
|
||||
命令
|
||||
|
||||
```
|
||||
ls [配置] [目录]
|
||||
```
|
||||
|
||||
选项
|
||||
|
||||
* -a:这是a
|
||||
* -b:这是b
|
||||
|
||||
实例
|
||||
|
||||
```
|
||||
输出并显示行号
|
||||
ls| cat -n
|
||||
```
|
||||
@@ -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 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
|
||||
|
||||
|
||||
@@ -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
|
||||
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 文件或目录
|
||||
```
|
||||
@@ -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。
|
||||
|
||||
@@ -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文件
|
||||
```
|
||||
|
||||
@@ -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↓』即可。
|
||||
56
Linux/工具篇/fdisk分区与挂载.md
Normal file
56
Linux/工具篇/fdisk分区与挂载.md
Normal file
@@ -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 # 查看系统分区情况
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user