从命令行管理文件
- 不能使用/来当文件名,
/
是用来做根的,也是用来做路径分隔符的 - 文件名不能超过255个字符
- 区分大小写
file
File
FILE
fIle
- 目录也是文件,在同一路径下,两个不同类型文件不能同名
创建链接文件
- 软连接:类似于Windows的快捷方式。软链接有自己的node,是linux特殊文件的一种,作为一个文件,
它的数据是它所连接的文件的路径。
创建软链接:ln -s 原文件 目标文件
#此操作在根目录下操作
- 硬链接:引用的是文件在文件系统中的物理索引(也称为inode)。当移动或者删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在件结构中的位置。
创建硬链接:ln 原文件 目标文件
#此操作在根目录下操作
再次查看根目录下文件:
目录操作命令
创建目录
创建目录(make directory)
语法:mkdir [-p] [/路径/]目录名
-p 可快速创建出目录结构中指定的每个目录,对于已存在的目录不会被覆盖
-v 显示创建目录的详细过程
统计目录及文件的空间占用情况——du命令
功能:查看某个目录中的各级子目录所占用的磁盘空间数。
命令格式: du [选项] [目录名]
选项 | 功能 |
---|---|
-a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录 |
-s | 只统计每个文件所占用空间总的大小,而不是统计每个子目录、文件的大小 |
-h | 以K,M,G为单位显示磁盘使用情况,以提高信息的可读性 |
删除目录
语法格式:rm -r [-f] 目录文件名
创建,删除普通文件
创建普通文件
创建普通文件: touch [OPTION]... FILE...
touch
的两种用法:
1、如果文件已存在,更新文件的三个时间, stat
可以查看文件的详细信息
atime,即access time,查看了一下文件内容(cat),文件的atime时间会更新
mtime,即modify time,文件内容被改变了,ctime会更新
ctime,即change time,元数据【文件的属性,例如大小、文件名等等】被改变,mtime会更新
2、如果文件不存在,则表示创建文件创建多个普通文件:
方法1: touch 文件名1 文件名2 文件名3
方法2: touch {文件名1,文件名2,文件名}
删除普通文件
删除普通文件: rm [-f] 文件名
数据流和重定向
数据流
- 标准输入(standard input,简称stdin):默认情况下,标准输入指从键盘获取的输入
- 标准输出(standard output,简称stdout):默认情况下,命令执行所回传正确的信息会输出到屏幕上
- 标准错误输出(standard error output,简称stderr):默认情况下,标准错误输出可理解为命令执行失败后,所回传的错误信息会输出到屏幕上
不管正确或错误的数据都是默认输出到屏幕上,所以屏幕是混乱的。所以就需要用数据流重定向将这两
条数据分开。数据流重定向可以将标准输出和标准错误输出分别传送到其他的文件或设备去,而分别传
送所用的特殊字符如下所示:
- 标准输入(stdin):代码为0
- 标准输出(stdout):代码为1
- 标准错误输出(stderr):代码为2
重定向操作符
重定向操作符可以将命令输入和输出数据流从默认设备重定向到其他位置。重定向操作符本身不是命
令,而是命令中附加的可改变命令的输入和输出对象的特殊符号。
- 输出重定向操作符:
> 、 >>
- 输入重定向操作符:
< 、 <<
使用形式 | 功能 |
---|---|
命令 >文件 或 命令 1>文件 | 将命令执行后的标准输出信息不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件 |
命令 2>文件 | 将命令执行后所产生的错误信息不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件 |
命令2>/dev/null | 将命令执行后所产生的错误信息不在默认的屏幕上显示,而是写入到空设备文件中,即将输出的错误信息丢弃掉 |
命令 &>文件 或 命令 >&文件 | 将命令执行后的正确输出信息和错误信息不在默认的屏幕上显示,而是以覆盖的方式写入到指定文件中,若指定的文件不存在,则自动创建该文件 |
命令 >>文件 | 将命令执行后的正确输出信息以追加的方式写入到指定的文件中,不覆盖原文件内容,若指定的文件不存在,则自动创建该文件 |
命令 <文件 | 使命令从指定的文件中读取数据作为输入 |
命令 <<结束标识字符串 | 在命令行读取数据作为输入,直到遇到指定的结束标识字符串 |
输出重定向
- 标准输出重定向: 1> 或 > 、 1>> 或 >>
- 标准错误输出重定向: 2> 、 2>>
案例1:输出重定向(覆盖)
[root@sever ~]# date 1> date.txt
案例2:输出重定向(追加)
[root@sever ~]# date >> date.txt
案例3:错误输出重定向
[root@sever ~]# ls /home/ /aaaaaaaaa >list.txt
ls: 无法访问/aaaaaaaaa: 没有那个文件或目录
[root@server ~]# ls /home/ /aaaaaaaaa >list.txt 2>error.txt #重定向到不同的
位置
案例4: 正确和错误都输入到相同位置
[root@localhost ~]# ls /home/ /aaaaaaaaa &>list.txt
#混合输出
案例5: 正确和错误都输入到相同位置
[root@localhost ~]# ls /home/ /aaaaaaaaa >list.txt 2>&1
#重定向到相同的位置
输入重定向
- 标准输入重定向: < 或 0< 、 0<< 或 <<
案例1:从文件读取数据作为cat命令的输入
[root@master ~]# echo test > file
[root@master ~]# cat < file
test
案例2:标准输入重定向 << 并不表示追加,而是表示输入结束的意思,即作为一个结束
[root@localhost ~]# cat > file3 << end
\> hello
\> end
# 利用<<右侧的控制字符,我们可以终止输入,不必输入ctrl+d来结束。
[root@localhost ~]# cat file3
hello
拓展:使用文件描述符重定向的复杂用法
使用文件描述符的重定向都使用了&符号:
- cmd >&n 把输出送到文件描述符n
- cmd m>&n 把输出到文件符m的信息重定向到文件描述符n
- cmd >&- 关闭标准输出
- cmd <&n 输入来自文件描述符n
- cmd m<&n m来自文件描述符n
- cmd <&- 关闭标准输入
- cmd <&n- 移动输入文件描述符n而非复制它
- cmd >&n- 移动输出文件描述符 n而非复