如何理解文件:
文件本文件
- 在磁盘上创建,因为内存具有掉电易失性
- 如果创建了一个空文件,也会占有磁盘空间
- 文件=文件的内容(数据)+文件的属性(元数据)(属性也是数据)
- 故文件的实际占有内存大于标的内存(数据)
操作文件:
文件之间(普通文件 vs 目录):
文件的简单命令:
| touch 文件名 |
创建一个普通文件 若文件已存在,会更新文件的修改时间 |
| stat 文件名 |
显示文件详细信息, 包括修改时间属性等 |
| mkdir 文件名 |
创建一个空目录 |
| mkdir-p |
创建一串路径 |
| rmdir 目录名 |
只能删除空目录(若目录非空,则无法删除) |
| rm 文件名 |
默认删除普通文件,但不能删除目录 |
| rm -r 文件名 |
递归删除,删除这整个目录 |
| rm -i |
询问是否删除 |
| rm -f 文件名 |
强行删除,不会再询问是否删除(f:force) |
| rm -rf 文件名 |
递归强制删除指定的目录及其内部文件 |
| rm -rf / |
系统直接挂掉 |
| ls |
显示当前路径下的文件或文件或目录名称 |
| ls -l |
显文件或目录以及更详细的属性信息 |
ls -all(简写为-a) 也可以写为:ll |
列出目录下的所有文件,包括.开头的隐藏文件 |
ls 文件名 ls -l 文件名 ls -ld 文件名 |
1.只显示这一个文件 2.显示文件里面的内容 3.显示该文件本身的属性 |
| -d |
不进入目录,显示本身 |
| -r |
对目录反向排序 |
| -t |
以时间排序 |
| -R |
列出所有子目录下的文件(递归) |
|
|
| cd /你的文件名/ |
切换路径,进入某个目录 |
| . |
一个.当前目录 |
| .. |
两个..是上级目录 |
| cd . |
当前目录 |
| cd .. |
返回上一个目录 如果不断回退,会一直回退到根目录,无法再回退 |
| cd - |
回到之前最近一次所处的路径(可以在两个热点路径下来回切换) |
| 绝对路径: |
从根目录开始,查找某一个文件,具有唯一性 |
| 相对路径: |
不从根目录,根据当前位置,去查找某个目录下的某个文件 |
| tree |
以树形结构显示目录 |
| yum install -y tree |
安装tree |
| whoami |
查询当前是哪个用户正在使用系统 |
| cd ~ |
进入当前用户的目录 |
| /home/名字 |
叫做某用户的工作路径(家目录)特命 用户登录时,默认所处的路径 |
| man 命令 |
显示命令的用法,man是一个查看命令,系统调用,C接口的手册,手册是有编号的 |
| 安装man |
yum install man只能在root用户下安装 |
| man touch |
touch的用法 |
| man priintf |
printf的用法 |
| man 3 printf |
3号手册里printf的用法,若不带号,默认从1开始查,查到停止 |
| 1 |
shell命令 |
| 2 |
系统接口 |
| 3 |
C语言库 |
| 进入以后: |
按q退出 |
| cp src dst |
拷贝命令,把src文件拷贝到dst里面 |
| cp -r 文件 |
拷贝文件目录,命令和rm是一样的 |
| cat 文件名 |
打印文件的内容,如cat a.txt是打印a.txt里面的内容 |
| echo |
向显示器显示信息的命令,跟printf一样,但没有格式化,把所有内容都显示出来 |
| mv src dst |
移动命令,类似于剪切功能,同时还能对文件或目录进行重命名,这里不用带-r |
| 注意事项 |
mv移到一些目录会有权限问题 ,有-r和-f选项,和前面用法一样 |
写一个输出10000行字符串的命令行脚本:
cnt=0;
while [ $cnt -le 10000 ];
do echo "hello world" [$cnt];
let cnt++;
done > test.txt
查看大文本(日志):
| cat 选项 文件 |
查看目标文件的内容,但是cat是一次全输出,不适合查看大文本 |
| -b |
对非空输出行编号 |
| -n |
对输出的所有行编号 |
| -s |
不输出多行空行 |
| tac |
逆序输出 |
| more |
和cat一样一屏打满就不再打了 |
| -n |
n为指定的行,就可以查看指定行的内容 |
| / |
在more中输入/有搜索功能 |
| head -n 文件 |
查看文件头部的几行,n为指定的行,默认为10行 |
| tail |
查看尾部的几行 |
如何查看中间部分的内容:
- 临时文件
- 管道:
- 都是传输资源的
- 一个入口,一个出口
- 管道的命令行操作:
head -1010 test.txt | tail -10
- #这里|前的默认将输出结果打印到管道空间中,tail再去读取
- 组合用法:
head -1010 test | tail -10 | tac | head -3
时间相关的指令
| data |
显示时间 |
| data +%Y/%m/%d-%H:%M:%S |
格式化显示,这里面的格式可以随便调整 |
| data +%s |
时间戳,从1970年1.1凌晨0:00到现在所经过的秒数 |
| data +%Y/%m/%d-%H:%M:%S -d@时间戳 |
转化成我们认识的时间戳 |
| cal 年 |
看日历 |
| find -name |
查找命令,因为可能要访问磁盘,进而导致效率低下 |
| find pathname -options |
在文件树中查找文件 |
| which 指令 |
只能搜索命令,所使用的命令在哪个目录下 |
| whereis 名称 |
查找范围比which范围更大比find查找范围更小,作用好是只要包含关键字都找出来 |
| alias 新命令 = ‘原命令’ |
对命令进行重命名 |
| grep |
文本内容的行过滤工具,会匹配文本中的关键字,匹配上的进行行显示 |
| grep ‘a’ test.txt |
就会在test.txt中查找a来匹配,含a的全部显示出来 |
| -n |
输出行号 |
| -i |
忽略大小写 |
| -v |
反向选择,把没有关键字的显示出来 |
补充
- grep可以结合管道和其他命令一起使用,过滤关键内容
grep ‘a’ test.txt | wc -l #统计行数
| sort file.txt |
对文本内容进行排序(按照ascall码值) |
| uniq |
对文本相邻内容进行去重 |
组合使用
sort file.txt | uniq
先排序,后去重
压缩包
- zip
- 安装zip
yum install zip unzip
- 使用
zip -r my.zip
unzip my.zip -d /路径 #解压缩到指定目录,若不‘加-d 路径’,默认为当前目录
- 注:打包和压缩是两个概念,打包和压缩的目的是便于传输,同时压缩包不存在下载丢失问题,因为体积小,传输更高效
- tar
| tar -czf my.tar.gz file |
对文件打包并压缩 |
| tar -xzf my.tar.gz |
解包并解压 |
| -v |
把解包的过程也打印出来 |
| -tf |
不解压查看tar.gz里面的文件 |
| -C(大写C) |
解压到指定目录 |
| bc |
计算器 |
| echo “1+2+3” | bc |
管道 |
| uname -a |
显示系统信息 |
| uname -r |
查看内核版本(体系结构:cpu架构) |
几个热键
| Tab |
命令自动补齐 |
| ctrl C |
终止在前台的异常程序,比如死循环 |
| Ctrl r |
根据命令片段去搜索历史命令,左右即可选中 |
| Ctrl d |
退出当前用户 |
| \ |
可以用来回车接着输入命令 ,对命令进行续行(其实C语言也可以) |
补充几条指令
查看CPU
lscpu
查看内存情况
lsmem
查看磁盘结构
df -h
查看当前都有谁登录了Linux系统
who