鸟哥的私房菜:指令下达行为与基础档案管理

一、date 指令相关操作
显示 “小时:分钟” 格式:执行指令date +%H:%M,即可按照 “小时:分钟” 的格式输出当前时间,如 “15:20” 。其中%H表示 24 小时制的小时数,%M表示分钟数。
date +%s****输出信息:该指令输出的是从 1970 年 1 月 1 日 00:00:00 UTC 到当前时间的秒数,也被称为 Unix 时间戳。它常用于时间相关的计算和记录,在编程和系统管理中应用广泛 。
显示两天前的+%Y/%m/%d****格式日期:使用指令date -d "2 days ago" +%Y/%m/%d,-d选项用于指定日期字符串,“2 days ago” 表示两天前,后面的+%Y/%m/%d用于指定输出格式,以 “年 / 月 / 日” 的形式展示日期。
显示 “西元年 - 日 - 月 小时:分钟” 格式:执行指令date +%Y-%d-%m %H:%M,%Y代表四位数的年份,%d表示日,%m表示月,通过合理组合这些格式符,就能得到所需的日期时间显示格式 。
二、cal 指令相关问题
cal 指令功能:cal指令主要用于显示日历。执行cal指令,默认显示当前月份的月历;使用cal -y可以显示今年的日历;而cal -3则会显示上个月、本月、下个月的月历 。所以,“显示目前这个月份的月历”“显示今年的日历”“显示上个月、本月、下个月的月历” 这三种功能都可通过cal指令及其相关选项实现。
三、用户切换与指令调用相关问题
su - 切换后无法调用指令:当使用su -切换到 root 之后,想要使用方向键上 / 下去调用刚刚下达的date 021916462023指令却调不出来,这是因为su -命令会创建一个新的登录 Shell 环境,拥有独立的命令历史。原用户(如 student)的命令历史不会自动带入到 root 的 Shell 环境中 。
离开 root 再次成为 student:在 root 用户环境下,执行exit指令,即可退出 root 用户,返回到之前的 student 用户 。
四、指令查找与中断相关操作
查找以 if 及 ls 开头的指令:在 RockyLinux 9 系统中,可以使用compgen -c | grep ^if查找以if开头的指令,使用compgen -c | grep ^ls查找以ls开头的指令 。compgen命令用于生成与指定条件匹配的命令、函数、变量等,-c选项表示只显示命令,grep ^if和grep ^ls用于筛选出以相应字符串开头的结果。
查找以 ifco 开头的指令:同样可以使用compgen -c | grep ^ifco尝试查找以ifco开头的指令。如果系统中存在该指令,就能通过此命令找到其完整名称 。
*中断***find /**指令:当执行find /指令输出很乱不想看时,可以按下Ctrl + C组合键,该组合键会向正在运行的进程发送中断信号,从而终止指令的执行 。
中断输入异常的指令:对于输入ls '后指令输入行为奇怪的情况,也可以按下Ctrl + C组合键中断当前指令的执行,使终端恢复正常输入状态 。
使用ll -d查看文件:若想使用ll -d查看以/etc/se开头的文件,可以执行ll -d /etc/se*,其中*是通配符,表示匹配任意字符序列,这样就能列出所有以/etc/se开头的目录或文件的详细信息 。
查看以 H 开头的变量:使用echo $H*可以查看所有以H开头的变量。这里$符号用于引用变量,*通配符确保匹配所有以H开头的变量名 。
五、bc 指令与 man 页面查询操作
在 bc 中设置 1/3 输出格式:在 bc 的执行环境中,先输入scale=4(scale用于设置小数精度,这里设置为 4 位),然后输入1/3,即可输出.3333这样的格式 。
计算 pi 的 50 位数字结果:在man bc中找到pi=相关内容可知,bc 内置了pi常量。在 bc 环境下,输入scale=50;pi,就能计算出 pi 的 50 位数字结果 。
计算 1000/17 的余数:在 bc 环境下,输入1000 % 17,其中%运算符用于计算余数,执行后即可得到 1000 除以 17 的余数 。
解读 man date 中的示例指令:在man date中找到第一个示例指令后,需根据具体指令内容,结合date指令的各选项含义进行解读。例如,若示例指令为date +%F,%F表示%Y-%m-%d格式,即该指令用于以 “年 - 月 - 日” 的格式输出当前日期 。
六、more 与 less 搭配管道命令操作
分页查看 ll /etc 结果:使用ll /etc | more和ll /etc | less都可以将ll /etc的结果一页一页翻动。more命令在到达文件末尾时会自动退出,而less命令提供了更强大的浏览功能,支持前后翻页、搜索等操作 。
查找 passwd 相关字样文件名:在使用less分页查看ll /etc结果时,按下/键,然后输入passwd,按下回车键,即可搜索并定位到含有passwd相关字样的文件名结果 。
find /etc 结果交 less 查询:执行find /etc | less,将find /etc的结果通过管道传递给less,方便逐页查看查找结果,同时利用less的搜索等功能进行进一步处理 。
student 身份查找错误讯息:当使用的身份为 student 时,执行find /etc | less,如果在查找过程中遇到没有权限访问的目录或文件,会显示错误讯息。但由于权限限制,student 用户只能看到部分与自身权限相关的错误讯息,无法查看所有系统级别的错误 。
计算一年的秒数:通过管道功能,执行echo $((3652460*60)),利用 Shell 的算术扩展功能,计算出一年 365 天总共的秒数 。
七、grep 抓关键字操作
提取网络接口卡 IP 信息:使用ifconfig | grep "inet "指令,ifconfig用于查看网络接口信息,通过管道将其输出传递给grep,grep "inet "用于筛选出含有 “inet” 字样的行,这些行通常包含了网络接口卡的 IP 地址信息 。
八、文件与目录相关问题
链接档与一般目录差别:使用ll /观察文件名,链接档最左边的字符是l,表示这是一个符号链接;而一般目录最左边的字符是d,代表目录类型 。通过查看文件类型标识字符,能快速区分文件的类型。
/proc 和 /sys 文件容量:/proc和/sys目录本身并不占用硬盘空间。/proc是一个虚拟文件系统,它存储的是系统运行时的进程信息、硬件信息等,数据在内存中动态生成;/sys也是虚拟文件系统,用于导出内核对象的信息,同样基于内存,不占用磁盘空间 。
/boot/vmlinuz 开头核心文件容量:在 RockyLinux 9 环境下,使用ll /boot/vmlinuz*指令,可以查看/boot/vmlinuz开头的核心文件的详细信息,包括文件容量大小 。
猜测 ls 与 ifconfig 放置目录:通过man ls和man ifconfig查询相关信息,并结合系统中指令的常见存放位置,ls指令通常存放在/bin或/usr/bin目录下,ifconfig指令一般存放在/sbin或/usr/sbin目录下 。这些目录是系统存放常用可执行文件的地方。
放置大文件加速编辑:如果有一个暂时使用且容量较大的文件需要经常访问和编辑,为了加速,可以将这个文件暂时放置在/tmp目录。/tmp目录通常位于内存中(如果系统配置为 tmpfs),读写速度快,但编辑完毕后必须重新复制回原本的目录,因为/tmp目录中的文件在系统重启后可能会丢失 。
九、console, terminal, shell 相关概念
tty1, tty2 等待登入的环境:在 tty1, tty2 等待你登入的环境,中文称为 “登录环境”,英文为 “login environment” 。
提供输入输出的界面:这种可以提供键盘输入 / 屏幕输出的界面,中文称为 “终端机”,英文为 “terminal” 。它是用户与计算机系统进行交互的设备或软件模拟界面。
执行指令的软件:提供用户输入指令,然后将指令带入系统中执行的软件,中文称为 “壳程序”,英文为 “shell” 。常见的 Shell 有 bash、sh 等,它负责解释用户输入的指令并调用系统内核功能执行相应操作 。
指令行组件名称:对于指令列cmd --op1="para1" --op2 para2,其中cmd称为命令(command),--op1="para1"和--op2称为选项(option),para2称为参数(parameter) 。选项用于修改命令的行为,参数则是命令操作的对象。
locactl list-locales****指令参数意义:locactl list-locales指令中,list-locales是locactl命令的参数,其意义是列出系统中所有可用的语系(locale)设置 。通过该指令,用户可以查看系统支持的语言、地区和字符编码等相关信息。
十、常用指令操作练习
切换 bash shell 输出语系及查看设置值
(a) 在 bash shell 环境下,执行export LANG=en_US.utf8指令,可以将输出的语系切换成 en_US.utf8 。
(b) 使用echo $LANG指令,能够查看当前语系的设置值 。
计算密码修改日期对应的公历日期:已知密码修改日期是在 16849,执行指令date -d "1970-01-01 + 16849 days" +%Y/%m/%d,即可计算出该日期实际上对应的公历日期 。这里通过-d选项指定从 1970 年 1 月 1 日开始经过 16849 天后的日期,并以 “年 / 月 / 日” 格式输出。
使用 cal 输出指定日期日历及相关信息
输出 2023/02/20 这一天的日历并查看星期几,执行指令cal 02 2023,会显示 2023 年 2 月的月历,并突出显示 20 日对应的星期 。
(a) 计算当天是这一年中从 1 月 1 日算起的第几天(儒略日),执行指令date -d "2023-02-20" +%j 。
(b) 执行结果显示该日是这一年中的第 51 天 。
十一、其他常用指令操作
root 切换 student 是否需密码:如果为 root 身份,使用su - student切换成 student 时,不需要输入密码 。因为 root 用户具有最高权限,可以直接切换到其他用户。
调用 HISTFILESIZE 变量:调用HISTFILESIZE这个变量的完整指令是echo $HISTFILESIZE,该指令用于查看系统中设置的命令历史文件大小上限 。
查询 /etc/group 文件第三个字段意义:使用man group指令,可以查询/etc/group这个文件的详细信息,包括第三个字段的意义 。/etc/group文件用于存储用户组信息,通过man手册能准确了解各字段的含义。
查询 /dev/null 设备含义:执行man 4 null指令查询/dev/null设备,在其 DESCRIPTION 部分可知,/dev/null是一个特殊的设备文件,也被称为 “位桶” 或 “黑洞”。写入到/dev/null的数据会被丢弃,常用于将命令的输出重定向到该设备,以达到丢弃输出、避免屏幕显示杂乱信息的目的 。
查找含 shadow 文件名及处理错误信息
(a) 利用 student 身份,通过管道命令与 grep 功能,执行find /etc -name "shadow" 2>/dev/null | grep shadow指令,可找出文件名含有shadow的文件名数据 。其中2>/dev/null用于将错误信息重定向到/dev/null丢弃,只保留正确输出。
(b) 执行结果的文件名数量会根据系统实际情况而定 。
十二、基础目录认知
放置用户与管理员常用指令的目录:根目录下,/bin和/sbin目录主要用于放置用户与管理员常用的指令。/bin目录存放的是所有用户都可以使用的基本命令,/sbin目录则存放系统管理相关的命令,通常需要管理员权限才能执行 。
- 不占硬盘空间的内存目录:根目录下,/proc和/sys目录其实是内存内的资料,本身并不占硬盘空间 。如前文所述,它们是虚拟文件系统,数据基于内存动态生成。
放置设置文件的目录:在根目录下,/etc目录主要用于放置设置文件。系统中各种服务、程序的配置文件大多存放在该目录下,通过修改这些配置文件可以调整系统和程序的运行参数 。
/lib/modules 目录内容:/lib/modules目录主要放置系统内核模块 。这些模块是可动态加载和卸载的内核代码,用于扩展内核功能,如驱动程序、文件系统等。不同的内核版本对应不同的模块目录结构和内容。
执行 /usr/bin/mount 指令
使用绝对路径执行:/usr/bin/mount 。
在工作目录下执行(假设当前工作目录为/usr/bin):./mount 。这里./表示当前目录,确保系统在当前目录下查找并执行mount指令 。