第六天 在红帽企业Linus中获取帮助
学习日期:2024.5.29 学习课程:RH124-v9x-04-在红帽企业Linus中获取帮助
笔记:
- 获取帮助的信息来源有两个出处,一个是Read Manual Pages(阅读手册页),一个是使用Info文档。两种区别:Man page的格式更为正式,内容通常记录软件包中的特定命令或功能,采用独立文本文件的结构;Info文档通常涵盖整个特定的软件包,内容往往是有关使用软件的更为使用的示例,采用了超文本文档结构。
- Read Manual Pages(阅读手册页),即Man手册:
(1)本质是调用less命令进行查看,man pages源自过去的Linux程序员手册,手册篇幅较长,分为不同章节,每章节包含了不同主题,常用涉及到的主题有“1用户命令”、“5文件格式”、“8系统管理和特权命令”;(2)浏览和搜索Man Page命令:空格键或PageDown是向前(向下)滚动一个屏幕(D是向下半个屏幕)、PageUp是向前(向上)滚动一个屏幕(U是向上半个屏幕)、q(或ctrl+C)是退出、skip(或ctrl+d)是跳过、g是转开头、shift+g是转末尾;(3)每一个主题里,都包含以下内容:NAME是主题名称、SYNOPSIS是命令语法概要、DESCRIPTION对主题的基本理解和深度描述、OPTION命令选项说明、EXAMPLE示例、FILES相关文件和命目录列表、SEEALSO相关信息其他主题、BUGS软件已知错误、AUTHOR参与主题编写的人员信息等;(4)ssh root@servera进入[root@servera ~]用户目录下→ll /user/share/man/显示man文件信息→ll /user/share/man/man显示每个命令软件的位置的文件信息;(5)[root@servera ~]用户目录下→man man自动调用man手册→mandb自动查找man手册相关命令,会显示出119条新的manual pages以及6639个添加的manual pages→man -k passwd在标题和描述中搜索,显示出15行简短的描述description→man -K passwd全页面搜索,全文搜索,因为太多,会提示q(或ctrl+C)是退出、skip(或ctrl+d)是跳过→man sshd_config显示手册内容页→在内容页面直接输入ssh,回车,所有“ssh”字母全部变黑底突出显示→按空格翻页。
- Info文档,pinfo的索引链接的字体有颜色:
pinfo bash进入bash文件文档→输入h,回车,即返回上级→输入h,回到主页→输入n,回车,显示主题中的下一节点(章节)→输入p,回车,显示主题中的上一节点(章节)→q,退出→info pinfo→进入info文档中查pinfo文档,字体无颜色,且可以复制,但是不能点击,需要将光标移动到该链接,在回车进入→q退出→sync --help查看sync功能,显示“Synchronize cached writes to persistent storage”同步缓存数据写入持久化存储中(即硬盘)→man sync显示内容简洁→info sync显示内容较详细。
- 在不联网的情况下,可以用到的帮助工具有:直接使用help cmd命令、使用cmd -h或--help、man命令、info命令;联网情况下,可以使用发行版中的管理员手册、软件程序自身、官网手册、搜索引擎。
第七天 创建、查看和编辑文本文件
学习日期:2024.5.30 学习课程:RH124-v9x-05-创建、查看和编辑文本文件
笔记:
- 输入输出重定向:
- 三种设备:
“标准输入(通道编号:0;通道名称:stdin;默认连接:键盘;用法:仅读取)”、
“标准输出(通道编号:1;通道名称:stdout;默认连接:终端;用法:仅写入)”、
“标准错误(通道编号:2;通道名称:stderr;默认连接:终端;用法:仅写入)”、
“其他文件(通道编号:3+;通道名称:filename;默认连接:无;用法:读取、或/和写入)”。
注解:操作系统构建了一个带有编号标记的通道的进程结构来管理打开的文件;常用0、1、2的默认连接创建进程,3以上编号通道则连接其他文件,“0、1、2、3+”这些在Linux中叫做文件描述符,在windows中叫做文件句柄,本质是一个索引号(非负整数)。
演示:
[root@servera ~]用户目录下进入→ll /dev/std回车显示“stderr stdin stdout”→ll /dev/std*回车显示出“/dev/stderr -> /proc/self/fd/2”、“/dev/stdin -> /proc/self/fd/0”、“/dev/stdout -> /proc/self/fd/1”→cd /opt/→lsof /opt/显示出列表,表头为“COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME”其中FD就是文件描述符→再输入命令lsof,回车显示很多行→输入tty,回车显示“/dev/pts/0”
- 将输出重定向到文件;
功能用途:可以改变输入输出的默认位置、可以更改进程获取输入或输出的方式。
重定向操作符:
“>”:输出重定向,只能覆盖,不能附加,“1>file”把输出的默认位置1(即标准输出位)改到file(即文件位),一般此处为1则省略,直接写作“>file”;“2>file”表示只把标准错误文件丢到file里面;“2>/dev/null”表示将错误文件直接扔进垃圾桶;
“>>”:追加输出重定向,“追加”的意思就是附加,“>>file”,多了一个追加功能;“>file 2>&1”同“&>file”,表示重定向stdout和stderr以覆盖同一个文件,直译为先把标准输出改到file里,再把标准错误改到标准输出里,由于标准输出已经在file里,所以标准错误最终也是在file里;
“<”:输入重定向
“<<”:追加输入重定向
演示:
[root@servera opt]用户目录下进入→cp /etc/{hosts,passwd,shadow}→ls回车显示“hosts passwd shadow”→ll回车显示出四行,第一行total 12,后三行依次为“hosts passwd shadow”,这就是标准输出→ll dsds回车报错,显示no such file or directory,此为标准错误→ll . dsds回车显示六行,报错行、“.”行、以及之前的四行标准输出行→ll . dsds > st.txt回车显示其他五行标准输出行都已经去到st.txt文件下,此处仅剩一行标准错误行“no such file or directory”→cat st.txt即可见五行标准输出行→如果追加“ll . dsds >> st.txt”,再“cat st.txt”,则会看见是把新的五行附加在之前的后面→同理,如果只想把标准错误放在文件里,“ll . dsds 2> st.txt”,再“cat st.txt”,则会看见只有一行标准错误行“no such file or directory”→如果想把错误丢掉,“ll . dsds 2> /dev/null”,再“cat st.txt”,则会看见仅有五行,标准错误行已不见→如果想把标准输出和标准错误都放在文件st.txt中,则“ll . dsds &> st.txt”或“ll . dsds > st.txt 2>&1”
echo的功能,是显示文字,演示:
[root@servera opt]用户目录下进入→echo “fdsfs”回车显示fdsfs,此时可看到是标准输出→echo “fdsfs” >&2将此标准输出改到标准错误位置,回车仍显示fdsfs,但是此时位置已发生变化→通过脚本,可以直观看到:vim a.sh→进入脚本编辑界面→echo “ERROR 1” >&2换行>&2 echo “ERROR 2”换行、空一行echo “INFO STDOUT”输入“:wq”→回到用户命令行界面bash a.sh,回车,依次显示出三行“ERROR 1、ERROR 2、INFO STDOUT”→bash a.sh 2>/dev/null→回车显示仅剩INFO STDOUT
grep的功能,是查找文件里符合条件的字符串,演示:
[root@servera opt]用户目录下进入→grep ‘root’ /etc/passwd回车显示root的密码
find的功能,是在系统特定目录下查找具有某种特征的文件,演示:
[root@servera opt]用户目录下进入→find /home /var /etc -name ‘host*’查找范围“/home /var /etc”内的名称以host开头的文件,回车显示满足条件的所有文件
标准输入“<”,主要有两种输入命令“xarge”、“cat”,演示:
[root@servera opt]下→cat /etc/hosts回车显示两行→xargs -n 3 < /etc/hosts回车显示已分成三行(xarge命令的含义即为把文件“/etc/hosts”的内容作为标准输入,并传给xarge)→xargs < /etc/hosts即默认为一行
[root@servera opt]下→cat > files.txt <<EOFM回车开始创建文件内容第一行“RH124”、第二行“$HOSTNAME”、第三行“$HOME”、第四行“EOF”,换行输入“EOFM”退出,完成文件创建→cat files.txt回车显示第一行“RH124”、第二行“servera.lab.example.com”、第三行“/root”、第四行“EOF”→cat > files.txt << ‘EOFM’回车开始创建文件内容第一行“RH124”、第二行“$HOSTNAME”、第三行“$HOME”、第四行“EOF”,换行输入“EOFM”退出,完成文件创建→cat files.txt回车显示第一行“RH124”、第二行“$HOSTNAME”、第三行“$HOME”、第四行“EOF”
- 构建管道。
管道是一个或多个命令的序列,分匿名管道和命名管道,管道将一个命令的标准输出作为下一个的标准输入,可以利用管道处理多个命令行程序的输出。使用竖线“|”称之为匿名管道,写法“command1|command2|command3”,演示:
[root@servera opt]下→cat /etc/ssh/sshd_config | grep Port回车显示第一行“#Prot 22”、第二行“#GatewayPorts no”,传导成功→cat /etc/ssh/sshd_config | tail,传导成功→cat /etc/ssh/sshd_config | ls回车显示一堆文件“a.sh files.txt hosts passwd shadow st.txt test.txt”,说明ls不接受前一个命令的标准输出,传导失败→在ls前加xargs可成功→touch /root/a.txt→echo ‘/root/a.txt’ > test.txt→cat test.txt回车显示“/root/a.txt”→cat test.txt | ls回车显示一堆文件“a.sh files.txt hosts passwd shadow st.txt test.txt”→但是输入命令cat test.txt | xargs ls回车显示“/root/a.txt”,说明传到成功,但是ls依旧没有把前一个标准输出作为一个参数来执行→如果输入命令cat test.txt | xargs ls -l回车则显示出了文件信息(xargs是对文件输入进行了标准化处理,所以ls接受了输入)→验证一下ls -l /root/a.txt,回车输出相同结果。
Linux中还能创建有名称的管道,称之为命名管道,使用mkfifo命令创建,演示:
[root@servera opt]下→mkfifo a.pl→ll回车显示出新建文件a.pl及“a.sh files.txt hosts passwd shadow st.txt test.txt”的文件信息→file a.pl回车显示“a.pl: fifo (named pipe)”即文件是管道类型
Tee命令,可以将上一个文件传递到指定输出文件中,同时也传到了标准输出里,即在文件里有它,在标准输出里也有它。演示:
[root@servera opt]下→cat test.txt回车显示“/root/a.txt”→cat test.txt | tee /root/t.log回车显示“/root/a.txt”,可以看见标准输出了“/root/a.txt”,标准输出里有它→cat /root/t.log回车显示“/root/a.txt”,可以看见文件里也有它
以上演示是标准输出,那如果有标准错误,我也想对它实现tee命令,例如演示:
cat test.txt dsd回车显示两行,第一行正常输出“/root/a.txt”、第二行输出标准错误“no such file”→cat test.txt dsd | tee /root/t.log回车显示“no such file or directory/root/a.txt”→cat test.txt dsd 2>/dev/null | tee /root/t.log回车显示“/root/a.txt”,标准错误已经被丢入垃圾桶,只显示了标准输出→那如果还是希望标准错误通过管道传过去,cat test.txt dsd 2>&1 | tee /root/t.log回车显示两行,第一行正常输出“/root/a.txt”、第二行输出标准错误“no such file”,可以理解为把标准错误丢到标准输出里一起传到管道中去了→cat /root/t.log回车显示两行,同上结果。
- 从shell提示符编辑文件
使用vim编辑器从命令行创建和编辑文件。一般也可使用图形界面进行编辑,即在虚拟机Linux中使用gedit命令。演示:
cp /etc/hosts .→ls显示很多文件,在其中随便找一个→gedit hosts即弹出窗口,进入图形编辑界面→ssh -X workstation(workstation安装了图形界面)→gedit回车即弹出图形界面窗口→ssh -X servera(servaera未安装图形界面)→gedit回车,显示“X11 forwarding request failed on channel 0”→给servera安装图形界面:sudo dnf install gedit回车提示输入密码,跳出安装文件,按照提示完成安装即可→exit退出
- Vim四大模式:命令模式(command mode)、扩展命令模式(extended command mode)、编辑模式(edit mode)、可视模式(visual edit mode)。
- 命令模式:可以敲一些快捷键,如删除、拷贝;命令模式是其他模式的“中转站”,在进入命令模式后,可以进一步选择进入其他模式。
- Vim编辑器的功能:快速跳行gg/G、搜索“:Num 100”、删字符x、删行dd/Ndd、删列Ctrl+、复制行yy/10yy、粘贴行p/P、替换“%s#准备替换的内容#最后替换结果#g”、快速编辑i/I/a/A、新起一行o/O、撤销操作u、反撤销ctrl+r、保存退出:x/:wq/shift+zz/:wq/:w file/:wq!/:q!
Vim不同模式切换演示:
打开两个窗口,均为[root@servera ~]→ls -l /etc/ > etc.txt→vim b.txt回车进入一个新的编辑界面,此时的界面状态即为vim的命令模式→按“i”键,进入INSERT编辑模式/插入模式→按ESC键,退出当前的编辑模式,回到命令模式后,可在进入其他模式→再按“i”键,进入INSERT编辑模式/插入模式→按“:”,进入尾行命令/扩展命令模式→按“shift+g”,光标可以跳到最后一行的开头,按“gg”,光标跳到最前面,直接输入“100”即跳到第100行→按“dd”完成删除光标所在行→想删除10行,就输入“10”,然后“dd”,即删除光标所在行往后10行(含光标所在行)→按u撤销→按yy,完成当前行的拷贝→按p,粘在当前行之后→按shift+p,粘在当前行之前→输入i,在当前光标所在位置的前面插入内容→按o,在下面新起一行→按shift+o,在上面新起一行→输入“:h”可以查看帮助→输入“:q”可以退出帮助→回到命令模式,在首行随便输入dfsdfsafds,按“Ctrl+v”即进入“VISUAL BLOCK”可视块模式→输入“shift+v”可以操作“一行文本”→按v进入“VISUAL”可视模式→可以点住光标拖拽完成选择区域范围内容→“VISUAL”可视模式,只能对选中内容删除,输入x即完成删除→按“Ctrl+v”可以操作“一块文本”,按箭头“↓”,按20下,即可完成选择此列的20行→按shift+i插入内容“RH124 ”→按Esc→即可在光标所在列前内容“RH124 ”,并且是对选中的20行同时插入→替换:把所有“RH124”替换成“RH134”→输入“:1,10s#RH124#RH134#g”即选中10行,其中#是分隔符→输入“:%s#RH124#RH134#g”即全部替换→按ESC键,退出当前编辑模式,回到命令模式
退出vim演示:
输入“:w”表示结束,只保存,不退出→输入“:w c.txt”表示结束,只保存,不退出,且另存为c.txt→进入另一个[root@servera ~]→ls显示a.txt→cat a.txt→ls回车显示“a.txt b.txt c.txt etc.txt t.log”,即c.txt已经存在→回到第一个[root@servera ~]的vim编辑页面→输入“:wq”(同“shift+zz”同“:x”),即保存并退出vim→输入“:q!”,即强制退出,编辑内容未保存,也可以“:wq!”保存并退出
Vim的编辑模式,演示:
按i键,进入INSERT编辑模式→第一行dfsdfsafds按ENTER换行、第二行fdsfds按ENTER换行、第三行line3按ENTER换行、第四行RH124...→按x键,可以删除单个字符→按u键,可以撤销,类似window中的“Ctrl+z”→按“Ctrl+r”,可以反撤销,类似window中的“Ctrl+y”→退出vim,cat b.txt回车显示文件内容:第一行dfsdfsafds按ENTER换行、第二行fdsfds按ENTER换行、第三行line3按ENTER换行、第四行RH124...
Vim的空格、高亮等功能设置,演示:
[root@servera ~]进入→vim b.txt进入vim→按“i”键、再按“:”,输入“:set ts=4”即完成设置“按一次Tab键,跳4个空格”→输入“set nu”即完成设置显示行号→输入“/fd”即可完成对所有“fd”的搜索高亮显示
“:shell”调用命令(使用“:shell”命令在vim编辑器中编辑时中断跳出,调出bash登录shell,完成调用需要的命令)演示:
按“:”,进入尾行命令/扩展命令模式→输入“:shell”→即跳回[root@servera ~]→输入“exit”→又跳回vim编辑器
vimdiff分屏进行内容比较演示:
[root@servera ~]进入→vim回车显示“vim”、“vimdiff”、“vimtutor”→vimdiff回车显示一堆文件,选两个进行比较→vimdiff b.txt c.txt回车进入对比界面,左右两边分屏显示出文件b.txt及文件c.txt→按“Ctrl+w”,使光标处在左边分屏的首行第一个字符处→再按Ctrl+w,切换至右边分屏的首行第一个字符处→直接输入内容编辑,ENTER换行→ESC退出编辑→:wq保存退出光标所在分屏→还剩一个,再:wq,退出剩下一个分屏→垂直分三屏vim -O3 b.txt c.txt就会显示三个分屏,最后一个是空屏→水平分屏vim -o b.txt c.txt→也可以先登入vim编辑器,再输入“:sp”完成水平分屏→还可以输入“:vs”,对光标所在的分屏进一步完成垂直分屏。
中断恢复:
vim编辑文件时突然关闭、闪退、网卡(但是实际已经保存在临时文件中)→再打开→显示E325错误(重复编辑同一文件或编辑文本时会话异常断开后编辑文件时提示“Swap file XXX.swp already exists !”处理),按r保存→退出vim→在[root@servera ~]中输入“rm -rf .c.txt.swp”删掉报错的临时文件→再登入查看vim c.txt→发现恢复到闪退前状态。
Vimtutor获取帮助信息演示:
[root@servera ~]进入→vimtutor回车显示vim练习指导,对以上每个命令的操作,按1.2.3.一步一步的教学。
光标跳转操作演示:
[root@servera ~]进入→进入vim编辑器编辑文件“vim etc.txt”→按shift+6跳到行首→按$跳到行尾→按一次w,向后移动一个词,且光标停留在词首→按一次e,向后移动一个词,且光标停留在词尾→输入“d2w”,即可删除两个词→按住d+←键,向左删。
- 更改shell环境
变量基础知识,主要分变量定义、变量命名规则和变量引用方式。变量,分环境变量、自定义变量,常见的环境变量有LANG、HISTFILE、HISTSIZE、HOME、PATH、PS1、EDITOR等,环境变量一般都是大写字母,所以自定义变量时,可选择小写字母,以作区分。变量名称可以包含大小写字母、数字和下划线字符,但是不能以数字开头,定义格式:VAR_NAME=VALUE。变量销毁:unset命令、export -n命令。
Shell变量对于特定Shell会话是唯一,如果想要全局生效,可以使用命令“export”导出为环境变量。SET命令可以列出当前设置的所有SHELL变量(包括环境变量和自定义变量);ENV命令列出特定SHELL中所有环境变量;“export -p”命令列出特定SHELL中所有环境变量,但自动会添加定义命令。
SET命令演示:
[root@servera ~]→set | less回车列出所有变量→自己设置一个自定义变量var_student=servera→set | less回车列出所有变量→输入“/student”,即可查到自定义变量→输入“:q”退出列表页→echo $var_student引用自定义变量→回车列出servera,完成引用变量→echo ${var_student}_ds以避免歧义,回车列出servera_ds→set | grep PS1→回车列出PS1=’[\u@\h \W]\$’
- Bash Shell允许使用变量
一些SHELL变量在Bash启动时设置,可通过改变他们以更改SHELL行为这类变量仅提供给shell本身使用,而不由用户从某个shell运行的程序使用,所以不需要导出为环境变量export:PS1(更改提示符外观)、HISTFILE、HISTFILESIZE、HISTCONTROL(四种记录方式:ignoredupe、ignorespace、ignoreboth、erasedupe)、HISTTIMEFORMAT(=’%Y.%m.%d %H:%M:%S ‘定义时间格式)。
字体样式演示:
[root@servera ~]→echo $PS1回车显示“[\u@\h \w]\$”→PS1=’\[1;32m\][\u@\H\[\e[0;33m\] \W\[\e[1;32m\] ]\[\e[0;33m\]\[\e[1;34m\]\$\[\e[0m\]’→=\e[1;32m\]→回车进入[root@servera.lab.example.com ~]→cd /etc→回车进入[root@servera.lab.example.com etc]→cd sysconfig→回车进入[root@servera.lab.example.com sysconfig]→echo -e ‘\e[1;42;32;3m dsdsds \e[0m’→其中,“\e[”是固定格式,1是背景色(一般为默认,可不写),42绿色是词条的背景色,32绿色、31红色是字体前景色,3m是字体斜体、4m是下划线字体,dsdsds是显示内容,“\e[0m”是默认格式,回车显示dsdsds
PS1命令演示:
man bash→/PS1搜,发现有PS1、PS2、PS3、PS4→或者直接man -k PS1回车列出变量页→Ctrl+c退出→cd→退回到[root@servera.lab.example.com ~]→clear→exit→回到[root@servera ~]→clear→history→clear→全部回到最初设置
环境变量演示:
[root@servera ~]→RHT_HOSTNAME=servera→env | grep RHT→回车无反应→export | grep RHT→回车也无反应,说明不是一个完整的环境变量→set | grep RHT→回车显示RHT_HOSTNAME=servera,说明它属于其他变量,在set中可以显示→bash回车,此时便产生了一个shell→这时候set | grep RHT回车,无反应→exit回车→再set | grep RHT回车显示RHT_HOSTNAME=servera→再export | grep RHT→env | grep RHT回车显示RHT_HOSTNAME=servera→bash→env | grep RHT回车显示RHT_HOSTNAME=servera,完成临时设置
Nano文本行编辑工具演示:
[root@servera ~]→随便调一个vim文件出来visudo→q→export EDITOR=nano→visudo→界面不一样了,界面最下面多了两行提示符→x退出→export EDITOR=vim→完成换成原本的vim编辑器
语言LANG环境变量演示:
[root@servera ~]→echo $LANG→回车显示“en_US.UTF-8”,表示“区域.语言”→对这种环境变量——字符集,要保证Linux所连工具,如Xshell中设置的字符集,要与远端服务器保持一致,否则会乱码→另开一个命令行窗口touch 中文.txt→回车正常显示“中文.txt”→在电脑开始菜单中搜索Xshell并启动→在弹出的会话框里输入172.25.22.250搜索到,选中并点击打开→输入ll→回车正常显示“中文.txt”→在图形界面点击“文件”→“当前会话属性”→在弹出窗口中点击“终端”→把编码随便改一下,让它不一致→此时再输入ll→回车已显示乱码“涓?.txt”→touch不了,输入不了“中文”→再回到“当前会话属性”-“终端”,选择UTF-8,改为一致→回到新开的命令行窗口→export LANG=zh_CN.UTF-8→ll→发现原来第一行是“total 64”,现在变为“总用量 64”→export LANG=en_US.UTF-8→ll→即完成恢复至之前设置
- 自动设置变量
在Shell启动时自动设置shell或环境变量,可以编辑Bash启动脚本。
当Bash启动时,会运行几个包含shell命令的文本文件,以初始化shell环境。
登录shell优先顺序从前到后依次为:优先/etc/profile、然后加载~/.bash_profile、再次加载~/.bashrc、最后加载/etc/bashrc,后面加载的会覆盖前面加载的脚本。
非登录shell:只有/etc/bashrc,和~/.bashrc。如果是自定义一个环境变量,一般会定义在profile中;别名,一般会加在bashrc里。所以,非登录,它加载的顺序里面,它没有 profile,他就不加载/etc/profile

460

被折叠的 条评论
为什么被折叠?



