目录
1.配置公网IP到XShell中
2.日志
定义和作用
3.一些指令
date
%Y、%m、%d、%H、%M、%S、%X、%F
%s
时间戳的特点
时间戳的转换
cal
cal 年份
其他选项
★find★
whereis
grep
练习
-v选项
-n选项
-i选项
多文件查找
特定目录下查找
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