diff --git a/docs/linux/03.Linux文件内容查看编辑.md b/docs/linux/03.Linux文件内容查看编辑.md index 1a3250f..f0fac7a 100644 --- a/docs/linux/03.Linux文件内容查看编辑.md +++ b/docs/linux/03.Linux文件内容查看编辑.md @@ -10,20 +10,20 @@ tags: # Linux 文件内容查看编辑 -> 关键词:`cat`, `head`, `tail`, `more`, `less` +> 关键词:`cat`, `head`, `tail`, `more`, `less`, `sed`, `vi`, `grep` - [Linux 文件内容查看编辑要点](#linux-文件内容查看编辑要点) - [命令常见用法](#命令常见用法) - - [cat](#cat) - - [head](#head) - - [tail](#tail) - - [more](#more) - - [less](#less) - - [sed](#sed) - - [vi](#vi) - - [grep](#grep) + - [cat](#cat) + - [head](#head) + - [tail](#tail) + - [more](#more) + - [less](#less) + - [sed](#sed) + - [vi](#vi) + - [grep](#grep) - [参考资料](#参考资料) @@ -152,103 +152,8 @@ sed '/^test/'d file > vi 命令是 UNIX 操作系统和类 UNIX 操作系统中最通用的全屏幕纯文本编辑器。Linux 中的 vi 编辑器叫 vim,它是 vi 的增强版(vi Improved),与 vi 编辑器完全兼容,而且实现了很多增强功能。 > > 参考:http://man.linuxde.net/vi - -#### 补充说明 - -**vi 命令** 是 UNIX 操作系统和类 UNIX 操作系统中最通用的全屏幕纯文本编辑器。Linux 中的 vi 编辑器叫 vim,它是 vi 的增强版(vi Improved),与 vi 编辑器完全兼容,而且实现了很多增强功能。 - -vi 编辑器支持编辑模式和命令模式,编辑模式下可以完成文本的编辑功能,命令模式下可以完成对文件的操作命令,要正确使用 vi 编辑器就必须熟练掌握着两种模式的切换。默认情况下,打开 vi 编辑器后自动进入命令模式。从编辑模式切换到命令模式使用“esc”键,从命令模式切换到编辑模式使用“A”、“a”、“O”、“o”、“I”、“i”键。 - -vi 编辑器提供了丰富的内置命令,有些内置命令使用键盘组合键即可完成,有些内置命令则需要以冒号“:”开头输入。常用内置命令如下: - -``` -Ctrl+u:向文件首翻半屏; -Ctrl+d:向文件尾翻半屏; -Ctrl+f:向文件尾翻一屏; -Ctrl+b:向文件首翻一屏; -Esc:从编辑模式切换到命令模式; -ZZ:命令模式下保存当前文件所做的修改后退出 vi; -:行号:光标跳转到指定行的行首; -:$:光标跳转到最后一行的行首; -x 或 X:删除一个字符,x 删除光标后的,而 X 删除光标前的; -D:删除从当前光标到光标所在行尾的全部字符; -dd:删除光标行正行内容; -ndd:删除当前行及其后 n-1 行; -nyy:将当前行及其下 n 行的内容保存到寄存器?中,其中?为一个字母,n 为一个数字; -p:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的下方; -P:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的上方; -/字符串:文本查找操作,用于从当前光标所在位置开始向文件尾部查找指定字符串的内容,查找的字符串会被加亮显示; -?name:文本查找操作,用于从当前光标所在位置开始向文件头部查找指定字符串的内容,查找的字符串会被加亮显示; -a,bs/F/T:替换文本操作,用于在第 a 行到第 b 行之间,将 F 字符串换成 T 字符串。其中,“s/”表示进行替换操作; -a:在当前字符后添加文本; -A:在行末添加文本; -i:在当前字符前插入文本; -I:在行首插入文本; -o:在当前行后面插入一空行; -O:在当前行前面插入一空行; -:wq:在命令模式下,执行存盘退出操作; -:w:在命令模式下,执行存盘操作; -:w!:在命令模式下,执行强制存盘操作; -:q:在命令模式下,执行退出 vi 操作; -:q!:在命令模式下,执行强制退出 vi 操作; -:e 文件名:在命令模式下,打开并编辑指定名称的文件; -:n:在命令模式下,如果同时打开多个文件,则继续编辑下一个文件; -:f:在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例; -:set number:在命令模式下,用于在最左端显示行号; -:set nonumber:在命令模式下,用于在最左端不显示行号; -``` - -#### 语法 - -``` -vi(选项)(参数) -``` - -#### 选项 - -``` -+<行号>:从指定行号的行开始先是文本内容; --b:以二进制模式打开文件,用于编辑二进制文件和可执行文件; --c<指令>:在完成对第一个文件编辑任务后,执行给出的指令; --d:以 diff 模式打开文件,当多个文件编辑时,显示文件差异部分; --l:使用 lisp 模式,打开“lisp”和“showmatch”; --m:取消写文件功能,重设“write”选项; --M:关闭修改功能; --n:不实用缓存功能; --o<文件数目>:指定同时打开指定数目的文件; --R:以只读方式打开文件; --s:安静模式,不现实指令的任何错误信息。 -``` - -#### 参数 - -文件列表:指定要编辑的文件列表。多个文件之间使用空格分隔开。 - -#### 知识扩展 - -vi 编辑器有三种工作方式:命令方式、输入方式和 ex 转义方式。通过相应的命令或操作,在这三种工作方式之间可以进行转换。 - -**命令方式** - -在 Shell 提示符后输入命令 vi,进入 vi 编辑器,并处于 vi 的命令方式。此时,从键盘上输入的任何字符都被作为编辑命令来解释,例如,a(append)表示附加命令,i(insert)表示插入命令,x 表示删除字符命令等。如果输入的字符不是 vi 的合法命令,则机器发出“报警声”,光标不移动。另外,在命令方式下输入的字符(即 vi 命令)并不在屏幕上显示出来,例如,输入 i,屏幕上并无变化,但通过执行 i 命令,编辑器的工作方式却发生变化:由命令方式变为输入方式。 - -**输入方式** - -通过输入 vi 的插入命令(i)、附加命令(a)、打开命令(o)、替换命令(s)、修改命令(c)或取代命令(r)可以从命令方式进入输入方式。在输入方式下,从键盘上输入的所有字符都被插入到正在编辑的缓冲区中,被当做该文件的正文。进入输入方式后,输入的可见字符都在屏幕上显示出来,而编辑命令不再起作用,仅作为普通字母出现。例如,在命令方式下输入字母 i,进到输入方式,然后再输入 i,就在屏幕上相应光标处添加一个字母 i。 - -由输入方式回到命令方式的办法是按下 Esc 键。如果已在命令方式下,那么按下 Esc 键就会发出“嘟嘟”声。为了确保用户想执行的 vi 命令是在命令方式下输入的,不妨多按几下 Esc 键,听到嘟声后再输入命令。 - -**ex 转义方式** - -vi 和 ex 编辑器的功能是相同的,二者的主要区别是用户界面。在 vi 中,命令通常是单个字母,如 a,x,r 等。而在 ex 中,命令是以 Enter;键结束的命令行。vi 有一个专门的“转义”命令,可访问很多面向行的 ex 命令。为使用 ex 转义方式,可输入一个冒号(:)。作为 ex 命令提示符,冒号出现在状态行(通常在屏幕最下一行)。按下中断键(通常是 Del 键),可终止正在执行的命令。多数文件管理命令都是在 ex 转义方式下执行的(例如,读取文件,把编辑缓冲区的内容写到文件中等)。转义命令执行后,自动回到命令方式。例如: - -``` -:1,$s/I/i/g 按 Enter 键 -``` - -则从文件第一行至文件末尾($)将大写 I 全部替换成小写 i。vi 编辑器的三种工作方式之间的转换如图所示。 - -![vi.jpg](http://man.linuxde.net/wp-content/uploads/2013/11/vi.jpg) +> +> 引申阅读:[Vim 快速指南](https://github.com/dunwu/OS/blob/master/docs/vim.md) ### grep @@ -258,8 +163,24 @@ vi 和 ex 编辑器的功能是相同的,二者的主要区别是用户界面 示例: -``` +```sh +# 在多级目录中对文本递归搜索(程序员搜代码的最爱): +$ grep "class" . -R -n +# 忽略匹配样式中的字符大小写 +$ echo "hello world" | grep -i "HELLO" + +# 匹配多个模式: +$ grep -e "class" -e "vitural" file + +# 只在目录中所有的.php和.html文件中递归搜索字符"main()" +$ grep "main()" . -r --include *.{php,html} + +# 在搜索结果中排除所有README文件 +$ grep "main()" . -r --exclude "README" + +# 在搜索结果中排除filelist文件列表里的文件 +$ grep "main()" . -r --exclude-from filelist ``` ## 参考资料 diff --git a/docs/linux/Linux文件压缩与解压命令.md b/docs/linux/04.Linux文件压缩和解压.md similarity index 84% rename from docs/linux/Linux文件压缩与解压命令.md rename to docs/linux/04.Linux文件压缩和解压.md index 0c9a605..db5c0e8 100644 --- a/docs/linux/Linux文件压缩与解压命令.md +++ b/docs/linux/04.Linux文件压缩和解压.md @@ -1,5 +1,5 @@ --- -title: Linux 文件压缩与解压命令 +title: Linux 文件压缩和解压 date: 2018/02/27 categories: - linux @@ -8,20 +8,30 @@ tags: - command --- -# Linux 文件压缩与解压命令 +# Linux 文件压缩和解压 > 关键词:`tar`, `gzip`, `zip`, `unzip` - + -- [压缩和解压 tar 文件 - tar](#压缩和解压-tar-文件---tar) -- [压缩和解压 gz 文件 - gzip](#压缩和解压-gz-文件---gzip) -- [压缩 zip 文件 - zip](#压缩-zip-文件---zip) -- [解压 zip 文件 - unzip](#解压-zip-文件---unzip) +- [Linux 文件压缩和解压要点](#linux-文件压缩和解压要点) +- [命令常见用法](#命令常见用法) + - [tar](#tar) + - [gzip](#gzip) + - [zip](#zip) + - [unzip](#unzip) -## 压缩和解压 tar 文件 - tar +## Linux 文件压缩和解压要点 + +- 压缩和解压 tar 文件 - 使用 [tar](#tar) +- 压缩和解压 gz 文件 - 使用 [gzip](#gzip) +- 压缩和解压 zip 文件 - 分别使用 [zip](#zip)、[unzip](#unzip) + +## 命令常见用法 + +### tar > tar 命令可以为 linux 的文件和目录创建档案。利用 tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar 最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用 tar 命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。 > @@ -39,7 +49,7 @@ tar -zxvf log.tar.gz # 将 tar 包解压缩 tar -zxvf log30.tar.gz log2013.log # 只将 tar 内的部分文件解压出来 ``` -## 压缩和解压 gz 文件 - gzip +### gzip > gzip 命令用来压缩文件。gzip 是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出“.gz”扩展名。 > @@ -58,7 +68,7 @@ gzip -rv test/ # 递归的压缩目录 gzip -dr test/ # 递归地解压目录 ``` -## 压缩 zip 文件 - zip +### zip > zip 命令可以用来解压缩文件,或者对文件进行打包操作。zip 是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。 > @@ -71,7 +81,7 @@ gzip -dr test/ # 递归地解压目录 zip -q -r html.zip /home/Blinux/html ``` -## 解压 zip 文件 - unzip +### unzip > unzip 命令用于解压缩由 zip 命令压缩的“.zip”压缩包。 > diff --git a/docs/linux/Linux用户管理命令.md b/docs/linux/05.Linux用户管理.md similarity index 74% rename from docs/linux/Linux用户管理命令.md rename to docs/linux/05.Linux用户管理.md index 780e85b..677ac82 100644 --- a/docs/linux/Linux用户管理命令.md +++ b/docs/linux/05.Linux用户管理.md @@ -1,5 +1,5 @@ --- -title: Linux 用户管理命令 +title: Linux 用户管理 date: 2018/02/27 categories: - linux @@ -8,27 +8,43 @@ tags: - command --- -# Linux 用户管理命令 +# Linux 用户管理 > 关键词:`groupadd`, `groupdel`, `groupmod`, `useradd`, `userdel`, `usermod`, `passwd`, `su`, `sudo` - + -- [groupadd](#groupadd) -- [groupdel](#groupdel) -- [groupmod](#groupmod) -- [useradd](#useradd) -- [userdel](#userdel) -- [usermod](#usermod) -- [passwd](#passwd) -- [su](#su) -- [sudo](#sudo) +- [Linux 用户管理要点](#linux-用户管理要点) +- [命令常见用法](#命令常见用法) + - [groupadd](#groupadd) + - [groupdel](#groupdel) + - [groupmod](#groupmod) + - [useradd](#useradd) + - [userdel](#userdel) + - [usermod](#usermod) + - [passwd](#passwd) + - [su](#su) + - [sudo](#sudo) -## groupadd +## Linux 用户管理要点 -> groupadd 命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。 +- 创建用户组 - 使用 [groupadd](#groupadd) +- 删除用户组 - 使用 [groupdel](#groupdel) +- 修改用户组信息 - 使用 [groupmod](#groupmod) +- 创建用户 - 使用 [useradd](#useradd) +- 删除用户 - 使用 [userdel](#userdel) +- 修改用户信息 - 使用 [usermod](#usermod) +- 设置用户认证信息 - 使用 [passwd](#passwd) +- 切换用户 - 使用 [su](#su) +- 当前用户想执行没有权限执行的命令时,使用其他用户身份去执行 - 使用 [sudo](#sudo) + +## 命令常见用法 + +### groupadd + +> groupadd 命令用于创建一个新的用户组,新用户组的信息将被添加到系统文件中。 > > 参考:http://man.linuxde.net/groupadd @@ -36,29 +52,29 @@ tags: ```sh # 建立一个新组,并设置组 ID 加入系统 -groupadd -g 344 jsdigname +$ groupadd -g 344 jsdigname ``` -## groupdel +### groupdel -> groupdel 命令用于删除指定的工作组,本命令要修改的系统文件包括 `/ect/group` 和 `/ect/gshadow`。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。 +> groupdel 命令用于删除指定的用户组,本命令要修改的系统文件包括 `/ect/group` 和 `/ect/gshadow`。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。 > > 参考:http://man.linuxde.net/groupdel 示例: ```sh -groupadd damon # 创建damon工作组 -groupdel damon # 删除这个工作组 +$ groupadd damon # 创建damon用户组 +$ groupdel damon # 删除这个用户组 ``` -## groupmod +### groupmod > groupmod 命令更改群组识别码或名称。需要更改群组的识别码或名称时,可用 groupmod 指令来完成这项工作。 > > 参考:http://man.linuxde.net/groupmod -## useradd +### useradd > useradd 命令用于 Linux 中创建的新的系统用户。useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码.而可用 userdel 删除帐号。使用 useradd 指令所建立的帐号,实际上是保存在 `/etc/passwd` 文本文件中。 > @@ -68,13 +84,13 @@ groupdel damon # 删除这个工作组 ```sh # 新建用户加入组 -useradd –g sales jack –G company,employees # -g:加入主要组、-G:加入次要组 +$ useradd –g sales jack –G company,employees # -g:加入主要组、-G:加入次要组 # 建立一个新用户账户,并设置 ID -useradd caojh -u 544 +$ useradd caojh -u 544 ``` -## userdel +### userdel > userdel 命令用于删除给定的用户,以及与用户相关的文件。若不加选项,则仅删除用户帐号,而不删除相关文件。 > @@ -82,14 +98,14 @@ useradd caojh -u 544 示例: -userdel 命令很简单,比如我们现在有个用户 linuxde,其家目录位于`/var`目录中,现在我们来删除这个用户: +userdel 命令很简单,比如我们现在有个用户 linuxde,其 home 目录位于`/var`目录中,现在我们来删除这个用户: ```sh -userdel linuxde # 删除用户linuxde,但不删除其家目录及文件; -userdel -r linuxde # 删除用户linuxde,其家目录及文件一并删除; +$ userdel linuxde # 删除用户linuxde,但不删除其家目录及文件; +$ userdel -r linuxde # 删除用户linuxde,其 home 目录及文件一并删除; ``` -## usermod +### usermod > usermod 命令用于修改用户的基本信息。usermod 命令不允许你改变正在线上的使用者帐号名称。当 usermod 命令用来改变 user id,必须确认这名 user 没在电脑上执行任何程序。你需手动更改使用者的 crontab 档。也需手动更改使用者的 at 工作档。采用 NIS server 须在 server 上更动相关的 NIS 设定。 > @@ -99,19 +115,19 @@ userdel -r linuxde # 删除用户linuxde,其家目录及文件一并删除 ```sh # 将 newuser2 添加到组 staff 中 -usermod -G staff newuser2 +$ usermod -G staff newuser2 # 修改 newuser 的用户名为 newuser1 -usermod -l newuser1 newuser +$ usermod -l newuser1 newuser # 锁定账号 newuser1 -usermod -L newuser1 +$ usermod -L newuser1 # 解除对 newuser1 的锁定 -usermod -U newuser1 +$ usermod -U newuser1 ``` -## passwd +### passwd > passwd 命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。 > @@ -156,7 +172,7 @@ passwd: Success # 清除成功; Empty password. # 空密码,也就是没有密码; ``` -## su +### su > su 命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。 > @@ -175,7 +191,7 @@ su root -f su -test ``` -## sudo +### sudo > sudo 命令用来以其他身份来执行命令,预设的身份为 root。在 `/etc/sudoers` 中设置了可执行 sudo 指令的用户。若其未经授权的用户企图使用 sudo,则会发出警告的邮件给管理员。用户使用 sudo 时,必须先输入密码,之后有 5 分钟的有效期限,超过期限则必须重新输入密码。 > diff --git a/docs/linux/README.md b/docs/linux/README.md index cb46149..643583c 100644 --- a/docs/linux/README.md +++ b/docs/linux/README.md @@ -4,9 +4,9 @@ - [查看 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 文件内容查看命令](03.Linux文件内容查看编辑.md) - 关键词:`cat`, `head`, `tail`, `more`, `less` -- [Linux 文件压缩与解压命令](Linux文件压缩与解压命令.md) - 关键词:`tar`, `gzip`, `zip`, `unzip` -- [Linux 用户管理命令](Linux用户管理命令.md) - 关键词:`groupadd`, `groupdel`, `groupmod`, `useradd`, `userdel`, `usermod`, `passwd`, `su`, `sudo` +- [Linux 文件内容查看命令](03.Linux文件内容查看编辑.md) - 关键词:`cat`, `head`, `tail`, `more`, `less`, `sed`, `vi`, `grep` +- [Linux 文件压缩和解压](04.Linux文件压缩和解压.md) - 关键词:`tar`, `gzip`, `zip`, `unzip` +- [Linux 用户管理](05.Linux用户管理.md) - 关键词:`groupadd`, `groupdel`, `groupmod`, `useradd`, `userdel`, `usermod`, `passwd`, `su`, `sudo` - [Linux 系统管理命令](Linux系统管理命令.md) - 关键词:`reboot`, `exit`, `shutdown`, `date`, `mount`, `umount` - [Linux 性能管理命令](Linux性能管理命令.md) - 关键词:`df`, `du`, `top`, `free`, `iotop` - [Linux 进程管理命令](Linux进程管理命令.md) - 关键词:`ps`, `kill`, `systemctl`, `service`, `crontab` @@ -28,7 +28,7 @@ - [鸟哥的私房菜](http://cn.linux.vbird.org/) - 久负盛名的 Linux 教程 - [菜鸟教程-Linux](http://www.runoob.com/linux/linux-tutorial.html) - 入门级 Linux 教程 -- [Linux 工具快速教程](hhttps://github.com/me115/linuxtools_rst) +- [Linux 工具快速教程](https://github.com/me115/linuxtools_rst) ### Linux 帮助手册