
🎬 博主名称:键盘敲碎了雾霭
🔥 个人专栏: 《C语言》《数据结构》 《C++》
《Matlab》
《Python》
《Linux》
⛺️指尖敲代码,雾霭皆可破

文章目录
- 一、指令
-
- 1.1 回显字符串
- 1.2 重定向
- 1.3 cat
- 1.4 一切皆文件的思想
- 1.5 文件的类型
- 1.6 mv
- 1.7 tac
- 1.8 以日志为例
- 二、更多指令
-
- 2.1 date
- 2.2 查找命令对比
- 2.3 grep
- 文章结语
一、指令
1.1 回显字符串
echo:把后续内容当作字符串打印出来 cat:显示指定文件里面的内容 
1.2 重定向
在Linux当中,一切皆文件(文件包括自己创建的文件、键盘、显示器等) 程序在启动时默认打开三个文件(stdin、stdout、stderr)
- 输出重定向 比如默认echo默认写入到了显示器文件里,而>可以写到指定的普通文件

如果>后面后续文件不存在,新建之,存在则先清空,再写入 所以后面想新建普通文件,或者清空文件,都可以用>
- 追加重定向 >>

1.3 cat
默认从键盘文件读内容,然后反向的写到显示器文件里
也可以从指定的文件里面读
还有-n选项 对输出的所有行编号 
1.4 一切皆文件的思想
终端的本质在linux系统里就是一个文件/devV/pts/XX,当你执行命令时,默认会打开这个终端文件,由于重定向可以向文件写入,那也可以向设备文件写入,当你登入设备时,系统默认会新建一个叫0/1/2的设备文件,指令只需要向终端对应的设备文件去写,把执行结果打印到显示器上 
echo 'hello Linux' > /dev/pts/2:代表向第二台机器进行写入,指令也同样可以写到不同的文件里ls > /dev/pts/2
- 也可以自己写C/C++程序对文件操作 > redir.c nano redir.c输入代码
gcc redir.c -o redir ./redir 在另一个机器就会显示 
1.5 文件的类型
在Linux上不看后缀,看输入ll的第一个字母 
- 普遍文件 文本,可执行,库,图片,视频(系统不关心后缀(当成文件名的一部分),不代表工具(gcc)不关心!)
- 字符文件

- 块设备文件
*链接文件 可以通过ls /usr/bin -l看到 
- 管道文件

1.6 mv
- 剪切

- 重命名 与前面剪切如何区分
如果最后一个不是目录或不存在,就是命名(对文件也是一样,如果存在会把一整个递归剪切过去) 
1.7 tac
查看日志cat /var/log/syslog,如果想要看第一个操作的人是谁,可以反向打印
1.8 以日志为例
less:与more相比更推荐less,可以上下翻,可以查找
- less选项:
- -i忽略搜索时的大小写
- -N显示每行的行号
- /字符串:向下搜索“字符串”的功能
- ?字符串:向上搜索“字符串”的功能
- n:重复前一个搜索(与/或?有关)
- N:反向重复前一个搜索(与/或?有关)
- q:quit
- head与tail
head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行(tail规则也是一样)。 head /var/log/syslog 还可以显示几行 head -2 /var/log/syslog head -3 /var/log/syslog 同理tail一样 如果想从一个文件拿中间文件(比如拿500-510行的内容) 方法一
这种需要建立临时文件 head -510 log.txt >tmp.txt tail -10 tmp.txt 方法二 head -510 log.txt | tail -10 ,|称为管道,可以把它当作文件,把前一个命令结果往管道里面写,后一个命令往管道里面读,如果还想逆序打印,head -510 log.txt | tail -10 | tac,如果先打印出来,cat log.txt | head -510 | tail -10 | tac,想统计多少行,则wc -l
二、更多指令
2.1 date

在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下(有大小写之分)
%H:小时 %M:分钟 %S:秒 %X:相当于%H:%M:%S %d:日 %m:月份 %Y:完整年份 %F:相当于%Y-%m-%d

时间戳
时间->时间戳:date+%s 
时间戳->时间:date-d@1508749502 
时间戳可以转化为普通时间,可以帮用户进行区间查找
Unix时间戳(英文为Unixepoch,Unix time, POSIXtime或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒
2.2 查找命令对比
- which:which查找命令,指定的目录下(/usr/bin),去查找指定的命令
- whereis man:在系统指定的目录下去查

- find:可用于查找文件(根据文件名)
用法:find pathname -options,用于在文件树中查找文件,并作出相应的处理(可能访问磁盘),选项:-name

2.3 grep
行文本过滤工具,会把保含关键字的行保留下来进行筛选
- 场景一:日志 cat var/log/syslog | grep "system" grep "systemd" /var/log/syslog | tail -10
- 场景二:进程 新建文件:nano myprogress.c 打开文件nano myprogress.c输入以下代码
#include<stdio.h>
#include<unistd.h>
int main()
{
while(1)
{
sleep(1);
}
return 0;
}
编译gcc myprogress.c -o myprogress 放后台执行./myprogress & grep用来查找进程ps ajx | grep "myprogress"

- 查找文本
选项 先用这段指令建立大文件(hello 1——hello 2)
cnt=0; while [ $cnt -le 100 ]; do echo "hello $cnt"; let cnt++; done > log.txt
- -n:显示在原本文件的行号

- -v:相反的,成功匹配的那一行去掉
- -i:忽略大小写,都可以匹配

还可以混合使用 -vi:忽略大小写匹配到的全都不要
文章结语
感谢你读到这里~我是「键盘敲碎了雾霭」,愿这篇文字帮你敲开了技术里的小迷雾 💻
如果内容对你有一点点帮助,不妨给个暖心三连吧👇 👍 点赞 | ❤️ 收藏 | ⭐ 关注 (听说三连的小伙伴,代码一次编译过,bug绕着走~)
你的支持,就是我继续敲碎技术雾霭的最大动力 🚀
🐶 小彩蛋:
/^ ^\\
/ 0 0 \\
V\\ Y /V
/ – \\
/ |
V__) ||
摸一摸毛茸茸的小狗,赶走所有疲惫和bug~我们下篇见 ✨






