关于Linux目录的几个常见概念
- 路径
对文件位置信息的描述机制,是指从树型目录中的某个目录层次到其内某个文件的一条通路;分为相对路径和绝对路径;
- 工作目录
登入系统后,用户始终处于某个目录中,此目录即为工作目录,或称作当前目录
- 根目录
Linux树型目录结构的最顶层目录
- 用户“家”目录
也称用户主目录,通常是位于/home目录中跟用户名称相同的一个目录,用户登录系统后默认处于此目录中
路径相关
描述:路径是从一个目录到另一个目录或文件的通路,由各级目录的名称来标识
- 绝对路径
从根目录/开始到文件名结束的路径
例如: /usr/local/tomcat7/logs/catalina.out
- 相对路径
不是从根目录开始的路径
例如:cd ../catalina.out
- 几个特殊符号
.代表当前路径
..代表上层目录
~代表用户根目录
~user 代表user的根目录
- 系统登录时候,用户会自动跳转到其home目录,root用户的主目录是/root,而其他用户(user)的默认主目录是/home/user
- 环境变量PATH
环境变量PATH的作用是提供给用户查找文件的可能路径
当新安装了套件时,可能需要将可执行文件的路径写入环境变量
查看PATH方法
echo $PATH
文件、目录操作命令
概要:
目录操作命令
ls pwd cd mkdir rmdir
文本文件查看命令
cat more less head tail
文件操作命令
file touch cp rm mv
文件内容统计命令
wc
文件链接命令
ln
1.目录操作命令
命令 | 功能 |
---|---|
ls | 显示指定目录和文件的信息 |
pwd | 显示当前目录名称 |
cd | 进入指定的目录 |
mkdir | 创建指定名称的目录 |
rmdir | 删除指定名称的目录 |
- ls命令
功能说明:
将指定目录内容输出到标准输出设备上;
如果不指定File 或Directory 参数,显示当前目录的内容
缺省情况下,ls 命令按照文件名的字母顺序显示所有信息
当ls 命令显示目录内容时,它不显示名称以.(点)开头的文件项,除非使用了-a 或者-A 标志
命令格式:
ls [-aAdfFhilRS] 目录名
ls [–color={none,auto,never,always}] 目录名
ls [–full-time] 目录名
ls命令的常用选项
-A 列出所有条目,除了.(点)和..(点-点)
-a 列出目录中所有项,包括以.(点)开始的项
-l(L 的小写)显示方式、链接数目、所有者、组、大小(按字节)和每个文件最近一次修改时间
d 此项为目录
b 此项为块特殊文件
c 此项为字符特殊文件
l 此项为符号链接
p 此项为一个先进先出(FIFO)特殊文件
s 此项为本地套接字
-此项为普通文件
-r反转排序顺序,适当的按字母逆向排序或者首先排序最旧的文件
-R递归列出所有子目录
-h 以更直观方式显示文件大小
–color=never 不要按照文件属性用不同的颜色
–color=always 显示颜色
–color=auto 让系统自行设置是否显示颜色
–full-time 以完整的时间模式输出
–time={atime,ctime} 输出访问时间或者是改变权限的时间,而非是修改时间
- pwd命令
功能说明:
显示工作目录的路径名称(print working directory)
命令格式
pwd [-P]
pwd 命令将当前目录的全路径名称(绝对路径)写入标准输出设备;全部目录使用/(斜线)分隔;第一个/ 表示根目录,最后一个目录是当前目录
[-P]显示出实际路径,而非使用连接的路径
/var/mail是/var/spool/mail的连接文件
- cd命令
功能说明:
更改当前工作目录(change directory)
命令格式:
cd [相对路径或绝对路径]
使用说明:
用户必须具有指定目录中的执行许可权
如果未指定目录参数,cd 命令会将当前工作目录设置为登录目录
支持相对路径和绝对路径
应用实例:
cd ~user表示切换到user的主(home)目录
.(点)表示当前目录
..(点点)表示父目录
cd ~ 返回当前用户主目录
cd -返回用户上次所在的目录
- mkdir命令
功能说明:
创建一个或多个新的目录
命令格式:
mkdir [-mp] 目录名
使用说明:
每个新目录包含标准项.(点)和..(点-点)
-p 创建丢失中间路径名称目录;如果没有指定-p 标志,则每个新创建的目录的父目录必须已经存在
-m 设置新创建的目录的权限,不管默认权限
- rmdir命令
功能说明:
删除目录
命令格式:
rmdir [-p] 目录名
使用说明:
必须为空,并且必须具有父目录的写权限
-p 沿着参数指定的路径名除去所有目录
例如,如果要删除~/test、~/test/test1、~/test/test1/xyz,可以使用如下命令
rmdir –p ~/test/test1/xyz
2.文件操作命令
命令 | 功能 |
---|---|
file | 显示指定文件的类型 |
touch | 建立指定名称的文件或更新文件时间 |
cp | 复制文件或目录 |
rm | 删除文件或目录 |
mv | 移动文件或目录,文件或目录重命名 |
- file 命令
功能说明:
确定文件类型
命令格式:
file 文件名
使用说明:
文件可以是常规文件、目录、FIFO(指定的管道)、块特殊文件、字符特别文件、符号链接或者套接字类型
对于长度为零的常规文件,将识别为空文件
对于符号链接文件,缺省情况下此链接后跟符号链接引用的文件
UTF,是Unicode Text Format的缩写,意为Unicode文本格式
- touch 命令
功能说明:
创建新文件
更新文件的访问和修改时间
修改时间ctime (use –change time )
访问时间atime(access)
格式:
touch [-opt] {File|Directory}
常用选项
-a 更改由File 变量指定的文件的访问时间
-c如果文件不存在,则不要进行创建
-m更改File 的修改时间
-t Time使用指定时间而不是当前时间。
Time 变量以十进制形式[YYMMDDhhmm]指定
YY 指定年份的后两位数字
MM 指定一年的哪一月(从01 到12)
DD 指定一月的哪一天(从01 到31)
hh 指定一天中的哪一小时(从00 到23)
mm指定一小时的哪一分钟(从00 到59)
命令实例
- rm 命令
功能说明:
删除(链接)文件或目录
命令格式:
rm [opt] file/dir
使用说明:
如果要删除的文件是符号链接,则除去链接,但是符号链路引用的文件或目录仍在
常用选项
-f 在删除有写保护的文件前不提示
-i 删除每个文件前提示
-r 当目标参数为目录时递归删除目录及其内容
-R 同-r
命令实例
- mv 命令
功能说明:
移动(并重命名)文件或目录
mv 命令可以覆盖现有文件
命令格式:
mv [opt] source destination
参数说明:
-f:强制直接转移不询问
-i:若目标文件已经存在询问是否覆盖
-u:若源文件已经存在,但源文件比较新,则更新
命令实例
- cp 命令
功能说明:
复制文件或目录
命令格式:
cp [-opt] [src_file|src_dir] [dst_file|dst_dir]
常用选项
-a 复制目录时使用,保留链接、文件属性、并递归地复制目录
-d 复制时保留链接
-f 如果指定的目标文件存在,先强行覆盖
-i 覆盖目标文件前需要用户先确认
-p 复制文件,包括其修改时间和访问权限
-r 复制目录时可递归复制目录中的内容
-R 如同-r,但特殊文件将被重新创建,而非复制
命令实例
命令实例图
3.文本文件查看命令
命令 | 功能 |
---|---|
cat | 显示文本文件内容 |
tac | 从最后一行开始显示,tac和cat字母顺序相反 |
nl | 显示的时候,输出行号 |
more | 分页显示文本文件内容 |
less | 分页显示文本文件内容,并可方便反复浏览 |
head | 显示文件首部内容 |
tail | 显示文件尾部内容 |
- cat 命令(concatenate)
功能说明:
显示文本文件内容
命令格式:
cat [-AEnTv] 文件名
参数说明
-n 或–number 由1 开始对所有输出的行数编号
-v 将非打印字符显示为可视字符,除了跳格符、换行符和换页符;
-E 在每行末尾显示一个$(美元符号)
-T则将跳格字符显示为^I,与-v联合使用;-t=-vT
-A 等同于-vEt
功能1:
将指定文件从首行开始连续显示在屏幕,当文件过大时不适用
例如cat install.log
功能2:
将两个或多个文件连接到一起
格式:
catfile1 file2 …>filen :将file1, file2等的内容复制到新建文件filen中
命令实例
- tac 命令
功能说明:
从最后一行开始显示,tac和cat字母顺序相反
命令实例
- nl 命令
功能说明:
显示的时候,输出行号
命令格式:
nl [-bnw] 文件
参数说明:
-b:制定行号的指定方式
-b a:表示不论是否为空行,同样列出行号
-b t:如果有空行,空行不要列出行号
-n:列出行号的表示方法
-n ln:行号在字段的最左方显示
-n rn:行号在字段的最右方显示,不加0
-n rz:行号在字段的最右方显示,加0
-w:行号字段占用的位数
- more 命令
功能说明:
分页显示文本文件内容
命令格式:
more 文件名
使用说明:
more 命令读取文件,并将内容屏显标准输出设备
此命令在每屏后暂停,并在屏幕底部打印单词More和显示内容百分比
回车键:more 命令将会再向下显示一行
空格键:more 命令显示文本的另一屏。
- less 命令
功能说明:
分页显示文本文件内容,并可方便反复浏览
命令格式:
less 文件名
使用说明:
less 命令的功能几乎和more 命令一样,也是用来按页显示文件,不同之处在于less 命令在显示文件时允许用户既可以向前又可以向后翻阅文件
常用功能键
pageup
pagedown
/ 向下搜索
? 向上搜索
- head 命令
功能说明:
显示文件首部内容
命令格式:
head [–n Num] File…
选项说明:
-n 选项用来指定显示File的开头行数
使用说明:
显示一个文件或多个文件的前几行或前几个字节
缺省显示前10 行
输入文件必须是文本文件
- tail 命令
功能说明:
显示文件尾部内容
命令格式:
tail [-nf num] 文件
选项说明:
-n 选项用来指定从每一要显示的指定文件的开头的行数
+Num 显示从第Num行开始至文件尾的内容
-Num 显示从距文件尾Num行开始至文件尾的内容
-f 如果文件内容正在增长中,此选项则动态显示增长的内容,直到用户使用“Ctrl+C”结束
使用说明:
我们经常在看服务器的日志的时候会用到tail 命令
我们经常这样用
tail -f /usr/local/tomcat/logs/catalina.out
4.文件查找命令
命令 | 功能 |
---|---|
which | whereis指令会在特定目录中查找符合条件的文件; |
where | 从最后一行开始显示,tac和cat字母顺序相反 |
locate | 分页显示文本文件内容 |
find | 显示的时候,输出行号 |
- which 命令
功能说明:
查看可执行文件的路径
命令格式:
which [-a] 命令
常用选项:
-a 将所有可找到的命令列出,不仅仅列出第一个找到的命令
举例:
which pwd
which lsattr
- whereis 命令
功能说明:
查找“特定文件”
whereis指令会在特定目录中查找符合条件的文件;
命令格式:
whereis [选项] 文件列表
常用选项:
-b 只查找二进制文件
-m 只查找说明文件
-s 只找源文件
-u 没有帮助文件的文件
命令实例
- locate 命令
功能说明:
用于查找符合条件的文件,它会去保存文件与目录名称的数据库内,查找合乎条件的文件或目录
命令格式:
locate 文件名
使用说明:
需要先建立数据库,而后方可进行查找
updatedb命令用来生成最新的文件名数据库,它会在目录/var/lib/mlocate/下生成mlocate.db 数据库
它的查找速度比find快,但更新数据库的过程本身会很耗费时间
- find 命令
功能说明:
在目录结构中搜索文件,并执行指定的操作
命令格式:
find 起始目录查找条件[操作]
使用说明:
起始目录:find命令所查找的目录路径;例如可用.来表示当前目录,用/来表示系统根目录
查找条件:匹配机制,如可以按照文件名、文件权限、修改时间等进行文件查找
操作:按指定条件查找后进行的特定处理方法,如将查找到的文件在屏幕上显示出来,或对其进行权限修改,或将查找到的文件删除等等
find命令的查找条件(1)
-name ‘字串’按照文件名查找文件
-lname ‘字串’查找文件名匹配的所有符号链接文件
-gid n 查找属于ID号为n的用户组的所有文件
-uid n 查找属于ID号为n的用户的所有文件
-group ’字串’查找属于同一用户组的所有的文件
-user ’字串’查找属于同一用户的所有文件
-empty 查找大小为0的文件
-path ’字串’查找路径名匹配所给字串的所有文件
-perm 权限查找具有指定权限的文件和目录,权限的表示可以如755,644
命令实例
find命令的查找条件(2)
-nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在
-nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在
-type 查找某一类型的文件
-size n [bck] 查找文件长度为n块的文件,带有c时表示文件长度以字节计
-depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
命令实例
find命令的查找条件(3)
以时间为条件查找
-amin +n -n 按访问时间查找;-n指n分钟以内,+n指n分钟以前
-atime +n -n 按访问时间查找;-n指n天以内,+n指n天以前
-cmin +n -n 按创建时间查找
-ctime +n -n 按创建时间查找
-mmin +n -n 按修改时间查找
-mtime +n -n 按修改时间查找
-newer file 列出比file还新的文件
可执行的操作
-exec 命令{} \;对符合条件的文件执行所给的命令
{}表示命令的参数即为所找到的文件
命令的末尾必须以“\;”结束
-ok 命令{} \;同-exec,但会询问用户是否执行该命令
命令实例
find / -name g.txt -exec ls -l {} \;
find命令例子
在/etc目录下查找所有以rc开头的文件名
find /etc -name “rc*” -print
查找系统中所有文件长度为0的普通文件,并列出它们的完整路径
find / -type f -size 0 -exec ls -l {} \;
在/etc下的所有以passwd开头的文件中查找是否有名为redhat的用户
find /etc –name “passwd*” –exec grep “redhat” {} \;
查找当前目录下所有以txt结尾且2分钟内没有被访问过的文件
find . -name “*.txt” -amin +2 -print
四个不同搜索命令区别
which:
通过环境变量PATH指定路径进行搜索
whereis,locate:
通过存储系统文件信息的数据库
find:
直接搜索硬盘
5.文件与目录的默认权限与隐藏权限
命令 | 功能 |
---|---|
umask | 用来设置新建文件权限的掩码 |
chattr | 设置文件的隐藏属性 |
lsattr | 显示文件夹的隐藏属性 |
set UID | 特殊权限 |
set GID | 如果s的权限是在用户组 |
sticky Bit | 只针对目录有效 |
- umask 命令
功能描述:
用来设置新建文件权限的掩码
命令格式:
umask [模式]
使用说明:
模式为新建文件权限的掩码值
Linux系统中目录的默认权限是drwxrwxrwx,文件的默认权限是-rw-rw-rw-。因此,有以下公式:
新目录的权限= drwxrwxrwx-默认权限掩码
新文件的权限= -rw-rw-rw--默认权限掩码
基于安全原因,Linux系统不允许文件的默认权限有执行权
不带任何参数的umask命令显示当前的默认权限掩码值
新目录的权限= drwxrwxrwx-(d—-w–w-)
= drwxr-xr-x
新文件的权限= -rw-rw-rw--(—–w–w-)
= -rw-r–r–
- chattr 命令
- 功能说明:
设置文件的隐藏属性
命令格式:
chattr [+-=] [ASacdistu] 文件或目录
参数说明:
a:只能增加数据,不能删除,只有root才能设置
i:可以让文件“不能被删除、改名、设置连接,也无法写入或新增数据”
- lsattr 命令
功能说明:
显示文件夹的隐藏属性
命令格式:
lsattr [-aR] 文件或目录
参数说明:
-a:显示隐藏文件的属性
-R:连同子目录的数据一并列出
- set UID 命令
特殊权限
s与t:让一般用户在执行某些程序的时候,能够暂时具有该程序拥有者的权限。
- set GID命令
功能说明:
如果s的权限是在用户组,称为Set GID,简称SGID
文件:如果SGID设置在二进制文件上,不论用户是谁,在执行改程序的时候,它的有效用户组将会变成改程序用户组的所有者。
目录:如果SGID设置在A目录上,则在该A目录内建立的文件或目录的用户组,将会是此A目录的用户组。
- sticky Bit 命令
功能说明:
只针对目录有效
在具有SBit的目录下,用户若在该目录下具有w及x权限,则当用户在该目录下建立文件或目录时,只有文件的拥有者与root有权利删除。
SUID/SGID/SBIT权限设置
SUID: 4
SGID: 2
SBIT: 1
格式:chmod xxxx filename
命令实例