目录
文件命名规则:
Ⅰ、不能用/来当文件名,/是用来做根的,也是用来做路径分隔符
Ⅱ、文件名不能超过255个字符
Ⅲ、区分大小写file File FILE
Ⅳ、目录也是文件,在同一路径下,两个不同类型文件不能同名
创建链接文件
创建目录文件:mkdir [-p] [/路径]/目录名
[root@localhost ~]# mkdir /test
就已经在根目录下创建test目录了了
[root@localhost ~]# cd /
[root@localhost /]# ll
drwxr-xr-x. 2 root root 6 10月 4 15:27 test
创建普通文件:touch
[root@localhost /]# cd test
[root@localhost test]# ll
总用量 0
[root@localhost test]# touch qiu
[root@localhost test]# ll
总用量 0
-rw-r--r--. 1 root root 0 10月 4 15:30 qiu
创建链接文件:ln
创建硬链接:ln 原文件名 硬链接文件名
[root@localhost test]# ln qiu qiu.hard
[root@localhost test]# ll
总用量 0
-rw-r--r--. 2 root root 0 10月 4 15:30 qiu
-rw-r--r--. 2 root root 0 10月 4 15:30 qiu.hard
【硬链接次数变2了】
创建软链接:ln -s 原文件名 软链接文件名
[root@localhost test]# ln -s qiu qiu.soft
[root@localhost test]# ll
总用量 0
-rw-r--r--. 2 root root 0 10月 4 15:30 qiu
-rw-r--r--. 2 root root 0 10月 4 15:30 qiu.hard
lrwxrwxrwx. 1 root root 3 10月 4 15:36 qiu.soft -> qiu
【秋之探索】:ls出来的那个(total 0)总用量 0是啥子意思?答:列出的所有文件使用的总的块(block)数。
【再来一点】每一块多大我搜了下好像是可以设置的
创建好以后可以顺便看一下他们的关系
[root@localhost test]# ll -i
总用量 0
19188998 -rw-r--r--. 2 root root 0 10月 4 15:30 qiu
19188998 -rw-r--r--. 2 root root 0 10月 4 15:30 qiu.hard
19189000 lrwxrwxrwx. 1 root root 3 10月 4 15:36 qiu.soft -> qiu
第一列那个数字就是之前那个硬链接软链接关系;数字代表inode索引节点编号,相当于人的身份证、家庭住址,全国唯一。系统读取文件时首先通过文件名找到inode号码,然后才能读取到文件内容。
创建目录文件
创建目录文件:
[root@localhost test]# mkdir -p /test/test2/test1
[root@localhost test]# tree /test【树的形式列出文件】
/test
├── qiu
├── qiu.hard
├── qiu.soft -> qiu
└── test2
└── test1
2 directories, 3 files
一次性创建多个目录文件在一个目录下
例如在test2下再同时创建test3与test4
×错误示范1:
mkdir /test/test2/"test3,test4"
这个搞出来只是创建了个名字长的文件夹,并不是两个
×错误示范2:
mkdir /test/test2{test3,test4}
这个错在test2后没跟/,最后的结果是在test下创建了test2test3和test2test4这俩目录
正确示范✔:
mkdir /test/test2/{test3,test4}
或者去test2目录下直接 mkdir test3 test4
创建普通文件
创建普通文件:touch
[root@localhost /]# cd test
[root@localhost test]# ll
总用量 0
[root@localhost test]# touch qiu
[root@localhost test]# ll
总用量 0
-rw-r--r--. 1 root root 0 10月 4 15:30 qiu
创建多个普通文件:
touch {1..10 }【注意是两个点嗷,要是中间是逗号,就只有文件1和文件10了】
touch a{1..10} 创建a1,a2……
删除文件
删除①:
[root@localhost test]# rm aaa
rm:是否删除普通空文件 'aaa'?y
删除②:
[root@localhost test]# rm -f bbb【这个直接不问就开删,工作置换器】
删除③:
[root@localhost test]# rm aaa
rm: 无法删除'aaa': 是一个目录【删除目录需要递归,-r (recursive)】
[root@localhost test]# rm -r aaa
[root@localhost test]# rm -rf aaa
修改文件
echo 内容> 文件
touch a
查看文件详情:stat a
这个是中文版
英文版三个时间是:
- atime:即access time,查看了一下文件内容(cat),文件的atime时间会更新。
- mtime:即modify time,文件内容被改变了,mtime会更新
- ctime:即change time,元数据(文件的属性,例如大小文件名等)被改变,ctime会更新
数据流和重定向
数据流
- 标准输入(standard input,简称stdin):默认情况下,标准输入是从键盘获取的输入。
- 标准输出(standard output,简称stdout):默认情况下,命令执行所回传正确的信息会输出到屏幕上。
- 标准错误输出(standard error output,简称stderr):默认情况下,标准错误输出可理解为命令执行失败后,所回传的错误信息会输出到屏幕上。
stdin | 0 |
stdout | 1 |
stderr | 2 |
重定向操作符
- 输出重定向操作符:>、>>
例如 echo 123>a (如果没有a文件会创建a)、date >>a
>:覆盖 >>:追加
- 输入重定向操作符:<、<<
输出重定向案例
错误输出重定向:
ls /home/ /aaaaaaaa >list.txt
ls:无法访问/aaaaaaa:没有那个文件或目录
ls /home/ /aaaaaaa >list.txt 2>error.txt【这里正确的和错误的分放了】
正确的和错误的都放到一个文件里:
ls /home/ /aaaaaaa >list.txt 2 >list.txt
或者ls /home/ /aaaaaaa &>list.txt
输入重定向案例
标准输入重定向:<或者0< 、0<<或<<
案例1:从文件读取数据作为cat命令的输入
[root@localhost ~]# cat <a
案例2:
<<不表示追加,而是表示输入结束的意思,即作为一个结束符
[root@localhost ~]# cat > text << end
> abc
> qqq
> end
[root@localhost ~]# cat text
abc
qqq【输入的时候内容没有结束符】
将标准输出重定向到文件
ehco命令用于在终端设备上输出字符串或变量提取后的值,语法格式为
echo [字符串] [$变量]
[root@localhost ~]# csa=1
[root@localhost ~]# echo $csa
1
tee命令读取数据输出到文件
①管道符|:用于两个命令或者多个命令相连接,将管道符左边命令的输出作为管道符右边命令的输入
②tee文件:读取标准输入的数据,并将其内容输出到文件的同时输出到屏幕(即想把输出保存到文件中,又想在屏幕上看到内容)
tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时输出到文件。
语法: tee [-ai] [--help] [--version] [文件……]
参数:
- -a或--append,附加在现有文件的后面,而非覆盖它
- -i或--ignore-interrupts 忽略中断信号
- --help 在线帮助
Q1 、如何在linux上使用这个命令?
[command命令] | tee [file]
[root@localhost ~]# date | tee text【如果没有text文件会自己创一个】
2022年 10月 05日 星期三 16:55:15 CST
[root@localhost ~]# cat text
2022年 10月 05日 星期三 16:55:15 CST
vi/vim编辑器
vim三种模式
命令模式,末行模式,编辑模式
vim是vi的进阶版,有对代码的着色功能,对代码纠错
使用vi/vim编辑文件
#在每次运行vim编辑器时,默认进命令模式
[root@localhost ~]#vim 文件
a,i,s,o是键盘这四个键随便按一个就行
前面那个数字,要在末行模式下敲:set nu
命令模式功能与按键
功能 | 按键 |
光标按单个字符移动 | ↑,↓,←,→ |
光标按照单词向后跳转 | w |
光标按照单词向前跳转 | b |
光标跳转至行首 | ^(ctrl 6 英语键盘) |
光标跳转至行尾 | $(ctrl 4 英语键盘) |
文档首行第一个字符 | gg |
文档最后一行第一个字符 | G |
跳转到指定行 | 行号gg 或者 行号G |
删除光标所在行 | dd |
删除除从光标处开始的n行 | ndd |
删除光标前至行首字符 | d^ |
删除光标及之后的所有字符 | d$ |
复制光标所在行 | yy |
复制从光标处开始的n行 | nyy |
将缓冲区的内容粘贴到光标所在行的下一行 | p小写 |
将缓冲区的内容粘贴到光标所在行的上一行 | P大写 |
撒销操作 | u |
编辑模式功能与按键
功能 | 按键 |
在光标所在行行首第一个非空字符前插入 | i |
在光标后插入 | I |
在光标所在行末尾插入 | a |
在光标所在行上一行插入 | O大写 |
在光标所在行下一行插入 | o小写 |
删除光标所在字符并进入插入模式 | s小写 |
删除当前行并进入插入模式 | S大写 |
末行模式功能与按键
功能 | 按键 |
从上而下在文件中直找字符串"word"(可按n键定位到下一个匹配的被查找字符串) | /word |
将当前行中查找到的第一个字符"old"替换为"new" | :s /old/new |
将当前行中直找到的所有字符"old"替换为"new" | :s /old/new/g |
在行号"n1,n2"范围内替换所有的字符串"old"为new" | :n1,n2s/old/new/g |
将整个文件内的字符串"old"替换为"new" | :%s/old/new/g |
退出编辑器,未对文件做出编辑操作才可退出 | :q |
不保存文档内容,强制退出编辑器 | :q! |
保存文件 | :w |
将文件另存为/dir/file | :w/dir/file |
保存文件内容并退出编辑器 | :wq或者ZZ |
强制保存并退出 | :wq! |
其他操作 | |
在当前文件中读入其他文件内容 | :r/dir/file |
直找含有"word"的行并删除 | :g/word/d |
显示行号 | :set nu |
关闭行号显示 | :set nonu |
到除n1-n2行内容 | :n1,n2 d |
复制n1-n2行到第n行后面 | :n1,n2 co n |
文件操作
文件的复制:cp a ./dir【将a文件改名dir复制到当前目录下】
文件的移动:mv a ./dir
【注意在同一目录下不能有相同名字文件】