目录
5、ACL权限:给任何的用户或用户组设置任何文件/目录的访问权限
一、目录操作命令
首先区别一下根目录和家目录:
/ 根目录,所有目录的起点
/home 初root以外的用户主目录都在这里
~ 指代每个用户的主目录(/home/用户名)
1、pwd 显示当前工作目录的绝对路径
注意:①绝对路径:指从根目录(/)开始到当前目录(文件)的路径;②相对路径:指从当前目录到其下子目录(文件)的路径,一般是 . (当前目录)或 .. (上一级目录)开始
❗ 以~开头的家目录下的路径其实是绝对路径
2、mkdir 创建目录
命令格式: mkdir [选项] [目录]
- 同时创建多个目录:mkdir d1,d2,d3(同时创建d1,d2,d3三个目录)
- 创建包含子目录的目录:mkdir -p letter/important (创建名为 letter 的目录,在它的目录下包含有子目录 important)
- 创建包含多个子目录的目录:mkdir -p ./folder/{fd1,fd2} (新建一个folder目录,folder下再新建两个目录fd1,fd2)
3、cd 更改工作目录路径
命令格式: cd [目录]
- cd 或 cd ~ <== 回到使用者的主目录/家目录
- cd ~user <== 回到user用户的家目录
- cd .. <== 回到上一层目录/上移到当前位置的父目录
- cd ../.. <== 从当前位置上移两个级别
- cd /home/flora/folder/fd2 <==绝对路径到fd2目录
- cd ./folder/fd2 <==相对路径到fd2目录
- cd - <==返回上一次目录(如果不小心输入了cd并回车,到了主目录,则可使用此命令快速回到刚才执行的目录
注意:家目录是login时所在的目录。
4、ls 列出目录和文件
命令格式: ls [选项] [目录] [文件]
- 查看文件详情:ls -l 或 ll
- 列出当前的位置(长格式)及隐藏文件:ls -la
- 增强对文件大小易读性,以人类可读的形式显示文件大小: ls -lh
- 按照时间顺序查看,从上到下时间越来越近(下面的是新文件): ls -ltr
- 当前用户的主目录不是当前位置时,以最简单的语法列出该目录(长格式):ls –l ~
- 查看文件对应的inode信息:ls -li
5、rmdir 删除空目录
命令格式: rmdir [选项] [目录]
- 删除空目录~/test1/test2 :rmdir -p test1/test2
6、rm
删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是断开了链接,原文件保持不变。
命令格式:rm [选项] 文件/目录
选项说明:
-f -force 直接强行删除,不作任何提示
-i --interactive 进行交互式地删除,删除前逐一询问确认
-r | -R --recursive 递归式地删除列出的目录下的所有目录和文件
-v --verbose 详细显示进行的步骤
-rf 子目录及子目录中所有档案删除,并且不用一一确认
※注意,rm 命令是一个具有破坏性的命令,因为 rm 命令会永久性地删除文件或目录,这就意味着,如果没有对文件或目录进行备份,一旦使用 rm 命令将其删除,将无法恢复,因此,尤其在使用 rm 命令删除目录时,要慎之又慎。
- 同时删除多个文件:rm <filename1> <filename2>
- 如果删除具有相同字母开头的多个文件,可以用通配符。例如:rm song?
- 要删除第一个字符为‘-’的文件 (例如‘-foo’),请使用以下其中一种方法:rm -- -foo 或 rm ./-foo
- 删除work目录下的所有文件,但是不删除work目录本身:rm work/*
二、文件操作命令
(一)文件基本操作
1、touch 创建空文件、更改文件时间
命令格式: touch [选项] 文件
- 创建空文件file1、file2、 file3和file4 :touch file1 ; touch file{2,3,4}
- 将文件file1的时间记录改为3月12日19时30分 : touch -c -t 03121930 file1
- 创建六个文件,以filmX.avi形式取名;(X编号从1-6):touch film{1..6}.avi
- 创建3个隐藏文件 : touch .{a..c}
2、cp 复制文件和目录
命令格式: cp [选项] [源文件|目录] [目标文件|目录]
- 将/etc/passwd文件复制到当前家目录的test文件夹中:cp /etc/passwd ~/test
- 生成一个passwd_new文件,要求内容与passwd文件内容相同:① cd test ② cp passwd passwd_new
- 将 ~/test目录下的所有内容复制到当前家目录,命名为testnew : cp -r test test_new
- 将fd3目录下所有的隐藏文件复制到fdd中:cp -r fd3/.[^.]* fdd
3、mv 文件和目录改名、移动文件和目录路径
命令格式:mv [选项] [源文件|目录] [目标文件|目录]
-
将~/test目录下的所有后缀名为”*.png”的文件移动到~/pic目录下: mv ~/test/*.png ~/pic
4、find 用于查找文件或目录
命令格式:find [查找范围] [选项] [查找条件]
※ 如果用户没有指定查找范围,则find命令从当前目录开始搜索查找
注意:find中可以运用 ①与(-a) ;②或(-o);③非(!) 三种逻辑运算符来连接查找条件。
-
在/etc目录下查找大于1MB小于10MB的文件: [root@localhost ~]# find /etc -size +1M -a -size -10M
-
在/tmp目录下查找大小大于1k,小于10M,在30分钟内被修改过的普通文件:find /tmp \( -size +1k -a -size -10M -a -mmin -30 -a -type f \) -ls .(其中将所有连接条件用圆括号括起来并且将圆括号用反斜杠来转义)
-
搜索在/etc/中所有以host开头的文件: [root@localhost ~]# find /etc -name "host*" -type f
-
搜索当前目录中文件属主具有读写权限,并且文件所属组及其他用户具有读权限的文件: [root@localhost ~]# find . -perm 644 -type f -exec ls -l {} \;
- 查找当前目录及子目录下的名字包含my字符串的5天以内访问的文件;①并将他们删除,删除前需要用户确认,且显示删除过程:find -name “my*” –atime -5 –ok rm –v {} \; ②并将他们复制到一个目标目录下:find -name “my*” –atime -5 –exec cp {} myfolder \; (-exec 后面的{}代表前面搜索到的结果,\;代表转义结束)
5、 which/whereis 查找文件或目录
(1)which的命令格式: which 命令
主要用来搜索二进制文件、可执行文件或者shell命令行的位置。
(2)whereis的命令格式: whereis 命令
主要用来搜索二进制文件的位置、源代码的位置和man帮助文件位置。
例如:
[flora@localhost ~]$ which find
/usr/bin/find
[flora@localhost ~]$ whereis find
find: /usr/bin/find /usr/share/man/man1/find.1.gz /usr/share/man/man1p/find.1p.gz /usr/share/info/find.info-1.gz /usr/share/info/find.info-2.gz /usr/share/info/find.info.gz
(二)文件内容操作
1.cat 显示本文文件、连接文件内容
命令格式:cat [选项] [文件]
注意:选项-s:不显示多余一个的空行,即多个空行只显示一个空行。
例如: 假设有file1、file2、file3三个文本文件,将这三个文本文件连接起来输出到文本文件file4中
[user@localhost ~]$ cat file1 file2 file3>file4
2. more 分页显示文本文件
命令格式:more [选项] [文件]
3.head 显示指定文件的前若干行
命令格式:head -n 行数值 [文件]
※ 默认缺省显示文件的前10行内容。
显示/etc/passwd文件的前5行:head -5 /etc/passwd
4.tail 查看文件末尾数据
命令格式:tail -n 行数值 [文件]
※ 默认缺省显示文件的后10行内容
显示/etc/passwd文件的后5行:tail -5 /etc/passwd
5. grep 在文件中搜索与字符串匹配的行输出
命令格式:grep [选项] 查找条件 源文件
- 要查找的字符串用双引号括起来
- “^……”表示以……开头
- “……$”表示以……结尾
- “^$”表示空行
★并且使用grep可以过滤其他命令的输出数据,也可用于在文件中进行检索 例如:ls -l|grep '3月'
- grep "^$" test :筛test文件中的空行
- grep -v "^$" test :将所有非空行输出,即不显示空行
eg:搜素/etc/passwd中指定以小写字母开头的行
ps: 若搜素以非小写字母开头的行:[flora@localhost file]$ grep -n -E "^[^a-z]" /etc/passwd (n:标示出行号,E:使用正则表达式)
(三)文件链接与文件压缩
1、ln 文件链接
Linux系统中,内核为每一个新创建的文件分配一个inode号,文件属性保存在inode,访问文件时,inode被复制到内存里,从而实现文件的快速访问。
链接分为硬链接和软链接,命令格式:ln [选项] 源文件 [目标]
(1) 硬连接:
- 链接文件和被链接文件必须位于同一个文件系统(分区)中(因为在不同的文件系统中,inode 号是重新计算的),并且不能建立指向目录的硬链接(因为如果给目录建立硬链接,那么不仅目录本身需要重新建立,目录下所有的子文件,包括子目录中的所有子文件都需要建立硬链接,这对当前的 Linux 来讲过于复杂。)
- 默认情况下,不加参数,ln产生硬链接。两个文件具有相同的inode。
- 建立硬链接文件,如果目标文件没有写文件名,会和原名一致
(2) 软连接:
- 符号连接可以用来建立在不同的文件系统之上,并且可以对目录建立符号连接.
- 符号连接等价于建立了快捷方式。ln命令加参数 –s产生符号链接。
- 软连接文件的原文件必须写成绝对路径
示例:t1是原文件,t2是硬链接文件,t3是软连接文件
注意:
- 修改原文件和硬链接、软连接中的任一个,另一个都会改变。
- 如果删除原文件,不影响硬链接,但是符合链接文件失效。
- 如果删除了原文件再重新给一个同路径同名文件,符合链接文件又会恢复,但是这个新文件与之前的硬链接却不同。
- 如果原文件改名,则符号链接失效(因为用的是文件名),硬链接不失效(因为是同一个inode号)。
2、tar 文件打包、压缩
Linux中常用的压缩文件格式为*.tar、*.tar.gz、*.tar.bz2,其中.tar表示使用tar命令打包数据但是没有压缩;.tar.gz表示使用tar命令打包文件并进行gzip压缩;.tar.bz2表示使用tar命令打包文件并进行bzip2压缩。
命令格式:tar [参数] 打包文件名 文件
参数还可以是 ① --delete ,删除打包文件中的某个特定文件;② -A 合并两个打包文件
示例:
-
将当前目录下的file.c文件添加到打包文件myfile.tar中:[user@localhost ~]$ tar rvf myfile.tar file.c
-
删除samplefile.tar中的file1文件 :tar -f samplefile.tar --delete file1
-
将my2.tar打包文件合并到my1.tar中去:tar -f my1.tar -A my2.tar
-
将当前用户目录下的目录文件myfile包括的所有文件用tar命令打包,然后用gzip命令压缩,打包压缩后的文件名为 myfile.tar.gz ==> [user@localhost ~]$ tar -zcvf myfile.tar.gz myfile/
-
查看myfile.tar.gz压缩文件的内容: [user@localhost ~]$ tar -ztvf myfile.tar.gz
-
用tar命令解压经过bzip2压缩的tar文件(由于使用bzip2压缩,所以要加上j这个参数),将压缩文件myfile.tar.bz2解压到当前目录下。: [user@localhost ~]$tar -jxvf myfile.tar.bz2
3、chmod设置基本权限
※ 在Linux系统中,文件有三种访问权限:读read(r)、写write(w)和执行execute(x)。
(1)对于文件:
r: 读权限允许查看某个文件。
w:写权限允许你修改或删除某个文件。
x:执行权限允许你执行某个文件,执行权限只对可执行文件起作用,比如可执行的二进制文件或者是脚本文件,对其他格式的文件,执行许可没有任何作用。
(2)对于目录:
r:读权限允许你可以读出这个目录的内容,即可以使用Is命令来列出这个目录下的所有内容。
w:写权限表明你可以在这个目录下建立、删除和修改文件。
X:执行权限是你可以搜索这个目录,可进入。因此,如果你没有对目录的执行权限,那么就不能使用ls -l命令来列出目录下的内容或者使用cd命令来切换目录。
※ 只有系统管理员root用户和文件/目录的所有者才可以更改目录和文件的权限,使用chmod命令可以更改文件或目录的权限,一般有字符法和数字法两种。
(1)字符法
chmod [ugoa] [+-=] [rwx] [文件或目录]
- $chmod o+w my.txt //my.txt文件的其他人增加读权限
- $chmod ug+w,o-w my.txt //my.txt文件的属主和属组增加写权限,其他人去除写权限
- $chmod +w my.txt //my.txt文件的所有用户增加写权限
(2)数字法
chmod nnn [文件或目录]
nnn为3位八进制数
- 如数字777表示为111 111 111 即rwxrwxrwx;664表示为110 110 100 即rw-rw-r
[flora@localhost fd3]$ ll test10.my
-rw-rw-r--. 1 flora flora 3001 3月 13 07:00 test10.my
[flora@localhost fd3]$ chmod 777 test10.my //为所有用户添加所有权限
[flora@localhost fd3]$ ll test10.my
-rwxrwxrwx. 1 flora flora 3001 3月 13 07:00 test10.my
[flora@localhost fd3]$ ll test12.my
-rw-rw-r--. 1 flora flora 0 3月 13 06:18 test12.my
[flora@localhost fd3]$ chmod o+w test12.my //为其他人添加写权限
[flora@localhost fd3]$ ll test12.my
-rw-rw-rw-. 1 flora flora 0 3月 13 06:18 test12.my
实例:开辟一个公共子目录/home/public,让它被所有的用户共享,而且拥有所有权限,但不能被非属主删除
[root@localhost ~]#mkdir /home/public
[root@localhost ~]#chmod o+rwxt /home/public
也可使用命令#chmod 777 /home/public 、 #chmod o+t /home/public或 #chmod 1777 /home/public
//其中t为粘滞位,粘滞位主要用途:为公共目录(例如,权限为777的)设置,权限字符为“t”, 用户不能删除该目录中其他用户的文件。
4、chown :修改文件的拥有者和从属用户组属性
必要参数:
-c 显示更改的部分的信息
-f 忽略错误信息
-h 修复符号链接
-R 处理指定目录以及其子目录下的所有文件
-v 显示详细的处理信息
-deference 作用于符号链接的指向,而不是链接文件本身
实例:
- 将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup : chown runoob:runoobgroup file1.txt
- 将当前目录下的所有文件与子目录的拥有者皆设为 runoob,群体使用者 runoobgroup: chown -R runoob:runoobgroup *