linux中获取帮助

man手册

SECTION 内容类型
1 **用户命令(**可执行命令和shell程序)
2 系统调用(从用户空间调用的内核例程)
3 库函数(由程序库提供)
4 特殊文件(如设备文件)
5 文件格式(用于许多配置文件和结构)
6 游戏(过去的有趣程序章节)
7 惯例、标准和其他(协议、文件系统)
8 系统管理和特权命令(维护任务)
9 Linux内核API(内核调用)
# 查看man命令自带帮助信息
[meng@centos7 ~ 18:49:41]$ #man --help
# 查看手册章节1:passwd命令使用说明
[meng@centos7 ~ 18:50:00]$ man 1 passwd
# 查看手册章节5:/etc/passwd配置文件格式说明
[meng@centos7 ~ 18:50:06]$ man 5 passwd

man手册页面交互操作指令(less程序)

命令 结果
PageDown或者空格键 向前(向下)滚动一个屏幕
PageUp 向后(向上)滚动一个屏幕
向下箭头 向前(向下)滚动一行
向上箭头 向后(向上)滚动一行
d 向前(向下)滚动半个屏幕
u 向后(向上)滚动半个屏幕
/string 在man page中向前(向下)搜索string
n 在man page中重复之前的向前(向下)搜索
N 在man page中重复之前的向后(向上)搜索
g 转到man page的第一行。
G 转到man page的最后一行。
q 退出man ,并返回到shell命令提示符
# 使用root用户更新man page库
[root@centos7 ~]# mandb
正在删除 /usr/share/man 里的旧数据库条目...
mandb: 警告:/usr/share/man/man8/fsck.fat.8.manpage-fix.gz:忽略错误的文件名
... ...
正在处理 /usr/share/man/en 下的手册页...
正在删除 /usr/local/share/man 里的旧数据库条目...
正在处理 /usr/local/share/man 下的手册页...
0 man subdirectories contained newer manual pages.
0 manual pages were added.
0 stray cats were added.
17 old database entries were purged.
# 查看resize2fs命令手册(ext文件系统扩容/缩小工具)
[meng@centos7 ~ 18:52:44]$ man resize2fs
# 根据关键词搜索相关手册页面
[meng@centos7 ~ 18:52:33]$ man -k exts
# 搜索包含passwd关键词的所有手册
[meng@centos7 ~ 18:50:16]$ man -k passwd 
# 查看history手册页面
[meng@centos7 ~ 18:54:30]$ man history
# 查看shell内置命令history帮助(内置命令不能用man,只能用help)
[meng@centos7 ~ 18:54:39]$ help history 
# which:查找命令对应的可执行程序,同时识别别名
[meng@centos7 ~ 18:54:53]$ which vi
alias vi='vim'
	/usr/bin/vim
# whereis:查找命令程序、源码、man手册路径
[meng@centos7 ~ 18:55:40]$ whereis vi
vi: /usr/bin/vi /usr/share/man/man1/vi.1.gz /usr/share/man/man1p/vi.1p.gz
# whereis 查找passwd命令、相关配置文件、手册文件位置
[meng@centos7 ~ 18:55:47]$ whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

vim

  • command 模式:该模式下键盘中的字母有特殊含义。例如G,跳转到最后一行;gg,跳转到第一行。
  • edit 模式:在command模式下按i,进入该模式。在该模式可以输入内容。在该模式下按Esc返回command模式。
  • extended command 模式:在command模式下按:,进入该模式。在该模式下,可以保存文件(:w),退出编辑(:q),强制退出编辑(:q!),报错并退出(:wq)。
  • visual edit 模式:在command模式下按 v(单个字符选中)、V(整行选中)或者ctrl+v(按矩形选中),进入该模式。在该模式下,用于选中文件,随后可以复制或删除选中的内容。

请添加图片描述

定位文件内容:

  • w,向后1个word(光标在单词开头);e,向后1个word(光标在单词末尾)
  • b,向前1个word
  • ^0,行首
  • $,行尾
  • (,上一个句子头部;),下一个句子尾部。
  • {,上一个自然段;},下一个自然段。
  • gg,第一行;G,最后一行。

less 使用g,第一行;G,最后一行。

进入插入模式:

  • i ,当前位置插入。(insert)
  • I,行首插入。
  • a,当前位置追加。(append)
  • A,行末追加。
  • o,向下新开一个空白行。
  • O,向上新开一个空白行。

复制:yy,复制1行,相当于y1y。以此类推 y2y y2w y2b。

粘贴:p 当前位置后粘贴,P 当前位置前粘贴

删除:

  • x,删除当前单个字符。5x,删除当前字符和后续4个字符。
  • X,删除前一单个字符。
  • dw,删除1个word,以此类推 d5w d3b d2d d$。
  • D,从当前删除到最后,相当于d$。

回退:

  • u,撤销上一个操作。
  • U,撤销整行修改。
  • Ctrl+r,反向撤销,与u相反。

修改,相当于删除后插入:

  • s,删除当前字符,并进入编辑模式。
  • S,删除当前行,并进入编辑模式。
  • c,代表替换动作,例如cw,删除1个word,并进入编辑模式。以此类推 c5w。
  • C,从当前删除到最后,并进入编辑模式。

替换:

  • r,替换单个字符后回退到命令行模式。
  • R,替换模式,一直替换直到按Ese返回命令行模式。
  1. :set number showcmd,显示行号和操作命令
  2. gg,光标定位到第一行。
  3. d46d,删除当前行以及后面的45行。
  4. :11,28d,删除11到28行。
  5. /You,搜索字符串You,并定位到该字符位置。
  6. dG,删除当前位置行到最后。
  7. :%s/10.5.5/10.1.8/g,将所有行中 10.5.5替换为 10.1.8

% 针对所有内容,s查找并替换,g替换查找到的所有内容。

  1. /224,定位这个数字。
  2. cw,替换为0,然后esc。
  3. 30换成130
  4. 光标定位到ns1,修改dns为223.5.5.5:C然后输入223.5.5.5;
  5. 修改路由器为10.1.8.2,使用 r 替换末尾1为2。
  6. 修改广播地址10.1.8.3110.1.8.255
  7. ZZ,保存退出。

linux 输入输出重定向

请添加图片描述

上图显示了 Unix/Linux 系统中进程(PROCESS)的输入输出流(I/O Streams)模型,核心是 “标准流(Standard Streams)” 的概念,用于描述进程如何与外部(如键盘、屏幕、文件)进行数据交互。

标准流的核心组成

  • stdin(标准输入,编号 0)
  • 是进程接收输入数据的通道,默认连接到键盘,程序通过它读取用户输入(如 scanfread 等操作会从 stdin 获取数据)。
  • 用法为仅读取(只能从该通道输入数据到进程)。
  • stdout(标准输出,编号 1)
  • 是进程输出正常结果的通道,默认连接到终端屏幕,程序的普通打印(如 printfecho 等)会输出到 stdout
  • 用法为仅写入(进程只能向该通道输出数据)。
  • stderr(标准错误,编号 2)
  • 是进程输出错误信息的通道,默认也连接到终端屏幕,用于区分正常输出和错误提示(如程序崩溃、逻辑错误的提示信息)。
  • 用法为仅写入(专门用于输出错误内容)。
  • 3+ 号通道(其他文件,filename)
  • 代表进程与自定义文件的交互通道(非标准流),没有默认连接,需要手动指定文件。
  • 用法为读取和 / 或写入(可根据需求对文件进行读、写操作)。

流程逻辑

  • 输入:用户通过键盘向 stdin 输入数据,进程从 stdin 读取这些输入。
  • 输出:进程将正常结果写入 stdout,错误信息写入 stderr,两者默认都显示在终端;同时,进程也可通过 3+ 号通道与其他文件进行数据的读写交互。

这种模型是 Unix/Linux 系统中 “一切皆文件” 思想的体现,让进程能以统一的方式处理不同来源 / 目标的数据,也为 重定向(Redirect) 等操作(如把 stdout 输出到文件、把文件内容作为 stdin 输入)提供了基础。
请添加图片描述

输入

# 在/etc目录搜索名称为passwd的文件,普通用户遇到无权限目录会输出报错
[meng@centos7 ~ 19:03:09]$ find /etc -name 'passwd'
/etc/pam.d/passwd
/etc/passwd
find: ‘/etc/grub.d’: 权限不够
……(其余权限报错省略)

# > 覆盖重定向:标准正确结果存入passwdlist,错误信息存入passwderr
[meng@centos7 ~ 19:08:21]$ find /etc -name 'passwd' >passwdlist 2>passwderr

# 同时查看两个保存输出的文件
[meng@centos7 ~ 19:09:10]$ cat passwdlist passwderr 
/etc/pam.d/passwd
/etc/passwd
find: ‘/etc/grub.d’: 权限不够
……(其余报错省略)

# >> 追加重定向,文件原有内容保留,新结果追加到末尾,内容会重复
[meng@centos7 ~ 19:10:02]$ find /etc -name 'passwd' >>passwdlist 2>>passwderr

# >覆盖写入,每次执行先清空文件,不会产生重复内容
[meng@centos7 ~ 19:10:17]$ find /etc -name 'passwd' >passwdlist 2>passwderr

# 2>/dev/null 将错误输出丢入黑洞设备,屏蔽所有权限不足提示,只展示查找结果
[meng@centos7 ~ 19:10:38]$ find /etc -name 'passwd'  2>/dev/null 
/etc/pam.d/passwd
/etc/passwd

# >文件名:快速清空目标文件内所有内容
[meng@centos7 ~ 19:11:13]$ >passwderr 

# 查看清空后的文件(无任何输出)
[meng@centos7 ~ 19:11:36]$ cat  passwderr 

# 列出当前目录所有文件
[meng@centos7 ~ 19:11:48]$ ls
passwderr   passwdlist  公共  视频  文档  音乐 ……

# >p 不存在则创建空文件p;文件已存在则清空p内容
[meng@centos7 ~ 19:11:52]$ >p

# 查看目录更新结果
[meng@centos7 ~ 19:11:59]$ ls
p  passwderr  passwdlist  公共  视频  文档  音乐 ……
# &> 代表标准输出+错误输出一起覆盖写入passwdall
[meng@centos7 ~ 19:12:23]$ find /etc -name 'passwd' &>passwdall 

[meng@centos7 ~ 19:15:52]$ cat passwdall 
find: ‘/etc/grub.d’: 权限不够
……(中间报错省略)
/etc/pam.d/passwd
/etc/passwd
……(剩余报错省略)

# 将分割线覆盖写入passwdall,原有内容全部清空
[meng@centos7 ~ 19:15:58]$ echo =============== >passwdall

# &>> 标准输出+错误输出一起追加写入文件,不清空原有内容
[meng@centos7 ~ 19:16:32]$ find /etc -name 'passwd' &>>passwdall 

[meng@centos7 ~ 19:16:54]$ cat passwdall 
===============
find: ‘/etc/grub.d’: 权限不够
……(中间报错省略)
/etc/pam.d/passwd
/etc/passwd
……(剩余报错省略)

标准输出重定向到程序

管道符(|)实现:将上一个命令的输出作为标准输入传递给下一个命令

请添加图片描述

# man -k 检索ext4相关手册,管道交给grep过滤包含res的行
[meng@centos7 ~ 19:20:21]$ man -k ext4 | grep res
resize2fs (8)        - ext2/ext3/ext4 file system resizer

# ip addr查看网卡信息;筛选以ens33结尾行;awk打印第2列;cut以/分隔,取第一段IP地址
[meng@centos7 ~ 19:21:40]$ ip addr | grep 'ens33$' | awk '{print $2}' | cut -d/ -f1
10.1.8.10
# echo输出内容只是打印到标准输出,管道ls不会接收该输出,ls直接列出当前目录内容
[meng@centos7 ~ 19:23:52]$ echo  /etc/passwd | ls 
p          passwderr   公共  视频  文档  音乐
passwdall  passwdlist  模板  图片  下载  桌面

# |& 等价于 2>&1 | ,标准输出与错误输出合并后交给grep过滤
[meng@centos7 ~ 19:29:14]$ ls -l file-{01..06} |&grep file-06
ls: 无法访问file-06: 没有那个文件或目录

tee 命令

请添加图片描述

# find查找文件,屏蔽报错;tee 同时在屏幕打印输出,并覆盖写入passwdlist
[meng@centos7 ~ 19:33:34]$ find /etc -name 'passwd' 2>/dev/null  | tee passwdlist 
/etc/pam.d/passwd
/etc/passwd

# 查看tee保存到文件中的内容
[meng@centos7 ~ 19:33:58]$ cat passwdlist 
/etc/pam.d/passwd
/etc/passwd

# tee -a 追加模式:屏幕输出内容,同时追加写入文件,不清空原有内容
[meng@centos7 ~ 19:34:01]$ find /etc -name 'passwd' 2>/dev/null  | tee -a passwdlist 
/etc/pam.d/passwd
/etc/passwd

# 文件内出现重复内容,因为使用-a追加
[meng@centos7 ~ 19:34:14]$ cat passwdlist 
/etc/pam.d/passwd
/etc/passwd
/etc/pam.d/passwd
/etc/passwd

# man -k 查询手册,tee先覆盖写入passwdlist,再将内容传给后面grep过滤展示
[meng@centos7 ~ 19:34:18]$ man -k passwd|tee passwdlist |grep passwd
chgpasswd (8)        - 批量更新组密码
chpasswd (8)         - 批量更新密码
……(后续内容省略)

标准输入重定向给程序

# 查看主机名配置文件内容
[meng@centos7 ~ 19:36:00]$ cat /etc/hostname 
centos7.meng.cloud

# < 输入重定向,把文件作为cat的输入源(cat默认参数方式等价效果)
[meng@centos7 ~ 19:37:53]$ cat </etc/hostname 
centos7.meng.cloud

# cat 不带参数:默认从键盘(标准输入)读取,回车输入内容,Ctrl+D结束
[meng@centos7 ~ 19:38:01]$ cat
hello       
hello

# <<eof here-doc 此处文档,多行输入,输入eof结束录入
[meng@centos7 ~ 19:38:19]$ cat <<eof
> 1
> 2
> 3
> eof
1
2
3

[meng@centos7 ~ 19:38:41]$ #可直接复制指令执行

# echo输出多行文本,覆盖写入1.txt
[meng@centos7 ~ 19:41:06]$ echo 'hello
1
2
3
4'>1.txt

# 查看生成文件
[meng@centos7 ~ 19:41:39]$ cat 1.txt 
hello
1
2
3
4

# 结合 > 和 here-doc,多行内容覆盖写入1.txt
[meng@centos7 ~ 19:41:51]$ cat >1.txt <<eof
> 1234
> efo
> eof

[meng@centos7 ~ 19:42:38]$ cat 1.txt 
1234
efo
多行输入,输入eof结束录入
[meng@centos7 ~ 19:38:19]$ cat <<eof
> 1
> 2
> 3
> eof
1
2
3

[meng@centos7 ~ 19:38:41]$ #可直接复制指令执行

# echo输出多行文本,覆盖写入1.txt
[meng@centos7 ~ 19:41:06]$ echo 'hello
1
2
3
4'>1.txt

# 查看生成文件
[meng@centos7 ~ 19:41:39]$ cat 1.txt 
hello
1
2
3
4

# 结合 > 和 here-doc,多行内容覆盖写入1.txt
[meng@centos7 ~ 19:41:51]$ cat >1.txt <<eof
> 1234
> efo
> eof

[meng@centos7 ~ 19:42:38]$ cat 1.txt 
1234
efo
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐