Linux文件种类与扩展名
- 文件种类
- 普通文件: 一般进行访问类型的文件,第一个字符为[-]
- 纯文本文件(ASCII):内容属于可以直接读到的数据,可以执行cat命令(将一个文件内容读出来)
- 二进制文件(binary):系统认识且可执行的文件
- 数据格式文件(data):特定格式的文件,可用last读取
- 目录(directory):第一个属性为[d]
- 连接文件(link):类似Windows系统下的快捷方式,第一个属性为[l]
- 设备与设备文件(device):
- 与系统外设及存储等相关的一些文件,通常都集中在/dev目录,分为两种:
- 块(block)设备文件:一些存储数据,提供系统随机访问的接口设备,例如:硬盘,软盘,可以随机在硬盘的不同块读写,第一个属性为[d]
- 字符(character)设备文件:一些串行端口的接口设备,例如:键盘,鼠标等,特征是一次性读取,第一属性为[c]
- 套接字(sockets):数据接口文件,通常被用在网络上的数据连接。第一属性为[s],通常在/var/run
- 管道(FIFO, pipe):FIFO是一种特殊文件,主要目的在解决多个程序同时访问一个文件所造成的错误问题,第一属性[p]
- Linux文件扩展名
- *.sh: 脚本或批处理文件(scripts),因为批处理文件为使用Shell写成的,所以扩展名就编写成.sh
- *Z、*.tar、*.tar.gz、*.zip、*.tgz: 压缩文件
- *.html、*.php:网页相关文件
- Linux文件长度限制
- 单一文件或目录的最大容许文件名为255个字符
- 包含完整路径名称及目录(/)的完整文件名为4096个字符
Linux目录配置标准
可分享的(shareable) | 不可分享的(unshareable) | |
---|---|---|
不变的(static) | /usr(软件放置处) | /etc(配置文件) |
/opt(第三方软件) | /boot(开机与内核文件) | |
可变动的(variable) | /var/mail(用户邮件信箱) | /var/run(程序相关) |
/var/spool/news(新闻组) | /var/lock(程序相关) |
- 可分享的:可以分享给其他系统挂载使用的目录
- 不可分享的:自己机器上面运行的设备文件或者是与程序有关的socket文件等
- 不变的:有些数据是不会经常变动的,例如:函数库,文件说明文件,系统管理员所管理的主机服务配置文件
- 可变动的:经常改变的数据,例如登陆文件,新闻组等
-
/(root,根目录): 与开机系统有关
目录 应放置文件内容 /bin 单用户维护模式下还能够被操作的命令,可以被root与一般账户使用,主要有cat,chmod,chown,date,mv,mkdir,cp,bash等常用命令 /boot 放置开机会使用的文件,包括Linux内核文件以及开机菜单与开机所需配置文件 /dev 任何设备与接口设备都是以文件的形式存在于这个目录当中,比较重要的文件有/dev/null, /dev/zero, /dev/tty, /dev/lp*, /dev/hd*, /dev/sd*等 /etc 系统主要配置文件目录,比较重要文件有/etc/inittab, /etc/init.d, /etc/modprobe.conf, /etc/X11, /etc/fstab, /etc/sysconfig等,重要目录有: /etc/init.d/:所有服务的默认启动脚本;/etc/xinetd.d/:所谓的super daemon管理的各项服务的配置文件目录; /etc/X11:与X Windows有关的各种配置文件 /home 系统默认的用户主文件夹 /lib 开机时会用到的函数库 以及在/bin或/sbin下面的命令会调用的函数库 /media 放置可删除设备 /mnt 暂时挂载某些额外设备 /opt 第三方软件安置目录 /root 系统管理员的主文件夹 /sbin 开机过程所需要的命令,某些服务器软件程序,放置在/usr/sbin,本机自行安装的软件所产生的系统执行文件 放置在/usr/local/sbin /srv 一些网络服务启动之后,服务所需要取用的数据目录 /tmp 一般用户或者是正在执行的程序暂时放置文件的目录
/etc:配置文件
/bin:重要执行文件
/dev:所需要的设备文件
/lib:执行文件所需的函数库与内核所需的模块
/sbin:重要的系统执行文件
以上目录都不可与/根目录分开
-
/usr:与软件安装/执行有关
目 录 应放置文件内容 /usr/X11R6/ X window系统重要数据放置的目录 /usr/bin/ 绝大部分用户可以使用的命令目录 /usr/lib/ 包含各应用软件的函数库,目标文件,以及不被一般用户惯用的执行文件或脚本。 /usr/local/ 系统管理员在本机自行安装的软件 /usr/sbin 非系统正常运行所需要的系统命令 /usr/share/ 放置共享文件,常见子目录/usr/share/man,/usr/share/doc,/usr/share/zoneinfo /usr/src/ 一般源码 /var:与系统运作过程有关
目录 | 应放置文件内容 |
---|---|
/var/chache/ | 应用程序本身运行过程中会产生的一些暂存文件 |
/var/lib/ | 程序本身执行中使用到的数据文件 |
/var/lock | 设备锁 |
/var/log | 登陆文件放置的目录,重要文件如/var/log/messages, /var/log/wtmp |
/var/mail/ | 放置个人电子邮件信箱目录 |
/var/run/ | 某些程序或者是服务启动后,PID放置目录 |
/var/spool/ | 放置一些队列数据 |
cd 切换目录
cd [相对路径或绝对路径]
pwd 提示目前所在的目录
pwd [-P]
参数:
-P: 显示出当前的路径,而非使用连接(link)路径
mkdir 新建新目录
mkdir [-mp] 目录名称
参数:
-m: 配置文件案的权限,直接设置,不需要看默认权限
-p: 帮助你直接将所需要的目录(包含上层目录)递归创建起来
rmdir 删除“空”的目录
rmdir [-p] 目录名称
参数:
-p: 连同上层"空的"目录也一起删除
ls 查看文件与目录
ls [-aAdfFhilnrRSt] 目录名称
ls [--color={never,auto,always}] 目录名称
ls [--full-time] 目录名称
参数:
-a: 全部的文件,连同隐藏文件,一起列出
-A: 列出全部的文件(连同隐藏文件,但不包括.与..这两个目录)
-d: 仅列出目录本身,而不是列出目录内的文件数据
-f: 直接列出结果,而不是进行排序
-F: 根据文件、目录等信息给予附加数据结构,例如: *:代表可执行文件/:代表目录=:代表socket文件|:代表FIFO文件
-h: 将文件容量以人类较易读的方式列出来
-i: 列出inode号码
-l: 列出长数据串,包含文件的属性与权限等数据
-n: 列出UID与GID,而非用户与用户组的名称
-r: 将排序结果反向输出
-R: 连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来
-S: 以文件容量大小排序,而不是用文件名
-t: 依时间排序,而不是用文件名
--color=never: 不要依据文件特性给予颜色显示
--color=always: 显示颜色
--color=auto: 让系统自行依据设置来判断是否给予颜色
--full-time: 以完整时间模式(包含年、月、日、时、分)输出
--time=(atime, ctime): 输出访问时间或改变权限属性时间(ctime),而非内容更改时间
cp 复制文件或目录
cp [-adfilprsu] 源文件 目标文件
cp [options] source1 source2 source3....directory
参数:
-a: 相当于-pdr的意思
-d: 若源文件为连接文件的属性(link file),则复制连接文件属性而非文件本身。
-f: 为强制(force)的意思,若目标文件已经存在且无法开启,则删除后再尝试一次
-i: 若目标文件(destination)已经存在时,在覆盖时会先询问操作的进行
-l: 若进行硬连接(hard link)的连接文件创建,而非复制文件本身。
-p: 连同文件的属性一起复制过去,而非使用默认属性
-r: 递归持续复制,用于目录的复制行为
-s: 复制成为符号链接文件,即”快捷方式“文件
-u: 若目标文件比源文件旧才更新目标文件
注: 若源文件有两个以上,则目标文件为目录
rm 移除文件或目录
rm [-fir] 文件或目录
参数:
-f: 就是force的意思,忽略不存在的文件,不会出现警告信息;
-i: 互动模式,在删除前会询问用户是否操作;
-r: 递归删除,最常用在目录的删除了,非常危险的参数
mv 移动文件与目录,或更名
mv [-fiu] source destination
mv [options] source1 source2 source3....directory
参数:
-f: force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i: 若目标文件(destination)已经存在时,就会询问是否覆盖
-u: 若目标文件已经存在,且source比较新,才会更新(update)
mv bashrc mvtest
mv mvtest mvtest2
cat: 由第一行开始显示文件内容
cat [-AbEnTv]
参数:
-A: 相当于-vET的整合参数,可列出一些特殊字符,而不是空白而已
-b: 列出行号,仅针对非空白行做行号显示,空白行不标行号
-E: 将结尾的断行字符$显示出来
-n: 打印出行号,连同空白行也会有行号,与-b的参数不用
-T: 将[Tab]按键以^I显示出来
-v: 列出一些看不出的特殊字符
cat /etc/issue
tac: 从最后一行开始显示
nl: 显示的时候,顺便输出行号
nl [-bnw] 文件
参数:
-b: 指定行号指定的方式,主要有两种:
-b a: 表示不论是否为空行,,也同样列出行号(类似cat -n)
-b t: 如果有空行,空的那一行不要列出行号(默认值)
-n: 列出行号表示的方法,主要有三种:
-n ln: 行号在屏幕的最左方显示
-n rn: 行号在自己字段的最右方显示,且不加0
-n rz: 行号在自己字段的最右方显示,且加0
-w: 行号字段占用的位数
more: 一页一页地显示文件内容
more /etc/man.config
空格键: 代表向下翻一页
回车键: 代表向下滚动一行
/字符串: 代表在这个显示的内容当中,向下查询"字符串"这个关键字
:f : 立刻显示出文件名以及目前显示的行数
q: 代表立刻离开more,不再显示该文件内容
b或 ctrl+b: 代表往回翻页,不过这个操作只对文件有用,对管道无用
less: 与more类似,但是比more更好的是,它可以往前翻页
less /etc/man.config
空格键: 代表向下翻动一页
[PageDown]: 向下翻动一页
[PageUp]: 向上翻动一页
/字符串: 向下查询"字符串"的功能
?字符串: 向上查询"字符串"的功能
n: 重复前一个查询
N: 反向重复前一个查询
q: 离开less这个程序
head: 只看头几行
head [-n number] 文件
参数:
-n: 后面接数字,代表显示几行的意思
tail: 只看结尾几行
tail [-n number] 文件
参数:
-n: 后面接数字,代表显示几行
-f: 表示持续检测后面所接的文件名,等到按下ctrl-c 才会结束
od: 以二进制的方式读取文件内容
od [-t TYPE] 文件
参数:
-t: 后面可以接各种"类型"的输出,例如:
a: 利用默认的字符来输出
c: 使用ASCII字符来输出
d[size]:利用十进制来输出数据,每个整数占用 size bytes
f[size]:利用浮点数来输出数据,每个整数占用 size bytes
o[size]:利用八进制来输出数据,每个整数占用 size bytes
x[size]:利用十六进制来输出数据,每个整数占用 size bytes
touch 修改文件时间或创建新文件
文件主要三个变动时间:
- modification time(mtime): 文件内容更改时间
- status time(ctime): 文件状态更改时间
- access time(atime): 文件读取时间
默认显示mtime
touch [-acdmt] 文件
参数;
-a: 仅修改访问时间
-c: 仅修改文件的时间,若该文件不存在则不创建新文件
-d: 后面可以接欲修改的日期而不用目前的日期,也可以用--data=日期或时间
-m: 仅修改mtime(文件内容更改时间)
-t: 后面可以接欲修改的时间而不是目前时间,格式为[YYMMDDhhmm]
umask 文件默认权限
目前用户在新建文件或目录时的权限默认值,umask的分数指 该默认值需要剪掉的权限,修改默认权限值,umask 数字
chattr,lsattr 文件隐藏属性
chattr [+-=][ASacdistu] 文件或目录名称
参数:
+: 增加某一个特殊参数,其他原本存在的参数不变
-: 删除某一个特殊参数,其他原本存在的参数不变
=: 仅有后面接的参数
A: 访问此文件或目录时,atime时间不会被更改
S: 进行文件修改时同步写入磁盘
a: 文件只能增加数据,不能删除和修改数据,只有root才能设置这个属性
c: 自动压缩文件,读取时自动解压
d: 当dump程序被执行时,设置d属性可以使该文件(目录)不会被dump备份
i: 文件无法删除,改名,设置连接也无法写入或添加数据,只有root能设置
s: 文件将永远从硬盘空间删除
u: 文件删除时存储在硬盘,可找回
注: 属性设置常见是a与i
lsattr [-adR] 文件或目录
参数:
-a: 将隐藏文件的属性也显示出来
-d: 如果是目录,仅列出目录本身的属性而非目录内的文件名
-R: 连同子目录的数据一并列出
file 查看文件类型
which 寻找执行文件
which [-a] command
参数:
-a: 将所有由PATH目录中可以找到的命令均列出
whereis 寻找特定文件
whereis [-bmsu] 文件或目录名
参数:
-b: 只找二进制格式的文件
-m: 只找在说明文件manual路径下的文件
-s: 只找source源文件
-u: 查找不在上诉三个选项当中的其他特殊文件
locate:依据/var/lib/mlocate内数据库记载,找出用户输入的关键字文件
updatedb: 更新/var/lib/mlocate内的数据库文件
**find 查找文件