当前位置: 首页 > news >正文

OS6.【Linux】基本指令入门(5)

目录

1.配置公网IP到XShell中

2.日志

定义和作用

3.一些指令

date

%Y、%m、%d、%H、%M、%S、%X、%F

%s

时间戳的特点

时间戳的转换

cal

cal 年份

其他选项

★find★

whereis

grep

练习

-v选项

-n选项

-i选项

多文件查找

特定目录下查找

diff


1.配置公网IP到XShell中

以XShell8为例,

新建

写名称,协议默认不变,主机填公网IP,端口号默认不变,说明可以不写

创建好了后第一次默认需要输入密码,之后可以设置记住密码

之后所有的文章将用普通用户进行(例如创建一个名称为guest的账户)

2.日志

定义和作用

1.记录程序运行的每一个关键时刻,会包含时间、日志的等级(warning? error? debug?、具体的信息和其他信息

2.日志是按行打印的

3.一些指令

date

默认情况下按"星期 日 月 年 12小时制的时间 AM或PM CST"格式打印,其中CST为中国标准时间的缩写(China Standard Time),例如:

这个日期的打印方式看着可能不习惯,date可以指定日期的打印格式(使用date+%的形式,注意有+号)

%Y、%m、%d、%H、%M、%S、%X、%F

%Y 完整年份

%m 月

%d 日

%H 时

%M 分

%S 秒

%X 相当于 %H:%M:%S AM或者PM

%F 相当于%Y-%m-%d

如果想打印多个,中间必须有分割符(非空格字符),不能有空格,否则视作多个参数,例如:

date +%Y-%m-%d date +%Y/%m/%d

%s

打印时间戳

之前在E10.【C语言】练习:编写一个猜数字游戏文章中使用过时间戳

时间戳产生的原因:在同一时刻,世界各地钟面上显示的时间不同(地球被分为24个时区,每个时区相差一小时),需要统一的时间标准:Unix时间戳

Unix时间戳(英文为Unix epoch, Unix time, POSIX time或Unix timestamp)是从格林威治时间1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒

时间戳的特点

多次执行date +%s发现:时间戳的值在不断变大

时间戳的转换

指令:

date -d @时间戳

补:时差的问题

按理来说: 应该是从00:00:00开始,但是显示的却为00:00:00,原因:时间戳定义的是从格林威治时间1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,中国和格林威治有时差,所以做了进一步转换

cal

作用:打印日历

不加参数,默认打印的是当月的日历,显示今天是多少日

cal 年份

作用:打印该年的日历

其他选项

-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历

★find★

作用:可以在任意路径下进行文件查找(对比which指令,只能在特定的目录下usr/bin查找,具体参见OS4文章)

例如find -name *.c查找所有的c文件

例如find usr/bin -name ls查找特定目录usr/bin的ls文件

root用户下查找

非root用户下查找(权限不够根本查不到)

例如find / -name stdio.h从根目录查找stdio.h文件

whereis

作用:在系统指定路径下搜索部分或完全匹配字符串的文件名(既可以找到可执行程序,又可以找到手册,安装包压缩包等之类)

例如whereis pwd

其中pwd.h和pwd.1.gz文件名字符串部分匹配pwd,其中.gz后缀为压缩包

grep

先创建的大文本test.txt用于实验

cnt=1; while [ $cnt -le 10000 ]; do echo "Hello World! $cnt" ; let cnt++; done > test.txt

(创建10000行)

观察grep '8' test.txt的执行结果,猜测作用:

grep的作用:行文本过滤,在文件中搜索字符串,将找到的行打印出来

练习

先向data.txt写入以下内容:

Hello World! Hello World. Hello woRld hello world? Hello hello?

问题1:grep 'World' data.txt的打印结果是什么?

grep按行搜索,如果某行包含World字符串则打印

问题1:grep 'hello' data.txt的打印结果是什么?

grep按行搜索,如果某行包含hello字符串则打印

-v选项

观察grep -v 'hello' data.txt的执行结果,猜测-v选项的作用:

grep 'hello' data.txt对比可以看出:

-v选项的作用:类似于补集,grep 'hello' data.txt,如果行包含hello字符串,不打印,否则打印

-n选项

作用:显示行号

-i选项

观察grep -i 'world' data.txt的执行结果,猜测-i选项的作用:

-i选项的作用:-i即--ignore,不区分字符串的大小写

多文件查找

例如查找stdio.h和stdlib.h的#define字符串,要查多少文件就在字符串的后面跟上多个文件的路径名

grep '#define' /usr/include/stdio.h /usr/include/stdlib.h

特定目录下查找

需要用到-R选项

例如查找/usr/include目录下含有#define字符串的文件

grep -R '#define' /usr/include

diff

作用: 比较文件差异

常用的选项: -u

diff -u 文件1 文件2

例如1.txt写入:

Hello World This is line 2 Line 3 here Goodbye

例如2.txt写入:

Hello World This is line 2 modified New line added Line 3 here Goodbye World

运行结果:

输出开头用 ---和 +++分别标识文件1和文件2

http://www.jsqmd.com/news/447051/

相关文章:

  • 探索Win-SSHFS安全机制:如何保护你的远程文件传输
  • dockerfiles项目贡献指南:如何提交PR分享你的Dockerfile文件
  • 7分钟掌握Git快速统计工具:从安装到高级分析的完整指南
  • 2025终极指南:如何用dh-virtualenv构建隔离式Python Debian包的完整实践
  • 交通数据实时获取指南:基于awesome-public-real-time-datasets的实践教程
  • Transactional Email Templates终极指南:5个实用自定义技巧打造完美邮件体验
  • Riverpod状态持久化终极指南:如何实现离线支持和数据缓存
  • video.min.js videojs播放器插件使用详解
  • 拉格朗日插值算法原理及简单示例
  • 终极指南:为什么选择Lovefield关系型数据库而非IndexedDB
  • 银行家算法-安全性检查算法(C语言实现)
  • 终极指南:如何用vex.js插件系统打造自定义对话框
  • xctool测试报告分析终极指南:5分钟快速解读JUnit和Phabricator报告
  • 不同输入函数的区别比较及send和sendline使用
  • 为什么React Dev Inspector是2024年前端开发的必备工具?
  • 如何快速掌握Mio高性能I/O库:探索os-poll和net核心功能的终极指南
  • 如何快速生成精准上传漏洞字典?upload-fuzz-dic-builder完全使用指南
  • 交流异步电动机变频矢量控制仿真的控制效果良好
  • EVE API完全指南:函数对象与SIMD类型深度解析
  • USWDS与现代化框架集成终极指南:React、Angular和Vue的最佳实践
  • aHash高级特性:编译时/运行时RNG选择与no_std环境配置
  • 如何使用MagicClothing:AI服装驱动图像合成的完整指南
  • 自动驾驶数据集标注与检测对比:Streamlit Demo: The Udacity Self-driving Car Image Browser 实战教程
  • 彻底解决结构化数据痛点:TensorFlow Fold动态计算图实战指南
  • 为何 LoRA 初始化 B=0 而 A 为高斯分布初始化?
  • wps加载项打包成exe
  • 10分钟上手pretty-quick:让代码格式化效率提升10倍的实战指南
  • wit-bindgen高级特性:类型别名、资源管理与异步支持完全攻略
  • 岐金兰空论
  • 为什么gh_mirrors/cr/cross_browser能跨浏览器追踪用户?核心算法解析