文章目录
- 一、指令
- 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.cnano 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/sysloghead -3 /var/log/syslog
同理tail一样
如果想从一个文件拿中间文件(比如拿500-510行的内容)
方法一
这种需要建立临时文件head -510 log.txt >tmp.txttail -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>intmain(){while(1){sleep(1);}return0;}编译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~我们下篇见 ✨