首页 百科知识 文件目录的基本操作

文件目录的基本操作

时间:2022-10-05 百科知识 版权反馈
【摘要】:要对文件和目录进行相应操作及权限的设置, 必须先掌握文件目录和文件的基本操作命令, 再对其进行权限的设置。系统默认值为6。利用tar命令可将要备份保存的数据打包成一个扩展名为.tar的文件, 以便于保存。在释放解压tar包文件之前, 有时需要了解一下tar包中的文件目录列表, 此时可使用带-t参数的tar命令来实现。

【任务描述】

作为系统管理员仅仅对用户和用户组进行管理与维护是不够的, 还要对文件和目录进行相应操作及权限的设置。

【任务分析】

要对文件和目录进行相应操作及权限的设置, 必须先掌握文件目录和文件的基本操作命令, 再对其进行权限的设置。

【任务实施】

1. 文件目录操作命令的使用

(1) 查看当前的工作目录 (Print Working Directory) ——pwd命令。

pwd

#pwd

/root

(2) 改变工作目录 (Change Directory) ——cd命令。

基本用法:

cd目录名

进入指定的目录, 使该目录成为当前目录。

cd~或cd

进入当前用户的主目录, 使主目录成为当前目录。

cd..

返回上一级目录。 “..” 代表上一级目录, “.” 代表当前目录。

cd../../

返回上二级目录, 其余依次类推。

cd/

返回到根目录。

cd-

在最近访问过的两个目录之间快速切换。

cd~用户名

进入指定用户的主目录。

(3) 列表 (list) 显示目录内容——ls命令。

功能: 列出一个或多个目录下的文件或子目录列表。

该命令的语法格式为:

ls [选项] 文件名或目录名 [|more]

常用选项:

-a——显示所有子目录和文件的信息,包括名称以“.” 开头的隐藏目录和隐藏文件。

-A——与-a选项的作用类似,但不显示表示当前目录的“.” 和表示父目录的“..”。

-c——按文件的修改时间排序后予以显示。

-d——显示指定目录本身的信息,而不显示目录下的各个文件和子目录的信息。

-h——以更人性化的方式显示出目录或文件的大小, 默认的大小单位为字节, 使用-h选项后将显示为K、M等单位。此选项需要和-l选项结合使用才能体现出结果。

-l——以长格式显示文件和目录的详细信息,ls命令默认只显示名称的短格式。

-R——以递归的方式显示指定目录及其子目录中的所有内容。

(4) 创建新的目录 (makedirectory) ——mkdir命令。

功能: 创建新的目录。

该命令的语法格式为:

mkdir [-p] [/路径/]目录名

例如, 若要在root用户的主目录中创建一个mysoft目录, 则实现的命令为:

#mkdir ~/mysoft

-p——可快速创建出目录结构中指定的每个目录,对于已存在的目录不会被覆盖。

#mkdir -p /srv/www/images

该条命令等价于以下命令:

#mkdir /srv/www

#mkdir /srv/www/images

mkdir -p /1/2/3/4/5

(5) 统计目录及文件的空间占用情况——du命令。

功能: du命令用来查看某个目录中的各级子目录所占用的磁盘空间数。

该命令的语法格式为:

du [选项] [目录名]

如果不跟目录名, 则默认为当前目录。

du命令的常用选项有:

-a——统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录。

-s——只统计每个参数所占用空间总的大小,而不是统计每个子目录、文件的大小。

2. 文件操作命令的使用

(1) 复制 (copy) 文件或目录——cp命令。

功能: 目录或文件的复制。

该命令的语法格式为:

cp [选项] 源文件 目标文件

常用选项含义如下:

-a——通常在复制目录时使用。它保留链接、文件属性,并递归地复制目录。

-d——复制时保留链接。

-f——在覆盖已经存在的目标文件时不提示。

-i——在覆盖目标文件之前将给出提示要求用户确认, 回答 “y” 时目标文件将被覆盖, 是交互式复制。

-p——此时cp除复制源文件的内容外,还将其修改时间和访问权限也复制到新文件中。

-r——若给出的源文件是一目录文件, 此时cp将递归复制该目录下所有的子目录和文件。 此时目标文件必须为一个目录名。

-l——不作复制,只是链接文件。

(2) 移动 (move) 文件或目录——mv命令。

功能: 用于移动或重命名目录或文件。

该命令的格式如下:

mv [选项] 源目录或文件名 目标目录或文件名

①移动文件或目录。 若源路径与目标路径不同, 则移动目录或文件, 若源文件名或目录名与目标文件名或目录名也不相同, 则在移动过程中还会对其更名。

在移动时,若目标文件已存在,则会自动覆盖,除非使用-i选项。 若目标目录已存在,则将源目录连同该目录下面的子目录移动到目标目录中。

②更名文件或目录。 若路径相同, 仅文件名或目录名不相同, 则更名文件或目录。

#mv ~/mydoc/test.doc ~/mydoc/mywork.doc

(3) 删除 (remove) 文件或目录——rm命令。

功能: 删除文件或目录, 可包含一个或多个文件名 (各文件间用空格分隔) 或用通配符表达, 以实现删除多个文件或目录。

该命令的语法格式为:

rm [选项] 文件或目录名及路径

-f——在覆盖已经存在的目标文件时不提示。

-i——在覆盖目标文件之前将给出提示要求用户确认。 回答 “y” 时目标文件将被覆盖, 是交互式复制。

-r——递归删除整个目录树。

例如, 若要直接删除/root/mysoft目录树, 则实现命令为:

#rm -rf /root/mysoft

(4) 新建空文件——touch命令。

功能: 用于更新指定的文件或目录的访问和修改时间为当前系统的日期和时间。 若指定的文件不存在, 则以指定的文件名自动建一个空文件。

该命令的语法格式为:

touch 文件名列表

常用选项:

-d yyyymmdd——把文件的存取或修改时间改为yyyy年mm月dd日。

-a——只把文件的存取时间改为当前时间。

-m——只把文件的修改时间改为当前时间。

(5) 为文件或目录建立链接 (link) ——ln命令。

功能: 在不同的地方, 用到相同的文件或目录, 减少存储空间、 保证文件的一致性。

该命令的语法格式为:

ln[-s] 被链接的源文件或目录 链接文件或目标目录

s——建立符号链接文件 (省略此项则建立硬链接)。

符号链接: 指向原始文件所在的路径, 又称为软链接, 与Windows中的快捷方式类似。

硬链接: 指向原始文件对应的数据存储位置。

不能为目录建立硬链接文件。

硬链接与原始文件必须位于同一分区 (文件系统) 中。

#touch /tmp/test1.txt

#ln -s /tmp/test1.txt /test1.txt

(6) 查找可执行文件并显示所在位置——whereis命令。

功能: 寻找一个可执行文件所在的位置。 例如, 最常用的ls命令, 它是在/bin这个目录下的。 如果希望知道某个命令存在哪一个目录下可以使用whereis命令。

该命令的语法格式为:

whereis [选项] 命令名称

whereis命令的常用选项有:

-b——只查找二进制文件。

-m——只查找命令的联机帮助手册部分。

-s——只查找源代码文件。

(7) 查找文件或目录——find命令。

功能: 强大的文件和目录查找命令。

该命令的语法格式为:

find [路径] [查找条件表达式]

“查找条件表达式” 主要有以下几种类型:

-name 文件名——查找指定名称的文件。文件名中可使用“∗” 及 “?” 通配符。

-user 用户名——查找属于指定用户的文件。

-group 组名——查找属于指定组的文件。

-size n——查找大小为n块的文件, 一块为512B。 符号 “+n” 表示查找大小大于n块的文件;符号“-n” 表示查找大小小于n块的文件; 符号 “nc” 表示查找大小为n个字符的文件。

-inum n——查找索引节点号为n的文件。

-type 文件类型符——查找指定类型的文件。 文件类型符有f (普通文件)、 d (目录)、 b (块设备文件)、 c (字符设备文件)、 l (符号链接文件)、 p (管道文件) 等。

-perm mode——查找与给定权限匹配的文件,必须以八进制的形式给出访问权限。

-exec command {}\;——对匹配指定条件的文件执行command命令。

3. 文件内容浏览命令的使用

(1) 查看文本文件的内容——cat命令。

该命令的语法格式为:

cat [-n] 文件名列表

-n——在每行前加上行号。

文件名可使用通配符。

举例:

#cat /usr/share/doc/ppp-2.4.4/README

//显示当前系统的发行版本

#cat /etc/issue

Red Hat Enterprise Linux Serverrelease5.1(Tikanga)

Kernel \ronan \m

//显示当前系统使用的文件系统类型

#cat /proc/filesystems

(2) 分页查看文件内容——more和less命令。

功能: 分屏显示文件的内容。

该命令的语法格式为:

more|less 文件名

-N——在每行前加上行号。

交互操作方法:

•按Enter键向下逐行滚动。

•按空格键向下翻一屏、 按b键向上翻一屏。

•文件末尾时more会自动退出, less按q键退出。

less与more基本类似, 但个别操作会有些出入。

(3) 查看文件开头或末尾的部分内容——head和tail命令。

功能: 查看一个文件前面或后面部分的信息, 默认显示前面10行的内容, 也可指定要查看的行数。

该命令的语法格式为:

head|tail-要查看的行数 文件名

-f——实现不停地读取和显示文件的内容,以监视文件内容的变化。

(4) 统计文件内容中的单词数量 (wordcount) 等信息——wc命令。

功能: 计算并显示文件内容中包含的行数、 单词数、 字节数等信息。

该命令的语法格式为:

wc [选项] 文件名列表

常用选项:

-c——统计文件内容中的字节数。

-l——统计文件内容中的行数。

-w——统计文件内容中的单词个数。

(5) 检索、 过滤文件内容——grep命令。

功能: 在指定的文件中查找并显示含有指定字符串的行。

该命令的语法格式为:

grep [选项] 要找的字串 文本文件名

-i——查找时忽略大小写。

-v——反转查找,输出与查找条件不相符的行。

#grep alipay /var/log/maillog

例如, 在当前目录下的所有文件中查找输出包含alipay关键字的行, 命令为:

#grep alipay ∗

4. 文件压缩和归档命令的使用

(1) 制作压缩文件或解开已压缩文件——gzip命令。

该命令的语法格式为:

gzip [选项] 文件1或目录1 [文件2或目录2] ……

常用选项有:

-v——对每一个压缩和解压的文件,显示文件名和压缩比等提示信息。

-d——将压缩文件进行解压。

-r——递归式地查找指定目录,并压缩其中的所有文件或者是解压缩。

-num——用指定的数字num调整压缩的速度, -1或--fast表示最快压缩方法 (低压缩比), -9或--best表示最慢压缩方法(高压缩比)。系统默认值为6。

(2) 制作归档文件或释放已归档的文件——tar命令。

这是一种标准的文件打包格式。

利用tar命令可将要备份保存的数据打包成一个扩展名为.tar的文件, 以便于保存。 需要时再从.tar文件中恢复即可。

tar命令实现tar包的创建或恢复。

生成的tar包文件的扩展名为.tar。

负责将多个文件打包成一个文件, 但不压缩文件。

再配合其他压缩命令 (如gzip或bzip2), 来实现对tar包进行压缩或解压缩。

tar命令内置了相应的参数选项, 来实现直接调用相应的压缩、 解压缩命令, 以实现对tar文件的压缩或解压。

该命令的语法格式为:

tar 参数 目录或文件列表

常用参数:

-t——查看包中的文件列表。

-x——释放包。

-c——创建包。

-r——增加文件到包文档的末尾。

其他辅助功能参数:

-z——代表.gz格式的压缩包。

-j——代表.bz或.bz2格式的压缩包。

-f——用于指定包文件名。

-v——表示在命令执行时显示详细的提示信息。

-C——用于指定包解压释放到的目录路径,用法为: -C 目录路径名。

①创建tar包。

功能: 将指定的目录或文件打包成扩展名为.tar的包文件。

命令格式如下:

tar -cvf tar包文件名 要备份的目录或文件名列表

c——创建。

v——输出相关信息。

f——对普通文件操作。

例如, 将/etc目录下的文件打包成mylinux_etc.tar:

#tar -cvf mylinux_etc.tar /etc/∗

②创建压缩的tar包。

命令格式为:

tar -[z|j]cvf压缩的tar包文件名 要备份的目录或文件名

直接生成的tar包没有压缩, 为节省磁盘空间, 通常需要生成压缩格式的tar包文件, 此时可在tar命令中增加使用-z或-j参数,以调用gzip或bzip2程序对其进行压缩, 压缩后的文件扩展名分别为.gz、 bz或bz2。

例如, 将/etc目录下的文件打包并压缩为mylinux_etc.tar.gz, 则实现的命令为:

#tar -zcvf mylinux_etc.tar.gz /etc

在当前目录中就会生成mylinux_etc.tar.gz文件。

要打包并压缩为.bz2格式的压缩包, 则实现命令为:

#tar -jcvf mylinux_etc.tar.bz2 /etc

③查询tar包中文件列表。

命令语法格式为:

tar -t[z|j][v]f tar包文件名

在释放解压tar包文件之前, 有时需要了解一下tar包中的文件目录列表, 此时可使用带-t参数的tar命令来实现。

例如, 要查询mylinux_etc.tar中的文件目录列表的命令为:

#tar -tf mylinux_etc.tar

要显示文件列表中每个文件的详细情况,可增加使用-v参数:

#tar -tvf mylinux_etc.tar

要查看.gz压缩包中的文件列表,则还应增加使用-z参数:

#tar -tzvf mylinux_etc.tar.gz

若要查看.bz或.bz2格式的压缩包的文件列表,则应增加-j参数:

#tar -tjvf mylinux_etc.tar.bz2

④释放tar包。

tar -[z|j]xvf tar包文件名 [-C 目标位置]

x——释放tar包。

对.gz格式的压缩包,增加-z参数;对.bz或bz2格式的压缩包,增加-j参数。

释放软件包httpd-2.0.50.tar.gz的命令:

#tar -zxvf httpd-2.0.50.tar.gz -C /usr/src

释放软件包iptables-1.2.8.tar.bz2的命令:

#tar -jxvf iptables-1.2.8.tar.bz2

tar命令的参数前也可不要“-”。

要解压缩zip文件, 则直接使用unzip命令。 例如:

#unzip mysoft.zip

5. 设置文件和目录的一般权限

(1) 修改文件或目录的权限—chmod (changemode) 命令。

格式1:

chmod [-选项][ugoa] [+-=] [rwx] 文件或目录……

格式2:

chmod [-选项] nnn 文件或目录……

只有文件或目录的拥有者或root用户才有更改权。

-R——可递归设置指定目录下的全部文件。

权限值的两种表示方法:

•使用3位的八进制数表示。

•使用字符串表示。

①权限值的表示方法1——使用3位的八进制数表示。

例如,myfile.txt文件目前的权限为rw-r--r--,若要更改为rw-rw-r--,其命令为:

#chmod 664 /home/liyang/myfile.txt

rwx表示的权限 二进制数表示 权限的八进制数表示 权限含义

--- 000 0 无任何权限

--x 001 1 可执行

-w- 010 2 可写

-wx 011 3 可写和可执行

r-- 100 4 可读

r-x 101 5 可读和可执行

rw- 110 6 可读和可写

rwx 111 7 可读、 可写和可执行

②权限值的表示方法2——使用字符串表示。

chmod [-R]{[ugoa][+-=][rwxst]} <文件名或目录名>

用户对象+| -| =权限符

用户对象:

u——拥有者。

g——拥有者所属的用户组。

o——其他用户。

a——所有的。

+——增加某项权限。

-——去掉某项权限。

=——赋予某项权限。

权限符——r、 w、 x、 s。

若通过r、 w、 x、 s表示方式来更改权限, 则只需在chmod命令中表达出权限需要改变的部分即可, 该方法可视为相对修改法。

(2) 修改文件或目录的属主和属组—chown (changeowner) 命令。

修改文件或目录的拥有者。

chown [-选项] 新属主[:[新属组]] 被改变归属的文件或目录

-R——可递归设置指定目录下的全部文件 (包括子目录和子目录中的文件) 的所属关系。

用空格分隔列表中多个文件名或目录名。

例如, 若要设置/var/software目录的属主为angel用户和angel用户组, 则设置方法为:

#chown angel.angel /var/software

例如,假设~/setup.sh文件的权限当前为rw-rw-r--:

若要修改为rw-r-----,则更改命令为:

#chmod g-w ~/setup.sh

#chmod o-r ~/setup.sh

若要给其他用户增加读的权限, 则命令为:

chmod o+r ~/setup.sh

若要同时去掉用户组和其他用户对该文件的读权限, 则实现命令为:

chmod go-r ~/setup.sh

若文件拥有者、 用户组和其他用户都只赋予读的权限, 则实现命令为:

chmod ugo=r ~/setup.sh

(3) 设置文件和目录的特殊权限。

为文件或目录添加3种特殊权限同样可以通过chmod命令来实现, 使用 “u±s” “g±s”“o±t” 的字符权限模式分别用于添加和移除SUID、 GUID、 sticky权限。 若使用数字形式的权限模式, 可采用 “nnnn” 格式的4位八进制数字表示, 其中, 后面3位是一般权限的数字表示, 前面第一位则是特殊权限的标志数字, 0表示不设置特殊权限, 1表示只设置sticky,2表示只设置GUID权限, 3表示只设置SUID和sticky权限, 4表示只设置SUID权限,5表示只设置SUID和sticky权限, 6表示只设置SUID和SGID权限, 7表示同时设置SUID、 GUID、 sticky这3种权限。

(4) 设置新建文件或目录的默认权限。

在Linux系统中, 当用户创建一个新的文件或目录时, 系统都会为新建的文件或目录分配默认的权限, 该默认权限并不是继承了上级目录的权限, 而是与umask值 (称为权限掩码) 有关, 其具体关系是:

新建文件的默认权限=0666-umask值

新建目录的默认权限=0777-umask值

6. vim文本编辑器的使用

vi (visual interface) 是Linux和UNIX中功能最为强大的全屏幕文本编辑器, 而不只是一个排版程序。

vim没有菜单, 只有命令, 且命令繁多。 只要在命令行上输入vim就可进入vim的编辑环境。

(1) 启动vim编辑器。

vim文件名

vim

启动vi编辑器, 并自动进入命令模式。

(2) 切换vim的工作模式。

命令模式 (Command mode) 供用户执行命令, 以对文档进行管理。 不管用户当前处于何种模式, 只要按Esc键, 则立即进入命令模式。

输入模式 (Insert mode) 可输入内容。

末行模式 (Last line mode) 让用户做一些与输入文字无关的事, 如搜索替换字符、 保存文件或结束编辑等,如图2-4所示。

命令模式下的常用命令如表2-5所示。

图2-4 vim工作模式间的切换

表2-5 命令模式下的常用命令

续表

末行模式中的基本操作如表2-6所示。

表2-6 末行模式下的常用命令

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈