From bf3e20511afd0e89f6117020e3a4bb18bc763a30 Mon Sep 17 00:00:00 2001 From: Zhang Peng Date: Fri, 28 Sep 2018 10:07:03 +0800 Subject: [PATCH] :memo: Writing docs. --- .../linux/01.查看Linux命令帮助信息.md | 54 +++++--- docs/linux/02.Linux文件目录管理.md | 56 ++++++++- .../linux/Linux文件查找和比较命令.md | 118 ------------------ docs/linux/README.md | 5 +- 4 files changed, 92 insertions(+), 141 deletions(-) delete mode 100644 docs/linux/Linux文件查找和比较命令.md diff --git a/docs/linux/01.查看Linux命令帮助信息.md b/docs/linux/01.查看Linux命令帮助信息.md index 05b3ba4..2e95afe 100644 --- a/docs/linux/01.查看Linux命令帮助信息.md +++ b/docs/linux/01.查看Linux命令帮助信息.md @@ -12,44 +12,46 @@ tags: > Linux 中有非常多的命令,想全部背下来是很困难的事。所以,我认为学习 Linux 的第一步,就是了解如何快速检索命令说明。 > -> 关键词:`help`, `whatis`, `info`, `which`, `man` +> 关键词:`help`, `whatis`, `info`, `which`, `whereis`, `man` - [查看 Linux 命令帮助信息的要点](#查看-linux-命令帮助信息的要点) -- [命令概述](#命令概述) - - [查看 Shell 内部命令 - help](#查看-shell-内部命令---help) - - [查看命令的简要说明 - whatis](#查看命令的简要说明---whatis) - - [查看命令的详细说明 - info](#查看命令的详细说明---info) - - [查找命令的绝对路径 - which](#查找命令的绝对路径---which) - - [查看命令的帮助手册 - man](#查看命令的帮助手册---man) +- [命令常见用法](#命令常见用法) + - [help](#help) + - [whatis](#whatis) + - [info](#info) + - [which](#which) + - [whereis](#whereis) + - [man](#man) - [参考资料](#参考资料) ## 查看 Linux 命令帮助信息的要点 -- 查看 Shell 内部命令的帮助信息 - 使用 `help` -- 查看命令的简要说明 - 使用 `whatis` -- 查看命令的详细说明 - 使用 `info` -- 查看命令的位置 - 使用 `which` -- 查看命令的帮助手册(包含说明、用法等信息) - 使用 `man` -- 只记得部分命令关键字 - 使用 `man -k` +- 查看 Shell 内部命令的帮助信息 - 使用 [help](#help) +- 查看命令的简要说明 - 使用 [whatis](#whatis) +- 查看命令的详细说明 - 使用 [info](#info) +- 查看命令的位置 - 使用 [which](#which) +- 定位指令的二进制程序、源代码文件和 man 手册页等相关文件的路径 - 使用 [whereis](#whereis) +- 查看命令的帮助手册(包含说明、用法等信息) - 使用 [man](#man) +- 只记得部分命令关键字 - 使用 man -k > 注:推荐一些 Linux 命令中文手册: > > - [Linux 命令大全](http://man.linuxde.net/) > - [linux-command](https://github.com/jaywcjlove/linux-command) -## 命令概述 +## 命令常见用法 -### 查看 Shell 内部命令 - help +### help > help 命令用于查看 Shell 内部命令的帮助信息。而对于外部命令的帮助信息只能使用 man 或者 info 命令查看。 > > 参考:http://man.linuxde.net/help -### 查看命令的简要说明 - whatis +### whatis > whatis 用于查询一个命令执行什么功能。 > @@ -65,7 +67,7 @@ $ whatis man $ whatis -w "loca*" ``` -### 查看命令的详细说明 - info +### info > info 是 Linux 下 info 格式的帮助指令。 > @@ -78,7 +80,7 @@ $ whatis -w "loca*" $ info man ``` -### 查找命令的绝对路径 - which +### which > which 命令用于查找并显示给定命令的绝对路径,环境变量 PATH 中保存了查找命令时需要遍历的目录。which 指令会在环境变量$PATH 设置的目录里查找符合条件的文件。也就是说,使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。 > @@ -99,7 +101,21 @@ cd: shell built-in command cd 这个常用的命令竟然找不到啊!为什么呢?这是因为 cd 是 bash 内建的命令!但是 which 默认是找 PATH 内所规范的目录,所以当然一定找不到的! -### 查看命令的帮助手册 - man +### whereis + +> whereis 命令用来定位指令的二进制程序、源代码文件和 man 手册页等相关文件的路径。 +> +> whereis 命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man 说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。 +> +> 参考:http://man.linuxde.net/whereis + +示例: + +```sh +whereis git # 将相关的文件都查找出来 +``` + +### man > man 命令是 Linux 下的帮助指令,通过 man 指令可以查看 Linux 中的指令帮助、配置文件帮助和编程帮助等信息。 > diff --git a/docs/linux/02.Linux文件目录管理.md b/docs/linux/02.Linux文件目录管理.md index 6bcbf13..c46e9e4 100644 --- a/docs/linux/02.Linux文件目录管理.md +++ b/docs/linux/02.Linux文件目录管理.md @@ -10,7 +10,7 @@ tags: # Linux 文件目录管理 -> 关键词:`cd`, `ls`, `pwd`, `mkdir`, `rmdir`, `tree`, `touch`, `ln`, `rename`, `stat`, `file`, `chmod`, `chown`, `cp`, `mv`, `rm` +> 关键词:`cd`, `ls`, `pwd`, `mkdir`, `rmdir`, `tree`, `touch`, `ln`, `rename`, `stat`, `file`, `chmod`, `chown`, `locate`, `find`, `cp`, `mv`, `rm` @@ -35,6 +35,8 @@ tags: - [file](#file) - [chmod](#chmod) - [chown](#chown) + - [locate](#locate) + - [find](#find) - [cp](#cp) - [mv](#mv) - [rm](#rm) @@ -121,6 +123,10 @@ dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot - 探测文件类型 - 使用 [file](#file) - 设置文件或目录的权限 - 使用 [chmod](#chmod) - 设置文件或目录的拥有者或所属群组 - 使用 [chown](#chown) +- 查找文件或目录 - 使用 [locate](#locate) +- 在指定目录下查找文件 - 使用 [find](#find) +- 查找命令的绝对路径 - 使用 [which](#which) +- 查找命令的程序、源代码等相关文件 - 使用 [whereis](#whereis) ### 文件和目录通用管理 @@ -357,6 +363,54 @@ chmod -R 755 /home/wwwroot/* chown -R liu /usr/meng ``` +### locate + +> locate 命令和 slocate 命令都用来查找文件或目录。 +> +> locate 命令其实是 find -name 的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux 系统自动创建这个数据库,并且每天自动更新一次,所以使用 locate 命令查不到最新变动过的文件。为了避免这种情况,可以在使用 locate 之前,先使用 updatedb 命令,手动更新数据库。 +> +> 参考:http://man.linuxde.net/locate_slocate + +示例: + +```sh +locate pwd # 查找和 pwd 相关的所有文件 +locate /etc/sh # 搜索 etc 目录下所有以 sh 开头的文件 +``` + +### find + +> find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 +> +> 参考:http://man.linuxde.net/find + +```sh +# 当前目录搜索所有文件,文件内容 包含 “140.206.111.111” 的内容 +find . -type f -name "*" | xargs grep "140.206.111.111" + +# 列出当前目录及子目录下所有文件和文件夹 +find . + +# 在 /home 目录下查找以 .txt 结尾的文件名 +find /home -name "*.txt" +# 同上,但忽略大小写 +find /home -iname "*.txt" + +# 当前目录及子目录下查找所有以 .txt 和 .pdf 结尾的文件 +find . -name "*.txt" -o -name "*.pdf" + +# 匹配文件路径或者文件 +find /usr/ -path "*local*" + +# 基于正则表达式匹配文件路径 +find . -regex ".*\(\.txt\|\.pdf\)$" +# 同上,但忽略大小写 +find . -iregex ".*\(\.txt\|\.pdf\)$" + +# 找出 /home 下不是以 .txt 结尾的文件 +find /home ! -name "*.txt" +``` + ### cp > cp 命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp 命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。 diff --git a/docs/linux/Linux文件查找和比较命令.md b/docs/linux/Linux文件查找和比较命令.md deleted file mode 100644 index 93a26be..0000000 --- a/docs/linux/Linux文件查找和比较命令.md +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: Linux 文件查找和比较命令 -date: 2018/02/27 -categories: - - linux -tags: - - linux - - command ---- - -# Linux 文件查找和比较命令 - -> 关键词:`diff`, `locate`/`slocate`, `find`, `which`, `whereis` - - - -- [比较文件 - diff](#比较文件---diff) -- [查找文件或目录 - locate/slocate](#查找文件或目录---locateslocate) -- [在指定目录下查找文件 - find](#在指定目录下查找文件---find) -- [查找命令的绝对路径 - which](#查找命令的绝对路径---which) -- [查找命令的程序、源代码等相关文件 - whereis](#查找命令的程序源代码等相关文件---whereis) - - - -## 比较文件 - diff - -> diff 命令在最简单的情况下,比较给定的两个文件的不同。如果使用“-”代替“文件”参数,则要比较的内容将来自标准输入。diff 命令是以逐行的方式,比较文本文件的异同处。如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作。 -> -> 参考:http://man.linuxde.net/diff - -示例: - -```sh -diff /usr/li test.txt # 比较文件 -``` - -## 查找文件或目录 - locate/slocate - -> locate 命令和 slocate 命令都用来查找文件或目录。 -> -> locate 命令其实是 find -name 的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux 系统自动创建这个数据库,并且每天自动更新一次,所以使用 locate 命令查不到最新变动过的文件。为了避免这种情况,可以在使用 locate 之前,先使用 updatedb 命令,手动更新数据库。 -> -> 参考:http://man.linuxde.net/locate_slocate - -示例: - -```sh -locate pwd # 查找和 pwd 相关的所有文件 -locate /etc/sh # 搜索 etc 目录下所有以 sh 开头的文件 -``` - -## 在指定目录下查找文件 - find - -> find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 -> -> 参考:http://man.linuxde.net/find - -```sh -# 当前目录搜索所有文件,文件内容 包含 “140.206.111.111” 的内容 -find . -type f -name "*" | xargs grep "140.206.111.111" - -# 列出当前目录及子目录下所有文件和文件夹 -find . - -# 在 /home 目录下查找以 .txt 结尾的文件名 -find /home -name "*.txt" -# 同上,但忽略大小写 -find /home -iname "*.txt" - -# 当前目录及子目录下查找所有以 .txt 和 .pdf 结尾的文件 -find . -name "*.txt" -o -name "*.pdf" - -# 匹配文件路径或者文件 -find /usr/ -path "*local*" - -# 基于正则表达式匹配文件路径 -find . -regex ".*\(\.txt\|\.pdf\)$" -# 同上,但忽略大小写 -find . -iregex ".*\(\.txt\|\.pdf\)$" - -# 找出 /home 下不是以 .txt 结尾的文件 -find /home ! -name "*.txt" -``` - -## 查找命令的绝对路径 - which - -> which 命令用于查找并显示给定命令的绝对路径,环境变量 PATH 中保存了查找命令时需要遍历的目录。which 指令会在环境变量$PATH 设置的目录里查找符合条件的文件。也就是说,使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。 -> -> 参考:http://man.linuxde.net/which - -示例: - -```sh -which pwd # 查找命令的路径 -``` - -说明:which 是根据使用者所配置的  PATH 变量内的目录去搜寻可运行档的!所以,不同的  PATH 配置内容所找到的命令当然不一样的! - -```sh -[root@localhost ~]# which cd -cd: shell built-in command -``` - -cd 这个常用的命令竟然找不到啊!为什么呢?这是因为 cd 是 bash 内建的命令! 但是 which 默认是找 PATH 内所规范的目录,所以当然一定找不到的! - -## 查找命令的程序、源代码等相关文件 - whereis - -> whereis 命令用来定位指令的二进制程序、源代码文件和 man 手册页等相关文件的路径。 -> -> whereis 命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man 说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。 -> -> 参考:http://man.linuxde.net/whereis - -示例: - -```sh -whereis git # 将相关的文件都查找出来 -``` diff --git a/docs/linux/README.md b/docs/linux/README.md index 1ebbcdb..fad40dc 100644 --- a/docs/linux/README.md +++ b/docs/linux/README.md @@ -2,11 +2,10 @@ ## 内容 -- [查看 Linux 命令帮助信息](01.查看Linux命令帮助信息.md) - 关键词:`help`, `whatis`, `info`, `which`, `man` -- [Linux 文件目录管理](02.Linux文件目录管理.md) - 关键词:`cd`, `ls`, `pwd`, `mkdir`, `rmdir`, `tree`, `touch`, `ln`, `rename`, `stat`, `file`, `chmod`, `chown`, `cp`, `mv`, `rm` +- [查看 Linux 命令帮助信息](01.查看Linux命令帮助信息.md) - 关键词:`help`, `whatis`, `info`, `which`, `whereis`, `man` +- [Linux 文件目录管理](02.Linux文件目录管理.md) - 关键词:`cd`, `ls`, `pwd`, `mkdir`, `rmdir`, `tree`, `touch`, `ln`, `rename`, `stat`, `file`, `chmod`, `chown`, `locate`, `find`, `cp`, `mv`, `rm` - [Linux 文件内容查看命令](Linux文件内容查看命令.md) - 关键词:`cat`, `head`, `tail`, `more`, `less` - [Linux 文件编辑命令](Linux文件编辑命令.md) - 关键词:`sed`, `vi` -- [Linux 文件查找和比较命令](Linux文件查找和比较命令.md) - 关键词:`diff`, `locate`/`slocate`, `find`, `which`, `whereis` - [Linux 文件压缩与解压命令](Linux文件压缩与解压命令.md) - 关键词:`tar`, `gzip`, `zip`, `unzip` - [Linux 用户管理命令](Linux用户管理命令.md) - 关键词:`groupadd`, `groupdel`, `groupmod`, `useradd`, `userdel`, `usermod`, `passwd`, `su`, `sudo` - [Linux 系统管理命令](Linux系统管理命令.md) - 关键词:`reboot`, `exit`, `shutdown`, `date`, `mount`, `umount`