一、文件类型及属性
1.文件属性
drwxr-xr-x. 2 root root 232 Sep 13 17:31 anaconda
#详解
d #文件类型 (-/d/b/c/l/s/p)七种
rwxr-xr-x #文件权限(U/G/O三大类,每类分r/w/x三种)共九位
. #开启了selinux功能的Linux系统会带此点,表示该文件带有“selinux安全上下文”
2 #硬链接个数
root #属主
root #属组
232 #文件或目录大小
sep 13 17:31 #最近修改时间(月/日/时分)
anaconda #文件或目录名
#权限会在之后篇章详细描述
2.文件的七种类型
- 普通文件[文本文件(ASCII),二进制文件(binary),数据格式的文件(data),压缩文件,图片......]
d 目录文件(一般默认蓝色)
b 设备文件 block device 设备文件,如硬盘,U盘
c 设备文件 字符设备文件,比如我们的终端tty1,打印机
l symbolic link 即符号链接文件,又称软链接文件 (浅蓝色)
s socket 即套接字文件,用于实现两个进程进行通信
p 管道文件 FIFOfirst-in-first-out(先进先出) 它主要的目的是,解决多个程序同时存取一个文件所造成的错误。
二、 WINDOWS/LINUX 对比
Windows: 以多根的方式组织文件 C:\ D:\ E:\
Linux: 以单根的方式组织文件"/"
Windows: 以多根的方式组织文件 C:\ D:\ E:\
关于Linux文件目录,在我的'Linux 基础命令及常用选项/参数/目录(基础设置篇)'中有详细描述
三、查看文件信息命令
命令用法查询:
①<命令> --help
②man <命令>
1.ls命令及常见参数
ls #查看当前目录下的文件
ls 文件 #单独列出文件
ls 目录 #查看指定目录下的文件
ls -l (可使用别名:ll)#长格式显示(显示文件的详细信息)
ls -lh # 人性化显示 (显示文件大小)
ls -a #all 显示所有文件 (包括隐藏文件)
ls -A 显示所有的文件,包括隐藏文件,但不包括表示当前目录.和上级目录..这两个文件
ll -d /home/ #查看指定目录详细信息
ll -t #按最新的修改时间排序
ls -r #倒序排列
ls file* #以file开头的所有文件。*通配符,表示所有字符(隐藏文件除外)
ls *.txt #任意开头以.txt结尾的所有文件
2.stat命令
用于显示文件的状态信息
语法:
stat <选项> <参数>
[root@mysql-01 mysql]# stat proc.frm File: ‘proc.frm’ Size: 9996 Blocks: 24 IO Block: 4096 regular file Device: 803h/2051d Inode: 1419489 Links: 1 Access: (0640/-rw-r-----) Uid: ( 27/ mysql) Gid: ( 27/ mysql) Access: 2023-10-07 16:26:36.188737770 +0800 Modify: 2023-10-07 16:26:36.188737770 +0800 Change: 2023-10-07 16:26:45.612876744 +0800 Birth: -
File:文件名
索引节点编号(Inode): 1419489
文件大小(size): 文件大小是9996个字节(Byte)
Blocks:在硬盘驱动器上为文件保留的数据块的数量
IO Block:文件系统块大小
regular file:文件类型(普通文件、目录、文件系统)
Device:文件所在的设备
Access、UID、GID:文件权限、用户和组的所有者
Context:SELinux 上下文
Access、Modify、Change、Birth:文件被访问、修改、更改状态以及创建时的时间戳
文件类型 :文件类型是’-',表示这是一个普通文件
文件权限:rw-r–--- 表示文件可读、可写,文件属主可读可写,文件所归属的用户组可读,其他用户没有权限
硬链接个数: 表示 proc.frm 这个文件没有其他的硬链接,因为连接数是1,就是他本身
文件属主: Uid(mysql)表示这个文件所属的用户,这里的意思是文件 proc.frm 被系统用户mysql拥有
文件属组: 表示这个文件所属的用户组,这里表示 proc.frm 文件属于 mysql用户组
文件大小(size): 文件大小是9996个字节(Byte)
3.file命令
用来探测给定文件的类型
语法:
file <选项> <参数>
-b:列出辨识结果时,不显示文件名称 -c:详细显示指令执行过程,便于排错或分析程序执行的情形 -f<名称文件>:指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称 -L:直接显示符号连接所指向的文件类别 -m<魔法数字文件>:指定魔法数字文件 -v:显示版本信息 -z:尝试去解读压缩文件的内容
4.du命令
显示每个文件和目录的磁盘使用空间
语法:
du <选项> <参数>
-h, --human-readable 以K,M,G为单位,提高信息的可读性 -s, --summarize 仅显示总计,只列出最后加总的值
5.find命令
在指定目录下查找文件
语法:
find <选项> <参数>
- -name 按文件名查找
- -size 按文件大小查找
- -type 按文件类型查找
- -perm 按文件权限查找
- 按文件时间
- find / -mtime +5 在根下按时间查找,修改时间5天之前
- find / -atime +1 在根下按时间查找,访问时间1天之前
- find / -mtime -5 在根下按时间查找,修改时间5天之内
6.tree命令
树状图列出目录的内容
语法:
tree 选项 参数
四、查看文件内容命令
1.cat命令
显示文件内容
#语法: cat [OPTION]... [FILE]...
-n 显示行号 -A 包括控制字符(换行符/制表符)
2.more命令
显示文件内容,每次显示一屏
语法:
more <选项> <文件\参数>
- 按
Space
键:显示文本的下一屏内容- 按
Enter
键:只显示文本的下一行内容- 按斜线符
|
:接着输入一个模式,可以在文本中寻找下一个相匹配的模式- 按H键:显示帮助屏,该屏上有相关的帮助信息
- 按B键:显示上一屏内容
- 按Q键:退出more命令
3. less命令
分屏上下翻页浏览文件内容
语法;
less <选项> <参数>
空格键: 滚动一页 回车键: 滚动一行
4.head命令
显示文件的开头部分
在未指定行数时默认显示前10行
语法:
head <选项> <参数>
-n, --lines=[-]NUM 显示前NUM行而不是默认的10行;如果NUM前有"-",那么会打印除了文件末尾的NUM行以外的其他行
5.tail命令
在屏幕上显示指定文件的末尾若干行
默认在屏幕上显示指定文件的末尾10行
语法:
tail <选项> <参数>
-n, --line=NUM 输出文件的尾部NUM(NUM位数字)行内容 -f 动态查看文件的尾部
6.grep命令
强大的文本搜索工具
语法:
grep <选项> <所过滤的值> <目录\路径>
grep 'root' /etc/passwd #过滤文件中带有root的内容
grep '^root' /etc/passwd #过滤以root开头的行
grep 'bash$' /etc/passwd #过滤以bash结尾的行
不止过滤文件内容
五、文件管理命令
1.pwd命令
显示当前工作目录的绝对路径
语法:
pwd <选项>
-L, --logical 打印环境变量"$PWD"的值,可能为符号链接 -P, --physical (默认值)打印当前工作目录的物理位置
2.cd命令
切换用户当前工作目录
语法:
cd <选项> <参数\路径>
.或./ 当前路径 回到上一级目录等同于相对路径 cd .. 直接回到家目录 cd 或者 cd ~ 回到原来目录 cd - cd /home/alice 切换目录=绝对路径
3.touch命令
touch命令 有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件
语法:
touch <选项> <参数>
touch创建文件
- touch file1.txt #相对路径创建file.txt
- touch /home/file10.txt #绝对路径创建file10.txt
- touch /home/{zhuzhu,gougou} #{}集合批量创建
- touch /home/file{1..20} #批量创建文件file1-file20
- touch file-`date +%F`.txt #按时间创建文件
4.mkdir命令
mkdir命令 用来创建目录。该命令创建由dirname命名的目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。在创建目录时,应保证新建的目录与它所在目录下的文件没有重名
语法:
mkdir <选项> <参数>
参数:目录,指定要创建的目录列表,多个目录之间用空格隔开
创建连级目录,一级一级的创建 # mkdir -p 按时间创建目录 # touch file-`date +%F`.txt
5.rm命令
用于删除给定的文件和目录
语法:
rm <选项> <参数>
-f:强制删除文件或目录 -i:删除已有文件或目录之前先询问用户 -r或-R:递归处理,将指定目录下的所有文件与子目录一并处理
6.cp命令
cp命令 用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误
语法:
cp <选项> <参数>
参数:源文件 目标路径
-f 强行复制文件或目录,不论目标文件或目录是否已存在 \cp 强制覆盖 -R/r 递归处理,将指定目录下的所有文件与子目录一并处理
7.mv命令
mv命令 用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中
语法:
mv <选项> <参数>
参数:源文件 目标路径
mv /root/file1 /tmp/ #移动file1文件到tmp下 mv /tmp/file1 /tmp/file2 #将file1文件改名为file2
8.sort命令
对文本文件中所有行进行排序
语法:
sort <选项> <参数>
sort -t ":" -k3 -rn /etc/passwd 以:分隔,将第三列按字数升序 sort 排序 -t 指定分隔符 -k 指定列 -n 按数值 -r降序
六、文本(文件内容)编辑
1.vi | vim 命令
vi命令 是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多增强功能。
vi编辑器支持编辑模式和命令模式,编辑模式下可以完成文本的编辑功能,命令模式下可以完成对文件的操作命令,要正确使用vi编辑器就必须熟练掌握着两种模式的切换。默认情况下,打开vi编辑器后自动进入命令模式。从编辑模式切换到命令模式使用“esc”键,从命令模式切换到编辑模式使用“A”、“a”、“O”、“o”、“I”、“i”键。
vi编辑器提供了丰富的内置命令,有些内置命令使用键盘组合键即可完成,有些内置命令则需要以冒号“:”开头输入
vim详细用法讲解请参考 'Linux 快捷键大全(终端快捷键、gnome快捷键、窗口操作快捷键、vim编辑器快捷键和浏览器快捷键)'我的这篇文章
2.sed命令
非交互式文件编辑器
语法:
sort <选项> <参数>
sed -i 's/^/no/' 文件名 在文件内容每行行首追加no sed -i 's/$/yes/' 文件名 在文件内容每行行尾追加yes
3.echo命令
echo命令 用于在shell中打印shell变量的值,或者直接输出指定的字符串
语法:
echo <选项> <参数>
echo 内容 > 文件名 把之前内容覆盖 echo 内容 >> 文件名 在文件内容后年追加