Linux的目录配置与文件权限
Linux的目录简介
/bin: 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。比如 cat、chmod、chown等等,可以被普通用户和root用户使用
/boot: 这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。存放启动配置文件和内核文件,linux内核的文件名为:vmlinuz,还可能有启动引导程序grub2
/dev : dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的,任何设备都是以文件的形式存放在这里。
/etc : etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录,还有各种服务的启动文件。HFS还规定,在它的下面有opt(必要) x11(建议) sgml(sgml)格式相关的配置文件 xml(xml格式的有关的配置文件)
/home: 用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
/lib : lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found : 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media : linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
/mnt : 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
/opt : opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。第三方辅助软件存放的目录
/proc : proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root: 该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin : s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。里面存放的命令只有root可以使用
/selinux : 这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv : 该目录存放一些服务启动之后需要提取的数据。比如www服务 FTP服务
/sys : 这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp : tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。启动时可能会被清除,这里不能放重要的文件
/usr : usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
/usr/bin:系统用户使用的应用程序。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。
/usr/local 建议安装软件的目录
/usr/include c和c++的库
/var : var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run: 是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。
Linux文件属性
ls -al
ls是“list”的意思,重点在显示文件的文件名与相关属性。而选项“-al”则表示列出所有的文件详细的权限与属性 (包含隐藏文件,就是文件名第一个字符为“ . ”的文件)。如上所示,在你第一次以root身份登陆Linux时, 如果你输入上述指令后,应该有上列的几个东西,先解释一下上面七个字段个别的意思:
- 文件属性的示意图
- 文件的类型与权限之内容
- 第一个字符代表这个文件是“目录、文件或链接文件等等”:
当为[ d ]则是目录,例如上表文件名为“.config”的那一行;
当为
[ - ]则是文件,例如上表文件名为“initial-setup-ks.cfg”那一行;
若是[ l ]则表示为链接文件(link file);
若是[ b ]则表示为设备文件里面的可供储存的周边设备(可随机存取设备);
若是[ c ]则表示为设备文件里面的序列埠设备,例如键盘、鼠标(一次性读取设备)。 - 接下来的字符中,以三个为一组,且均为“rwx” 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
第一组为“文件拥有者可具备的权限”,以“initial-setup-ks.cfg”那个文件为例, 该文件的拥有者可以读写,但不可执行;
第二组为“加入此群组之帐号的权限”;
第三组为“非本人且没有加入本群组之其他帐号的权限”。
管理文件相关命令
ls命令
查看指定目录下有什么文件或目录,若不指定,则列出当前目录
格式: ls [选项] [目录]
选项列表:
l 列出文件详细信息,(类型、权限、链接数、所有者、组名、大小、时间
a 显示所有子目录和文件的信息 包括以 ‘.’开头的隐藏文件、目录
R 以递归的方式显示目录即子目录的所有内容
1 一行输出一个文件信息
A 与a基本相同 不显示 . 和 . .
d 显示目录本身的属性,不显示目录的内容
h 显示目录或文件的大小 默认单位B
color 在字符模式下以颜色区分不同文件
cd命令 与 pwd命令
pwd命令:打印当前工作目录的绝对路径
cd命令:切换当前工作目录
格式:cd [选项] 目录名
可以是绝对路径或相对路径
- 绝对路径:由根目录(/)开始写起的文件名或目录名称, 例如
/home/dmtsai/.bashrc; - 相对路径:相对于目前路径的文件名写法。 例如 ./home/dmtsai 或 …/…/home/dmtsai/
等等。反正开头不是 / 就属于相对路径的写法
cd ~或cd :当前用户主目录
cd ~用户名 :这个用户主目录
cd .. : 上级目录在这里插入代码片
cd . :当前目录
cd - :上次操作的目录
cd !$ :把上个命令的参数作为cd 参数使用
mkdir命令
创建文件夹,允许创建多个文件夹,也允许多重创建
常用选项:
p :递归创建
Z :设置安全上下文,当使用SELinux时有效;
m :<目标属性>或–mode<目标属性> 建立目录的同时设置目录的权限;
示例:
- mkdir命令一次性建立多级文件夹
mkdir -p /{d1/{d3,d4},d2{d5,d6}}
rmdir命令
删除一个空目录
必须离开目录,并且目录必须为空目录,不然提示删除失败
-p : 递归删除多层级空目录
示例:
rm命令
删除文件、文件夹
选项
-r :递归删除
-f :忽略提示信息
-i :删除前逐一询问
删除目录需要加上-r
经常与通配符一起使用,快速删除多个文件
如:
rm -rf 文件/文件夹
touch命令
若文件不存在,则创建文件
若文件存在,则修改文件时间,默认三个时间都修改为当前时间
选项
-a 只将访问时间 (atime)修改为当前时间;
-m 只将修改时间(mtime)修改为当前时间;
-c 只修改三个时间 若文件不存在也不建立任何文件;
-d <STRING> 解析STRING,并将该时间作为touch要更新的时间,而不是当前时间,STRING格式可以参考date命令
实例:touch -d "3 years ago"
r <参考文件或目录> 使用这个文件的时间,而不是当前时间,即将其他文件的时间戳改得和这个文件相同
t <日期时间> 使用[[CC]YY]MMDDhhmm[.ss],而不是当前时间,和-d类似,但是-t和-d接受的时间格式是不同的。
实例touch -t 2107100513 a.c
cp命令
复制文件或目录,复制后名字是可以改变的,常见命令选项为:-rf 、-af 。
格式为:cp 源文件 目标文件(夹)
选项
-R/r:递归复制,若复制目录,必须加上;
-f :强行复制文件或目录,不论目标文件或目录是否已存在;
-s :对源文件建立符号连接,而非复制文件;
-l :对源文件建立硬连接,而非复制文件;
-p :保留源文件或目录的属性;
-n :选项,不会发生覆盖操作。
-i : 选项,可以提示操作者是否执行覆盖操作。
-b :选项,在覆盖前进行备份,备份文件名是原始文件名加上一个波浪线。
-u :选项,表示只有文件比较新的时候,才发生覆盖。
-a :此参数的效果和同时指定"-dpR"参数相同;
-d :当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;(如果复制链接而不加上这个,就是复制文件)
-u :使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S :在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b :覆盖已存在的文件目标前将目标文件备份;
-v :详细显示命令执行的操作。
示例:
cp file file1 /文件file复制到file1
若txt2不存在,则创建一个复制过去
若txt1存在,则会覆盖
示例:
cp -rf folder1/ folder2 /文件夹folder1复制为folder2文件夹
cp -rf folder1 folder2/ /folder1文件夹复制到folder2文件夹里面
mv命令
文件、文件夹的重命名或剪切命令 (移动)
格式:mv [选项] 源文件或目录 目标文件或目录
同一个文件夹下就是重命名
不同文件夹就是移动
选项
-b :若需覆盖文件,则在覆盖文件前先进行备份
-f :强制覆盖,若目标文件已存在同名文件,使用该参数时则直接覆盖而不询问
-i :若目标文件已存在同名文件,则提示询问是否覆盖
-u :若目标文件已存在需移动的同名文件,且源文件比较新,才会更新文件
-t :指定mv的目标目录,改选项使用于移动多个源文件到一个目录的情况,此时目标文件在前,源文件在后
示例:
mv file1 file2 /文件file1改名为file2
mv file1 folder1 /文件file1剪切到folder1文件夹中
查看文件内容cat、more 、less、head、tail的异同
cat 可读可写,不够直观
more 只读,只能往下翻
less 只读,可上下翻
head 只查看前面一部分
tail 只查看后面一部分
cat命令
直接在命令行上,从第一行开始显示文件
选项:
-b :显示行号
-n :显示行号,空白行也显示行号
-v :列出一些看不出来的符号
-A :显示特殊符号,包括-v 和结束符号 tab符号
tac和cat倒过来的命令,从最后一行开始显示
nl也是类似的显示命令,可以对行号有较多操作
示例:
more命令
分页显示内容,底行显示百分比
空格键 表示下翻一页
enter 下翻一行
/字符串 向下查找这个字符串
:f 显示文件名和目前显示的行数
b 或 ctrl - b 往回翻页
q 退出
less 命令
分页显示内容,比more更灵活
空格键 表示下翻一页
[pagedown] 下翻一页
[pageup] 上翻一页
enter 下翻一行
/字符串 向下查找这个字符串
?字符串 向上查找这个字符串
n 重复前一个查找
g 前进到第一行
G 到最后一行
b 或 ctrl - b 往回翻
head 命令
查看前面的内容
默认是10行
指定行数:
head -n 行数 文件名
显示除了后面一定行数之外的内容
head -n -行数 文件名
tail 命令
查看后面的内容
默认是10行
指定行数:
tail -n 行数 文件名
显示除了前面一定行数之外的内容
tail -n -行数 文件名
-f 持续刷新显示,直到按 ctrl c 退出
chmod 权限修改命令
字母设定
语法:chmod [who] [opt] [mode] 文件/目录名
其中[who]代表对象,是以下字母中一个或组合:
u :表示文件所有者
g :表示同组用户
o :其他用户
a :表示所有用户
[opt]代表操作,可分为:
+ :添加某个权限
- :取消某个权限
= :赋予给定的权限,并取消原来的权限
[mode]代表权限,可分为:
r :可读
w :读写
x :可执行
示例:
数字设定
语法:chmod [mode] 文件名
关键是mode的取值,我们将rwx看做二进制数,如果有则用1表示,没有则用2表示,
那么, rwx rw- r–
可表示为: 111 101 100
每三位转换成一个十进制为: 7 5 4
其中a ,b,c各位一个数字,分别表示User、Group、及Other的权限。
r=4, w=2, x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
如要r-w属性则4+1=5;
Chmod a=rwx finle 等同于 chmod 777 file
Chmod ug=rwx , o=x file 等同于 chmod 771 file
- 参数 -R,这个参数标示:递归处理,将指令目录下的所有文件及子目录一并处理。
chomd -R 775 dir
grep命令
可在文件内查找特定内容
格式为:grep [选项] 格式[文件及路径]
常用选项
-n 输出显示行号
-v 去除包含此参数的行,输出剩余行
-i 忽略字符大小写的差别
-c:只输出匹配行的计数。
-q:不输出到终端
-A,-B,-C:三者后面都是接阿拉伯数字
-A是显示匹配后和它后面的n行
-B是显示匹配行和它前面的n行
-C是匹配行和它前后各n行
示例:
查找文件find
查找文件,在磁盘中查找,比较万能,但是速度较慢
格式 : find [ PATH ] [ option ] [ation] find 路径 选项 参数
默认连同子目录一起搜索的,比较耗磁盘资源,不写路径时,默认在当前路径下找
1、与时间有关的选项:
共有-atime、-ctime、mtime,以-mtime说明
-mtime n : n为数字,意义为 n天之前的一天之内 修改过的文件
-mtime +n : 列出在n天之前(不包含第n天 ) 修改过的文件
-mtime -n : 列出在n天之内(含第n天)修改过的文件
-newer [ 一个存在的文件名] :列出比这个文件还要新的文件
文件压缩和打包
打包 是将许多的文件或目录变成一个总的文件(打包文件大小变化不大,不用算法)
压缩 是将一个文件通过压缩算法变成一个小文件
一般压缩只能针对单独一个文件,所以文件夹或者多个文件的话,需要先打包再压缩
常用压缩格式
格式 | 压缩命令 | 解压命令 | 备注 |
---|---|---|---|
.tar.gz | tar -czf xx.tar.gz [需要压缩的文件列表] | tar -xzf xx.tar.gz -C [解压路径] | 文件、文件夹,打包+压缩 |
.tar.bz2 | tar -cjf xx.tar.bz2 [需要压缩的文件列表] | tar -xjf xx.tar.bz2 -C [解压路径] | 文件、文件夹,打包+压缩 |
.gz | gzip file | gzip -d xx.gz | 单个文件 压缩不打包 |
.bz2 | bzip2 file | bzip2 -d xx.bz2 | 单个文件 压缩不打包 |
.tar | tar -cf xx.tar file [需要打包的文件列表] | tar -xf xx.tar -C [解包路径] | 文件、文件夹,只打包不压缩 |
.rar | unrar xx.rar | ||
.zip | unzip xx.zip | ||
.7z | 7z |
ar命令的参数
-c:建立打包 / 压缩文件
-x :解打包或解压缩的功能,可以搭配-C(大写)在特定目录解开
-j :使用bzip2的支持进行压缩/解压缩
-z :使用gzip的支持进行压缩/解压缩
-t :查看打包文件的内容含有哪些文件
-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来
-f filename:-f 后面跟处理后文件的全名称(路径+文件名+后缀名)
-C 目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项
-p:保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件
–exclude=FILE:在压缩的过程中,不要将那些文件打包
注意-c, -t, -x 不可同时出现在一串指令列中。
示例: