【越学学糊涂的Linux系统】Linux指令篇(二)

一、echo指令:

✔️✔️在终端中显示文本内容或向文件中写入文本


Ⅰ.基本用法:

0x00打印字符串:

76f72c99f26d41d18be95e25370308e8.jpeg打印字符串/显示文本内容;可以用双引号作为文本内容⬇️⬇️更推荐用单引号

9a0246af82bd49b3a5ed7c850572c222.png

这里我将字符串打印出来了。和printf的功能一样;💡但是他自带换行也就是 \n 的功能

ea90952c52af48188cca574f61642665.png a381e380fa07449985ee87b7b3155c2d.png这是我打开的一个文件夹。✔️在该路径底下,echo 并不是打开了这个文件夹,只是单纯的以✨字符串的形式打印出来

f8ed752d26d5437fb55d7a88d474b4fc.png

520b2302c80f45de9b07c97fbbd7b32d.gif显示内容指的是这个,不要搞错了

95e77e205820414abd0ca049cfff97fb.jpeg说了与printf有相同的地方,在Linux可以用printf么;✔️是可以的43a58b8411374dc496d8c2b48c75559b.png

📖单双引号都行,还可以用到占位符,但是其中 逗号空格 代替。


Ⅱ.高级用法:

0x00重定向输出:>

下面等会就讲解重定向,先说下高级用法!!!其实本质就是模拟的c语言的文件操作✨✨

1a3ec06eb22c4e9990a16256dd8bb647.png

d6054f023d14423796702ab2503e5e3a.jpeg好神奇,直接将内容放到了test.txt的文件中!!!没有该文件的时候,会先当前路劲底下创建出一个文件,然后在写入其中!!

⏭️但是注意❗❗它的写入会覆盖,相当于c语言中的读取方式为 "w"方式,没有就会新建,存在就会打开重新写入❗❗

3024fa43280b4482b254d178a7a3d4f6.png

75778f98800c4f0f8500630b763c35b3.png

 0x01追加输出重定向: >>

 ❗❗功能差不多,但是这个就不会覆盖其文件内容,相当于C语言以“a”的读取方式打开文件,将内容输入到文件中

b73dee863b71415cb68aea12a8162df1.png

4d1f25314bc74cbc971467d77fb83d67.png

 二、重定向:

0x00引用:

278f774dc7aa4de3a336e7945e098e2e.pngLinux系统中,一切皆是文件!!!

8741f3cf218b4dbc8e8efd10a68d38cb.png

❗❗ 之前也讲过指令其实也是文件,只是在/usr/bin/xxx 路径底下✔️✔️


我们的printf打印向显示器打印,这个是语言层次的描述

8d01e3ff9da34d1892f2ce2ec3f8f03b.jpeg其实本质就是文件操作

但是我们C语言学过要文件操作要先打开文件,再进行操作!键盘、显示器也要先打开文件,但是为啥我们没有去操作过呢??因为这个是系统主动给你打开了该文件。

2d9c8c44fae74f868466e98cfbde4368.png

 0x01输出重定向:

命令 > 目标

内容输入到目标文件中;没有就会将新建一个文件

4bd241b2a7234b3590d53e155c344e11.png

 ✨✨默认时直接就是写入屏幕文件,如果用到了重定向就将其写入了指定文件✔️✔️✔️
cf0cf0107c0f416991b7aaabfd3a4aa4.jpeg        ❓❓在没有写时默认是对屏幕写入,那么我如果写了 >目标文件 就会写入指定得目标文件,没有就会新建,那么我是不是可以用来创建一个文件呢❓❓

 牛逼!!!确实就是这样,我们以后直接用它来建普通文件

a7afe636995e4cc28cd39e543122eb3c.png

 fa1adca12e69480e8eb386a4f44e34f9.jpeg死老六,还有招没有使出来呢!!!

129c16b2153a4ebba84fa04f344c7a11.png

 💡💡总结

>目标文件 
①创建一个新文件
②清空一个文件

0x02追加重定向:>>

命令 >>目标文件

c811f90d5483480a886f557debedabd1.jpeg和输出重定向的区别就是不会覆盖原有的内容,也可以用来创建普通文件

0x03输入重定向:<

命令 < 文件

 将文件的内容输入到cat中,通过cat将内容输出

 826c0d790a56450ebaf1e68cd0962985.png

0x04补充:

6b9a34c0f0fa4e1d8abeed9d82164a5d.jpeg上面提过,Linux一切接文件!!那么我们的终端本质就是一个文件

是一个叫做 /dev/pts/xx文件。

c5eb9e3dc6f24946aa053e05208a06bd.png我们现在用同一个云服务器登陆不同账号,会有如下信息:

e7702230102d468e97066aef6ed5be22.png

 可以通过tty指令查看本用户的终端文件❗

💡💡我们在这边通过输出重定向,可以将我们想打印的字符串写入到隔壁用户的终端

4c1fdff10eec439086b3adeee30013c5.png

注意 :我们只有超级用户才能这么玩,普通用户没权限啊,用不了,这里我两个终端都是用的root用户,所以双方都可以实现这个操作,也就是互传!

⭕️我了个骚杠,还能这么玩❗(下面我用的是超级用户对普通用户实行的操作)

c84d9508ceb547b8a168d3de4b0aaad7.png

🤔🤔为了更好理解linux的一切是文件

afc958df553f41f8836ff14904a2cd53.pnga9dbadda94d94d93af3cbb680e6564cb.jpeg写了一个c程序,向文件输入【因为我不会怎么弄缩进,所以有点丑🐒】

a66f7f8e7e1a4e7b8aa015eb74793c12.png

⭕️在这里,我们打开隔壁终端文件,通过fscanf向该文件写入🉑然后在超级用户这边执行这个c程序,会发现成功在sw这个普通用户这里写入了🥘

 三、文件类型:

🐒文件类型多种多样

dca58b0b21b74354a38b98d26428f029.png

后面加深学习,先提高功力

四、mv指令:剪切/改名

✨语法:

mv 选项 源文件 目标文件(必须存在)

✨功能:将源文件剪切到目标文件 或者 将源文件改名成目标文件

✨常用选项:

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖

 0x00:剪切:

✔️和Windows差不多,就是将该文件移动走,一模一样的行为,相同会发生覆盖

c734c531941242b19d0d0536ad37ca5e.png

0x01改名(重命名):

🐒🐒就是看目标目录是否存在,不存在的话,认为目标文件是新名字(改名)14320a335a9147ab813a1ed39f964ce3.jpeg

1652cf53a724475e8f99a93969c1d470.png

五、cat指令:

✨语法:

cat 选项 查看的文件

✨功能:查看目标文件的内容(适用于查短文件)。

✨常用选项:

-b : 对非空输出行编号
-n : 对输出的所有行编号
-s : 不输出多行空行

很好理解4b1c15937bf44a73ab44eb04567ce3be.jpeg不多做展示了

六、tac指令(cat反过来了):

 ✨语法:

tac 查看的文件

✨功能:反向查看目标文件的内容(适用于查短文件)。

✨常用:

主要用于 | 管道。

✔️✔️直接反着给你看

62ee6b7841554b24a3bc8825835689b1.png

七、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慢很多,因为它是广度优先遍历去查找的,在根目录中找,根目录中有很多文件的,要查的实在太多了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值