如何理解文件:
文件本文件
- 在磁盘上创建,因为内存具有掉电易失性
- 如果创建了一个空文件,也会占有磁盘空间
- 文件=文件的内容(数据)+文件的属性(元数据)(属性也是数据)
- 故文件的实际占有内存大于标的内存(数据)
操作文件:
文件之间(普通文件 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