第1章 文件管理
文件及目录管理
- ls: 列出目录
- cd:切换目录
- pwd:显示目前的目录
- mkdir:创建一个新的目录
- rmdir:删除一个空的目录
- cp: 复制文件或目录
- rm: 移除文件或目录
- mv: 移动文件与目录,或修改文件与目录的名称
- find locate:文件的查询和检索:
- cat head tail more: 查看文件内容:
- 管道和重定向: ; | && > >>
- 打包 tar -cvf
- 解包 tar -xvf
- 压缩 gzip bzip zip 7z
- 解压缩 gunzip,bunzip,unzip
- 写出命令以及主要的参数说明,具体内容查看参考手册。
1 文件目录操作
ls:列出目录
简介:
在Linux系统当中, ls 命令可能是最常被运行的。
语法:
1 | [root@www ~]# ls [-aAdfFhilnrRSt] 目录名称 |
选项:
- -a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
- -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
- -l :长数据串列出,包含文件的属性与权限等等数据;(常用)
实例:
1 | # 将家目录下的所有文件列出来(含属性与隐藏档) |
cd:切换目录
简介:
cd是Change Directory的缩写,这是用来变换工作目录的命令。
语法:
1 | cd [相对路径或绝对路径] |
实例:
1 | #使用 mkdir 命令创建 runoob 目录 |
pwd:显示目前所在的目录
简介:
pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。
1 | [root@www ~]# pwd [-P] |
选项:
- -P :显示出确实的路径,而非使用连结 (link) 路径。
实例:
1 | [root@www ~]# pwd |
mkdir (创建新目录)
简介:
如果想要创建新的目录的话,那么就使用mkdir (make directory)吧。
语法:
1 | mkdir [-mp] 目录名称 |
选项:
- -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
- -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
1 | # 请到/tmp底下尝试创建数个新目录看看: |
rmdir (删除空的目录)
语法:
1 | rmdir [-p] 目录名称 |
选项:
- -p :连同上一级『空的』目录也一起删除
实例:
1 | 删除 runoob 目录 |
cp (复制文件或目录)
简介:
cp 即拷贝文件和目录。
语法:
1 | [root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination) |
选项:
- -a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
- -d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
- -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
- -i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
- -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
- -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
- -r:递归持续复制,用於目录的复制行为;(常用)
- -s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
- -u:若 destination 比 source 旧才升级 destination !
实例:
1 | 用 root 身份,将 root 目录下的 .bashrc 复制到 /tmp 下,并命名为 bashrc |
rm (移除文件或目录)
语法:
1 | rm [-fir] 文件或目录 |
选项与参数:
- -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
- -i :互动模式,在删除前会询问使用者是否动作
- -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
实例:
1 | 将刚刚在 cp 的实例中创建的 bashrc 删除掉! |
mv (移动文件与目录,或修改名称)
语法:
1 | [root@www ~]# mv [-fiu] source destination |
选项:
- -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
- -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
- -u :若目标文件已经存在,且 source 比较新,才会升级 (update)
实例:
1 | 复制一文件,创建一目录,将文件移动到目录中 |
2 文件查找
find
简介:
搜寻文件或目录:
实例:
1 | $find ./ -name "core*" | xargs file |
查找目标文件夹中是否有obj文件:
1 | $find ./ -name '*.o' |
递归当前目录及子目录删除所有.o文件:
1 | $find ./ -name "*.o" -exec rm {} \; |
查看当前目录下文件个数:
1 | $find ./ | wc -l |
locate
简介:
find是实时查找,如果需要更快的查询,可试试locate;locate会为文件系统建立索引数据库,如果有文件更新,需要定期执行更新命令来更新索引库:
语法:
1 | $locate string |
3 文件内容
cat
简介:
由第一行开始显示文件内容
语法:
1 | cat [-AbEnTv] |
选项与参数:
- -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
- -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
- -E :将结尾的断行字节 $ 显示出来;
- -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
- -T :将 [tab] 按键以 ^I 显示出来;
- -v :列出一些看不出来的特殊字符
实例:
1 | 检看 /etc/issue 这个文件的内容: |
tac
简介:
tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!如:
语法:
1 | [root@www ~]# tac /etc/issue |
nl
简介:
显示行号
语法:
1 | nl [-bnw] 文件 |
选项与参数:
- -b :指定行号指定的方式,主要有两种:
- -b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
- -b t :如果有空行,空的那一行不要列出行号(默认值);
- -n :列出行号表示的方法,主要有三种:
- -n ln :行号在荧幕的最左方显示;
- -n rn :行号在自己栏位的最右方显示,且不加 0 ;
- -n rz :行号在自己栏位的最右方显示,且加 0 ;
- -w :行号栏位的占用的位数。
实例:
1 | 实例一:用 nl 列出 /etc/issue 的内容 |
more
简介:
一页一页翻动
语法:
1 | [root@www ~]# more /etc/man_db.config |
选项:
- 空白键 (space):代表向下翻一页;
- Enter :代表向下翻『一行』;
- /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
- :f :立刻显示出档名以及目前显示的行数;
- q :代表立刻离开 more ,不再显示该文件内容。
- b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
less
简介:
一页一页翻动,以下实例输出/etc/man.config文件的内容:
语法:
1 | [root@www ~]# less /etc/man.config |
选项:
- 空白键 :向下翻动一页;
- [pagedown]:向下翻动一页;
- [pageup] :向上翻动一页;
- /字串 :向下搜寻『字串』的功能;
- ?字串 :向上搜寻『字串』的功能;
- n :重复前一个搜寻 (与 / 或 ? 有关!)
- N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
- q :离开 less 这个程序;
head
简介:
取出文件前面几行
语法:
1 | head [-n number] 文件 |
选项与参数:
- -n :后面接数字,代表显示几行的意思
实例:
1 | [root@www ~]# head /etc/man.config |
tail
简介:
取出文件后面几行
语法:
1 | tail [-n number] 文件 |
选项与参数:
- -n :后面接数字,代表显示几行的意思
- -f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测
1 | [root@www ~]# tail /etc/man.config |
$diff file1 file2
1 | 动态显示文本最新信息: |
使用egrep查询文件内容:
1 | egrep '03.1\/CO\/AE' TSF_STAT_111130.log.012 |
4 链接(快捷方式)
Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln 命令产生硬链接。
硬连接
硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。
硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
软连接
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
实验
1 | [oracle@Linux]$ touch f1 #创建一个测试文件f1 |
从上面的结果中可以看出,硬连接文件 f2 与原文件 f1 的 inode 节点相同,均为 9797648,然而符号连接文件的 inode 节点不同。
1 | [oracle@Linux]$ echo "I am f1 file" >>f1 |
通过上面的测试可以看出:当删除原始文件 f1 后,硬连接 f2 不受影响,但是符号连接 f1 文件无效
总结
依此您可以做一些相关的测试,可以得到以下全部结论:
- 删除符号连接f3,对f1,f2无影响;
- 删除硬连接f2,对f1,f3也无影响;
- 删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;
- 同时删除原文件f1,硬连接f2,整个文件会真正的被删除。
5 管道和重定向
1 | 批处理命令连接执行,使用 | |
与上述相同效果的是:
1 | if ls /proc; then echo suss; else echo fail; fi |
重定向:
1 | ls proc/*.c > list 2> &l 将标准输出和标准错误重定向到同一文件; |
等价的是:
1 | ls proc/*.c &> list |
清空文件:
1 | :> a.txt |
重定向到文件的末尾
1 | echo aa >> a.txt |
6 打包压缩
打包/ 压缩
在linux中打包和压缩和分两步来实现的;
- 打包是将多个文件归并到一个文件:
1 | tar -cvf etc.tar /etc <==仅打包,不压缩! |
用tar实现文件夹同步,排除部分文件不同步:
1 | tar --exclude '*.svn' -cvf - /path/to/source | ( cd /path/to/target; tar -xf -) |
- 压缩,生成 demo.txt.gz
1 | $gzip demo.txt |
解包/解压缩
解包
1 | tar -xvf demo.tar |
解压后缀为 .tar.gz的文件
- 解压缩
1 | $gunzip demo.tar.gz |
- 解包:
1 | $tar -xvf demo.tar |
bz2解压解包:
1 | tar jxvf demo.tar.bz2 |
如果tar 不支持j,则同样需要分两步来解包解压缩,使用bzip2来解压,再使用tar解包:
1 | bzip2 -d demo.tar.bz2 |
tar解压参数说明:
1 | -z 解压gz文件 |
7 属性修改
chgrp:更改文件属组
语法:
1 | chgrp [-R] 属组名 文件名 |
参数选项:
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
chown:更改文件属主,也可以同时更改文件属组
语法:
1 | chown [–R] 属主名 文件名 |
chmod
Linux文件属性有两种设置方法,一种是数字,一种是符号。
Linux文件的基本权限就有九个
- 三种身份:owner/group/others
- 三种权限:read/write/execute
各权限的分数对照表如下:
- r:4、w:2、x:1
1 | chmod [-R] xyz 文件或目录 |










