一、echo指令:
✔️✔️在终端中显示文本内容或向文件中写入文本
Ⅰ.基本用法:
0x00打印字符串:
打印字符串/显示文本内容;可以用双引号作为文本内容⬇️⬇️更推荐用单引号
这里我将字符串打印出来了。和printf的功能一样;💡但是他自带换行也就是 \n 的功能
这是我打开的一个文件夹。✔️在该路径底下,echo 并不是打开了这个文件夹,只是单纯的以✨字符串的形式打印出来
显示内容指的是这个,不要搞错了
说了与printf有相同的地方,在Linux可以用printf么;✔️是可以的
📖单双引号都行,还可以用到占位符,但是其中 逗号 用 空格 代替。
Ⅱ.高级用法:
0x00重定向输出:>
下面等会就讲解重定向,先说下高级用法!!!其实本质就是模拟的c语言的文件操作✨✨
好神奇,直接将内容放到了test.txt的文件中!!!没有该文件的时候,会先当前路劲底下创建出一个文件,然后在写入其中!!
⏭️但是注意❗❗它的写入会覆盖,相当于c语言中的读取方式为 "w"方式,没有就会新建,存在就会打开重新写入❗❗
0x01追加输出重定向: >>
❗❗功能差不多,但是这个就不会覆盖其文件内容,相当于C语言以“a”的读取方式打开文件,将内容输入到文件中
二、重定向:
0x00引用:
Linux系统中,一切皆是文件!!!
❗❗ 之前也讲过指令其实也是文件,只是在/usr/bin/xxx 路径底下✔️✔️
我们的printf打印向显示器打印,这个是语言层次的描述
其实本质就是文件操作;
但是我们C语言学过要文件操作要先打开文件,再进行操作!键盘、显示器也要先打开文件,但是为啥我们没有去操作过呢??因为这个是系统主动给你打开了该文件。
0x01输出重定向:
命令 > 目标
将内容输入到目标文件中;没有就会将新建一个文件
✨✨默认时直接就是写入屏幕文件,如果用到了重定向就将其写入了指定文件✔️✔️✔️
❓❓在没有写时默认是对屏幕写入,那么我如果写了 >目标文件 就会写入指定得目标文件,没有就会新建,那么我是不是可以用来创建一个文件呢❓❓
牛逼!!!确实就是这样,我们以后直接用它来建普通文件
死老六,还有招没有使出来呢!!!
💡💡总结:
>目标文件
①创建一个新文件
②清空一个文件
0x02追加重定向:>>
命令 >>目标文件
和输出重定向的区别就是不会覆盖原有的内容,也可以用来创建普通文件
0x03输入重定向:<
命令 < 文件
将文件的内容输入到cat中,通过cat将内容输出
0x04补充:
上面提过,Linux一切接文件!!那么我们的终端本质就是一个文件
是一个叫做 /dev/pts/xx文件。
我们现在用同一个云服务器登陆不同账号,会有如下信息:
可以通过tty指令查看本用户的终端文件❗
💡💡我们在这边通过输出重定向,可以将我们想打印的字符串写入到隔壁用户的终端
注意 :我们只有超级用户才能这么玩,普通用户没权限啊,用不了,这里我两个终端都是用的root用户,所以双方都可以实现这个操作,也就是互传!
⭕️我了个骚杠,还能这么玩❗(下面我用的是超级用户对普通用户实行的操作)
🤔🤔为了更好理解linux的一切是文件
写了一个c程序,向文件输入【因为我不会怎么弄缩进,所以有点丑🐒】
⭕️在这里,我们打开隔壁终端文件,通过fscanf向该文件写入🉑然后在超级用户这边执行这个c程序,会发现成功在sw这个普通用户这里写入了🥘
三、文件类型:
🐒文件类型多种多样
后面加深学习,先提高功力
四、mv指令:剪切/改名
✨语法:
mv 选项 源文件 目标文件(必须存在)
✨功能:将源文件剪切到目标文件 或者 将源文件改名成目标文件。
✨常用选项:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖
0x00:剪切:
✔️和Windows差不多,就是将该文件移动走,一模一样的行为,相同会发生覆盖
0x01改名(重命名):
🐒🐒就是看目标目录是否存在,不存在的话,认为目标文件是新名字(改名)
五、cat指令:
✨语法:
cat 选项 查看的文件
✨功能:查看目标文件的内容(适用于查短文件)。
✨常用选项:
-b : 对非空输出行编号
-n : 对输出的所有行编号
-s : 不输出多行空行
很好理解不多做展示了
六、tac指令(cat反过来了):
✨语法:
tac 查看的文件
✨功能:反向查看目标文件的内容(适用于查短文件)。
✨常用:
主要用于 | 管道。
✔️✔️直接反着给你看
七、more指令:
✨语法:
more 选项 查看的文件
✨功能:查看目标文件的内容(和cat类似,作为过去主要用来查日志的指令)。
✨常用选项:
-num 指定每屏显示行数
+num 指定从哪行开始显示
✨ 一些操作:
1、空格键(Space):向下滚动一屏。
2、回车键(Enter):向下滚动一行。
3、b:向上滚动一屏。
4、q:退出 “more” 命令。
实操一下
这个是默认一屏显示的内容,现在我们试试选项。
现在已经不推荐用了,因为这个只能下翻,不能上,所以不推荐
八、less指令:
✨语法:
less 选项 查看的文件
✨功能:less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件
✨常用选项:
-i 忽略搜索时的大小写
-N 显示每行的行号
✨ 一些操作:
1、/字符串:向下搜索“字符串”的功能
2、?字符串:向上搜索“字符串”的功能
3、n:重复前一个搜索(与 / 或 ? 有关)
4、N:反向重复前一个搜索(与 / 或 ? 有关)
5、q:quit
同时空格和enter键的效果和more;
而且还多了一个向上翻,键盘按键↑↓可实现上下翻。
这个指令的一些内容在这就不做过多展示了,用法差不多。一般来说选项用的少,你也可以用
竟然有这么好用的less,那我们还要啥自行车,只要用上这个就行了,选项用的也不多,主要都是用来查日志的;
cat查看的内容太多了,要看一个文件太麻烦了用less去查自己需要的就可以了!
九、head和tail指令:
0x00引用:
head与tail,一个是从头开始查,一个是从尾开始查,作为好兄弟一起被使用
0x00怎么用:
指令 选项 文件名
选项就记住一个 -n(n表示显示行数)
先看看吗默认
默认显示10行哈,接下来看看选项后
0x01兄弟同心:
假设:我们这个log.txt文件是一个日志,现在我们是100行,我想看中间处的日志也就是50行
这里是文件很少,体会不到,但是日志文件,一般都会很长,想要查找一下,密密麻麻的文字看的头疼,所以这个方法还不错;
0x02升级版
两兄弟刚刚是借助一个叫temp的文件(也可以说是借助了临时文件,因为用完就没用了)(类似飞鸽传书),有点麻烦啊,随着社会发展,电话诞生了!!
head说
接着说
tail(有点牛头对不上马嘴哈,主打不安慰)
“电话”充当了一个媒介,将打电话人的要发送信息提供给接电话的你,这里它就是 | 管道
命令1 | 命令2
将“命令 1” 的输出会作为 “命令 2” 的输入。
✨✨在这里管道就不做原理性讲解了,后面在说,现在会用即可,要理解原理的话,这个涉及到冯若依曼体结构
十、和时间相关的指令:
Ⅰ.date 指令:
当前的时间就显示出来了;
0x00用法:
✔️当然了,还可以指定格式,像这样的格式是我们不喜欢的样子
date 指定格式显示时间: date +%Y:%m:%d
格式设定为一个加号后接数个标记 + 必须要,其他地方的可以根据你的格式来
🐒我觉得不要记,这个对应的那个单词首字母,年月份的Y要大写,其他小写,时间要大写
%H : 小时(00..23)
%M : 分钟(00..59)
%S : 秒(00..61)
%X : 相当于 %H:%M:%S
%d : 日 (01..31)
%m : 月份 (01..12)
%Y : 完整年份 (0000..9999)
%F : 相当于 %Y-%m-%d
0x01设置时间:
date -s //设置当前时间,只有root权限才能设置,其他只能查看。
date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00
date -s 01:01:01 //设置具体时间,不会对日期做更改
date -s “01:01:01 2008-05-23″ //这样可以设置全部时间
date -s “01:01:01 20080523″ //这样可以设置全部时间
date -s “2008-05-23 01:01:01″ //这样可以设置全部时间
date -s “20080523 01:01:01″ //这样可以设置全部时间
功能挺全的,但是这里就不去设置了,当了解一下就行了,谁家好人改自己的时间
0x02时间戳:
Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒
百度百科:什么是时间戳?⏭️时间戳是指格林威治时间1970年1月1日00时00分00秒(北京时间1970年1月1日08时00分00秒)起至现在的总秒数。时间戳是使用数字签名技术产生的数据,签名的对象包括了原始文件信息、签名参数、签名时间等信息。时间戳系统用来产生和管理时间戳,以证明原始文件在签名时间之前已经存在。
为什么?
✔️简单点来说是为了统一一下时间,类似国际语言为了方便各国各地能够交流使用英语。主要是程序员在工作是会有工作日志来记录,会记录那个时间由谁进行了什么修改,便于找bug
例如:像我们的转账记录、银行取款等都是有时间的,它们就是时间戳进行的记录。你想想,你在国外旅游刷卡了,它就要转换成时间戳来记录你的转账时间,如果用当时地方时,那不就乱套了么,国内时间和国外不一样。
💡时间戳转换:
时间->时间戳:date +%s
时间戳->时间:date -d@时间戳
💡转换 一下当前时间:
🐒转时间戳工具:
在线时间戳转换工具不喜欢可以直接网上查找,网上到处都是
我们来看看时间戳为0也就是时间戳开始的那一刻
因为我们是北京时间,它是根据我们现在目前时间往前推出来的。(在东八区)减去八个小时的时差,不就是格林治时间么。
Ⅱ.cal指令:
💡💡cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”
✨语法:
cal 选项 [年份][月份]
✨功能:用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
✨常用选项:
1.-3 显示系统前一个月,当前月,下一个月的月历
2.-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
3.-y 显示当前年份的日历
0x00看年:
✔️ 直接cal (-y选项可有可无)年份
0x01-3选项:
💡查看当年的该月份以及其前后月份
0x02直接看当日
直接cal ,默认是显示显示当日
十一、find指令:
之前有学过用which来查找,它是回去/usr/bin/(指令目录底下去查找命令)
接下来的find也是查找的,但是功能更广
掌握一个选项
-name 指定文件名来查找
find 指定目录 -name 查找文件
🤔我们用这个来实现找指令的路径的功能
✔️ 也能找到,但是会比which慢很多,因为它是广度优先遍历去查找的,在根目录中找,根目录中有很多文件的,要查的实在太多了