1、 内部命令
help COMMAND
2、 外部命令
COMMAND --help
COMMAND -h
man 手册
info 信息
程序自带的文档
README、INSTALL 等
程序官方文档
百度、谷歌
3、 help
3.1、内部命令
-查看 echo 命令的帮助。 help echo
3.2、外部命令
-查看 ls 命令的简单帮助,详细帮助要用 man
-/bin 目录下面都是外部命令,如:/bin/ls,如果:
mv /bin/ls /bin/lls,那 ls 命令就不 能用了。 ls --help
3.3、帮助信息格式
格式 | 解析 |
---|---|
[] | 表示可选 |
… | 表示同一内容可出现多次 |
\ | 表示多选一 |
<> | 表示必选 |
4、 man 帮助手册
每个程序,都有帮助文档,但大量的文档,会占用大量空间,所以需要压缩,man 手 册就是压缩过的程序文档
-man 手册的配置文件
-指定了 man 命令搜索路径 cat /etc/man.config
章节 | 作用 |
---|---|
man 1 | 用户命令 |
man 2 | 系统调用 |
man 3 | 库函数调用 |
man 4 | 设备文件和特殊文件 |
man 5 | 配置文件 |
man 6 | 游戏 |
man 7 | 协议、标准等 |
man 8 | 系统管理和特权命令,比如磁盘分区命令 |
man 9 | linux 内核 API(内核调用) |
4.1、搜索关键字
-精确匹配 read,进行搜索
-whatis,有一个数据库,可将系统上所有的帮助手册与之对 应的关键字创建为一个数据库, 命令就是从它的数据库中查寻数据
-mkwhatis,手动创建数据库
-默认,系统有一个计划任务,自动创建这个数据库 whatis read
-和 whatis 的区别,apropos 模糊匹配,也是在 whatis 数据库中搜索 apropos read
-等价于 whatis read: man -f read
-等价于 apropos read: man -k read
4.2、例 1
4.3、例 2
-在 man 手册中,查看内部命令 cd 的帮助信息
-发现,打开的是 bash 手册
-man cd
5、 info
-info 命令比 man 命令更加详细,但我们一般很少去用它。
-它会将三个 passwd 的帮助合并显示
-info passwd
6、 程序的自身文档
7、 官方文档
https://access.redhat.com/documentation/en-us/ https://wiki.centos.org/zh/Documentation
8、 google 用法
8.1、双引号
8.2、filetype
8.3、site
1、 重定向
linux 中有三种标准输入输出:
由于 STDOUT 与 STDERR 都会默认显示在终端上,为了区分:
状态 | 解析 |
---|---|
0 | 表示 STDIN,标准输入 |
1 | 表示 STDOUT,标准输出 |
2 | 表示 STDERR,标准错误 |
& | 表示所有的正确和错误输出 |
-禁止覆盖重定向现有文件
-如果还是要强制覆盖,使用">|": set -C
-允许覆盖重定向: set +C
2、 输出重定向
2.1、标准正确输出重定向
- 1> 覆盖式重定向。不加前面的 1,默认就是正确输出
- 1>> 追加式重定向。
2.2、标准错误输出重定向
- 2> 覆盖
- \2>> 追加
2.3、怎么判断一个命令的输出是正确输出还是错误输出呢?
例 1:
- find /etc -name passwd >find.out 2>find.err
#将标准正确输出,重定向到 find.out
#将标准错误输出,重定向到 fine.err
例 2:
- 如果还有输出,说明这个重定向方式没起作用的,也就是说这是一个错误的输出,反之, 就是一个正确的输出
- adfkldf >> /tmp/t.txt
例 3:
- echo $?
#只是判断上一次命令有没有执行成功,不能判断输出是一个标准正确还是错误输出
例 4:
- 把输出结果丢到垃圾筒
- ls > /dev/null
2.4、怎么同时把标准正确和错误的输出重定向到同一个文件呢?
- find /home -name kiosk 1>>/tmp/f1 2>>/tmp/f1
- 这种方式会打乱输出,先重定向正确输出,才会输出错误输出。
- find /home -name kiosk &> /tmp/f1
- 这种方法就不会打乱输出了
- &表示所有正确和错误的输出
有时候希望将一个错误输出重新定向到正确输出,就是将 2 的结果重定向至 1 中,就 有了"2>1"这样的思路,如果按照上面的写法,系统会默认将错误输出重定向到一个名字为 1 的文件中,而非标准输出中。因此需要加&进行区分,就有了 2>&1
- 把一个错误输出转换成正确输出,然后再以正确输出重定向到/tmp/f1 文件
- find /home -name kiosk > /tmp/f1 2>&1
3、 输入重定向
3.1、cat
cat,默认,将键盘的输入,输出到屏幕上
- 通过键盘输入,重定向到 f1 这个文件,以 ctrl+d 结束:cat > /tmp/f1
- 把/etc/passwd 这个文件内容作为输入给 cat,然后重定向到 f1 这个文件:cat > /tmp/f1 < /etc/passwd
- 定义一个结束符,当输入 EOF,键盘输入就会结束。
- 注意:EOF 不是固定字符,可以自己随便定义:cat > /tmp/f1 <<”EOF”
3.2、tr
tr 用来从标准输入中通过替换或删除操作进行字符转换
默认为替换
-d,删除指定字符
-s,删除所有重复出现字符序列,只保留第一个
- 删除换行符和制表符:
cat file | tr -d "\n\t" > new_file
- 删除空行。空行,也有一个换行符,将多个连续的换行符删掉,也就是把空行删除了:
cat file | tr -s "\n" > new_file
- 将/etc/fstab 文件中的所有 a,换成 A,b 换成 B,c 换成 C
- tr 命令,替换字符:
tr abc ABC < /etc/fstab
- 将所有小写字母,替换成大写输出:
tr 'a-z' 'A-Z' < /etc/fstab
4、 管道
4.1、|
把管道符前面的命令的标准输出,当作后面命令的输入
cat /etc/passwd | more
4.2、tee
tee 命令读取标准输入,把这些内容同时输出到标准输出和(多个)文件中
要注意的是:在使用管道时,前一个命令的标准错误输出不会被 tee 读取。
tee,默认覆盖保存:cat /etc/passwd | tee f.txt
-a,追加:pwd | tee -a f.txt
5、 read 命令
接收标准输入(键盘)的输入,得到输入后,read 命令将数据放入一个标准变量中
将键盘的输入,存放到 name 这个变量中 read name
取变量的值 echo $name
-p,打印一句话,然后等用户输入:
read -p "Enter your name:" name
6、 vi 和 vim
6.1、命令行模式
命令 | 解析 |
---|---|
h | 光标向左移动 |
j | 光标向下移动 |
k | 光标向上移动 |
l | 光标向右移动 |
yy | 复制一行,复制 10 行:10yy |
p | 粘贴到光标所在的下一行 ,10p 就是把复制的内容粘贴 10 次 |
P | 粘贴到光标所在的上一行 |
dd | 剪切光标所在行,100dd,剪切光标以下 100 行 |
d1G | 从光标所在行,删除到第一行 |
dG | 从光标所在行,删除到最后一行 |
D | 从光标处剪切到行尾,这时,p,会在光标后面粘贴 |
d$ | 同上 |
gg | 光标回到第一行行首 |
G | 光标到最后一行行首 |
$ | 移动光标到当前行尾 |
0 | 数字零,移动光标到当前行首 |
x | 删除光标所在字符,2x,从光标往后删除 2 个字符 |
X | 往前删 |
r | 替换光标处单个字符,r2,把光标处字符替换成 2 |
R | 进入替换模式,一直替换,除非按 esc,回到命令行模式 |
u | 撤消上一次操作 |
ctrl+r | 恢复上一次的撤消操作 |
. | 重复上一次操作 |
ctrl+f | 向下一页 |
ctrl+b | 向上一页 |
6.2、编辑模式
从命令行模式进入编辑模式的方式:
命令 | 解析 |
---|---|
i | 在光标当前位置的前面插入字符 |
I | 光标移动当前行的行首 |
a | 光标往后退一个字符 |
A | 光标移动到行尾 |
o | 光标所在行下一行新起一行 |
O | 上一行新起一行 |
回到命令行模式,按 esc 键,切换到其它模式必须先回到命令模式,再切换 图形化下用鼠标复制粘贴内容,要先进入编辑模式,否则会掉东西
6.3、末行模式
进入 vim 内置的命令行接口
命令 | 解析 |
---|---|
:help | 查看帮助 |
:wq | 保存退出,或:x |
:wq! | 强制保存退出,对一个只读文件 不过到底能不能写入,还是跟权限有关 |
:w f1 | 另存到 f1 这个文件 |
:q | 退出 :q! 强制不保存退出 |
:set nu | 显示行号 |
:set nonu | 取消行号 |
:9 | 光标移动到第 9 行行首 |
:1,9d | 删除第一行到第 9 行 |
:1,3 > | 1 到 3 行缩进,默认 8 个空格,可定义 sw 定义缩进值 |
:1,$s/root/hehe/g | 从第一行到最后一行,全局把 root 替换成 hehe。1,$,表示第一行到最后一行,可用%替代。s///g,替换表达式,s/查找字符/替换为的字符/修饰符。修饰符: i,忽略大小写; g,全局替换,默认情况下,每一行只替换第一次查找到的 字符 |
:.,$s/r(…)t/R\1T/g | 从当前行到最后一行中的 root 替换为 RooT 。.,$,表示当前行到最后一行 ;r(…)t,表示查找 r 和 t 中间只有两个字符的字符;R\1T,表示将前面查找的内容,替换为 R 开头,T 结尾,中 间字符按前面第一个()查找到的内容 |
:%s/bash/s&/g | 将所有的 bash,替换为 sbash。&,表示前面查找到的内容 |
%s@/bin@/sbin@g | 将全局的/bin 替换为/sbin;将表达式的分隔符用@代替,因为/和要查找和替换的字符冲突 |
:%s/^ [[:space:]]+// | 将所有行前面的空白字符替换为无 |
:! ls /boot | 叹号,表示会暂时离开 vim,然后去执行叹号后面的命令 |
:r /etc/passwd | 把 r 后面的文件,读取到当前 vim 编辑器 |
:r ! ls /boot | 把 ls /boot 命令的输出,读取到当前 vim 编辑器 |
/ | 往光标所在行之下搜索关键字 |
? | 往光标所在行之上搜索关键字 |
n | 下一个关键字 |
N | 上一个关键字 |
6.4、visual 可视模式
最主要的功能:可以分区块的选中文件内容
命令 | 解析 |
---|---|
v | 选中连续字符,然后可以用 x 删除,d 剪切,y 复制 |
V | 选中整行 |
ctrl+v | 选中区块,注意:XShell 不支持 |
注意:
6.5、同时编辑多个文件
vim f1 f2
命令 | 解析 |
---|---|
:files | 列出打开的所有文件 |
:n | 切换到下一个文件 |
:N | 切换到上一个文件 |
:wall | 保存所有 |
:qall | 退出所有 |
#-o,多个文件同时打开,水平分割显示
#-O,多个文件同时打开,垂直分割显示
vim -o file1 file2
ctrl+方向键,切换光标
vim f1
命令 | 解析 |
---|---|
:sp | 把当前文件在一个新窗口再打开 一次 |
:sp f2 | 在新窗口打开 f2 这个文件 |
ctrl+w+j | ctrl+w,松开,再按 j,移动光标到 下一个文件 |
ctrl+w+k | ctrl+w,松开,再按 k,移动光标 到上一个文件 |
6.6、定制 vim
配置文件:
注意:用户家目录下的.vimrc,默认没有,需要自己创建
vim ~/.vimrc
#默认开启行标:set nu
#开启括号匹配,高亮显示:set showmatch
#开启自动缩进:set ai
#开启高亮搜索:set hlsearch
#语法高亮:syntax on
#忽略大小写:set ic
#一个 tab 的宽度为 4 个空格宽度:set ts=4
#用 space 代替 tab:set expandtab
#缩进时,使用 4 个空格,默认 8 个空格:set sw=4
实例:
配置 vim,使用 tab 缩进,自动转换成 2 个空格
- vim ~/.vimrc set ai ts=2 sw=2 et
帮助:
文档(文本编辑器):
重定向:
- ls > /mnt/f1 2>1& 通常写法
- ls & > /mnt/f1