mv命令来自英文单词move的缩写,中文译为“移动”,其功能与英文含义相同,能够对文件进行剪切和重命名操作。这是一个被高频使用的文件管理命令,需要留意它与复制命令的区别。cp命令是用于文件的复制操作,文件个数是增加的,而mv则为剪切操作,也就是对文件进行移动(搬家)操作,文件位置发生变化,但总个数并无增加。
在同一个目录内对文件进行剪切的操作,实际上应理解成重命名操作。
mv 参数 源文件名 目标文件名
常用参数:
-b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
-i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
-f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
-n: 不要覆盖任何已存在的文件或目录。
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
将文件 aaa 改名为 bbb :
mv aaa bbb
将 info 目录放入 logs 目录中。注意,如果 logs 目录不存在,则该命令将 info 改名为 logs。
mv info/ logs
将 /usr/runoob 下的所有文件和目录移到当前目录下:
mv /usr/runoob/* .
ls命令来自英文单词list的缩写,中文译为“列出”,其功能是显示目录中的文件及其属性信息,是最常使用的Linux命令之一。
默认不添加任何参数的情况下,ls命令会列出当前工作目录中的文件信息,常与cd或pwd命令搭配使用,十分方便。带上参数后,我们可以做更多的事情。作为最基础、最频繁使用的命令,有必要仔细了解其常用功能。
ls 参数 文件名
常用参数 :
列出根目录()下的所有目录:
# ls /
bin dev lib media net root srv upload www
boot etc lib64 misc opt sbin sys usr
home lost+found mnt proc selinux tmp var
将 /bin 目录以下所有目录及文件详细资料列出:
ls -lR /bin
当文件名包含空格、特殊字符或者开始字符为破折号时,可以使用反斜杠(\)进行转义,或者使用引号将文件名括起来。例如:
ls "my file.txt" # 列出文件名为"my file.txt"的文件
ls my\ file.txt # 列出文件名为"my file.txt"的文件
ls -- -filename # 列出文件名为"-filename"的文件
ls 命令还可以使用通配符进行模式匹配,例如 ***** 表示匹配任意字符,? 表示匹配一个字符,[...] 表示匹配指定范围内的字符。例如:
ls *.txt # 列出所有扩展名为.txt的文件
ls file?.txt # 列出文件名为file?.txt的文件,其中?表示任意一个字符
ls [abc]*.txt # 列出以a、b或c开头、扩展名为.txt的文件
列出目前工作目录下所有名称是 s 开头的文件,越新的排越后面:
ls -ltr s*
在使用 ls -l 命令时,第一列的字符表示文件或目录的类型和权限。其中第一个字符表示文件类型,例如:
在使用 ls -l 命令时,第一列的其余 9 个字符表示文件或目录的访问权限,分别对应三个字符一组的 rwx 权限。例如:
前三个字符表示所有者的权限,中间三个字符表示所属组的权限,后三个字符表示其他用户的权限。例如:
mv aaa bbb
0
表示文件名为file.txt的文件,所有者具有读写权限,所属组和其他用户只有读取权限。
cp命令来自英文单词copy的缩写,中文译为“复制”,其功能是复制文件或目录。cp命令能够将一个或多个文件或目录复制到指定位置,亦常用于文件的备份工作。-r参数用于递归操作,复制目录时若忘记添加则会直接报错;-f参数则用于当目标文件已存在时会直接覆盖而不再询问。这两个参数尤为常用。
mv aaa bbb
1
常用参数:
-r
或 --recursive
:用于复制目录及其所有的子目录和文件,如果要复制目录,需要使用该选项。-i
或 --interactive
:在复制前提示确认,如果目标文件已存在,则会询问是否覆盖,回答 y 时目标文件将被覆盖。。-u
或 --update
:仅复制源文件中更新时间较新的文件。-v
或 --verbose
:显示详细的复制过程。-p
或 --preserve
:保留源文件的权限、所有者和时间戳信息。-f
或 --force
:强制复制,即使目标文件已存在也会覆盖,而且不给出提示。将文件 file.txt 复制到目录 /path/to/destination/ 中:
mv aaa bbb
2
使用指令 cp 将当前目录 test/ 下的所有文件复制到新目录 newtest 下,输入如下命令:
mv aaa bbb
3
注意:用户使用该指令复制目录时,必须使用参数 -r 或者 -R 。
复制文件,并在目标文件已存在时进行确认:
mv aaa bbb
4
以上只是 cp 命令的一些常见用法,可以通过运行 man cp 命令查看更多选项和用法。
mkdir命令来自英文词组make directories的缩写,其功能是创建目录文件。该命令的使用简单,但需要注意,若要创建的目标目录已经存在,则会提示已存在而不继续创建,不覆盖已有文件。若目录不存在,但具有嵌套的依赖关系时,例如/Dir1/Dir2/Dir3/Dir4/Dir5,要想一次性创建则需要加入-p参数,进行递归操作。
mv aaa bbb
5
常用参数:
在工作目录下,建立一个名为 runoob 的子目录 :
mv aaa bbb
6
在工作目录下的 runoob2 目录中,建立一个名为 test 的子目录。若 runoob2 目录原本不存在,则建立一个。(注:本例若不加 -p 参数,且原本 runoob2 目录不存在,则产生错误。)
mv aaa bbb
7
pwd命令来自英文词组print working directory的缩写,其功能是显示当前工作目录的路径,即显示所在位置的绝对路径。
在实际工作中,我们经常会在不同目录之间进行切换,为了防止“迷路”,可以使用pwd命令快速查看当前所处的工作目录路径,方便开展后续工作。
mv aaa bbb
8
常用参数
查看当前所在目录:
mv aaa bbb
9
tar命令的功能是压缩和解压缩文件,能够制作出Linux系统中常见的tar、tar.gz、tar.bz2等格式的压缩包文件。对于RHEL 7、CentOS 7版本及以后的系统,解压缩时不添加格式参数(如z或j),系统也能自动进行分析并解压。把要传输的文件先压缩再传输,能够很好地提高工作效率,方便分享。
mv info/ logs
0
常用参数:
mv info/ logs
1
-c
: 创建新的归档文件-v
: 显示详细输出,列出被添加到归档中的文件-f
: 指定归档文件的名称mv info/ logs
2
-x
: 解压归档文件-v
: 显示详细输出,列出被解压的文件-f
: 指定要解压的归档文件的名称-c
: 创建新的归档文件-z
: 使用 gzip 压缩归档文件-v
: 显示详细输出,列出被添加到归档中的文件-f
: 指定归档文件的名称mv info/ logs
3
-t
: 列出归档文件中的内容-v
: 显示详细输出,列出归档文件中的所有文件和目录-f
: 指定要列出内容的归档文件的名称mv info/ logs
4
-r
: 向已存在的归档中追加文件-v
: 显示详细输出,列出被添加到归档中的文件-f
: 指定已存在的归档文件的名称mv info/ logs
5
-z
: 表示要使用 gzip 进行压缩。-c
: 表示创建新的归档文件。-v
: 表示详细输出,列出被添加到归档中的文件。-f archive.tar.gz
: 指定归档文件的名称为 archive.tar.gz
。mv info/ logs
6
-z
: 表示要使用 gzip 解压归档文件。-x
: 表示解压操作。-v
: 表示详细输出,列出被解压的文件。-f example.tar.gz
: 指定要解压的归档文件的名称为 example.tar.gz
。tar 可以结合不同的压缩程序来创建和解压压缩归档文件。
z : 使用 gzip 压缩。
mv info/ logs
7
j: 使用 bzip2 压缩。
mv info/ logs
8
J: 使用 xz 压缩。
mv info/ logs
9
cd命令来自英文词组change directory的缩写,其功能是更改当前所处的工作目录,路径可以是绝对路径,也可以是相对路径,若省略不写则会跳转至当前使用者的家目录。
mv /usr/runoob/* .
0
换到绝对路径:指定完整的目录路径来切换到目标目录。
mv /usr/runoob/* .
1
切换到相对路径:指定相对于当前目录的路径来切换到目标目录。
mv /usr/runoob/* .
2
切换到 /usr/bin/ 目录:
mv /usr/runoob/* .
3
切换到上级目录:使用 .. 表示上级目录,可以通过连续多次使用 .. 来切换到更高级的目录。
mv /usr/runoob/* .
4
切换到用户主目录(home):使用 ~ 表示当前用户的主目录,可以使用 cd 命令直接切换到主目录。
mv /usr/runoob/* .
5
切换到上次访问的目录:使用 cd - 可以切换到上次访问的目录。
mv /usr/runoob/* .
6
切换到环境变量指定的目录:可以使用环境变量来指定目标目录,并使用 cd 命令切换到该目录。
mv /usr/runoob/* .
7
chmod命令来自英文词组change mode的缩写,其功能是改变文件或目录权限的命令。默认只有文件的所有者和管理员可以设置文件权限,普通用户只能管理自己文件的权限属性。
设置权限时可以使用数字法,亦可使用字母表达式,对于目录文件,建议加入-R参数进行递归操作,这意味着不仅对于目录本身,而且也对目录内的子文件/目录进行新权限的设定。
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。
mv /usr/runoob/* .
8
mode : 权限设定字串,格式如下 :
mv /usr/runoob/* .
9
其中:
其他参数说明:
使用符号模式可以设置多个项目:who(用户类型),operator(操作符)和 permission(权限),每个项目的设置可以用逗号隔开。 命令 chmod 将修改 who 指定的用户类型对文件的访问权限,用户类型由一个或者多个字母在 who 的位置来说明,如 who 的符号模式表所示:
who | 用户类型 | 说明 |
---|---|---|
u |
user | 文件所有者 |
g |
group | 文件所有者所在组 |
o |
others | 所有其他用户 |
a |
all | 所有用户, 相当于 ugo |
operator 的符号模式表:
Operator | 说明 |
---|---|
+ |
为指定的用户类型增加权限 |
- |
去除指定用户类型的权限 |
= |
设置指定用户权限的设置,即将用户类型的所有权限重新设置 |
permission 的符号模式表:
模式 | 名字 | 说明 |
---|---|---|
r |
读 | 设置为可读权限 |
w |
写 | 设置为可写权限 |
x |
执行权限 | 设置为可执行权限 |
X |
特殊执行权限 | 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行 |
s |
setuid/gid | 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限 |
t |
粘贴位 | 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位 |
chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。历史上,文件权限被放在一个比特掩码中,掩码中指定的比特位设为1,用来说明一个类具有相应的优先级。
# | 权限 | rwx | 二进制 |
---|---|---|---|
7 | 读 + 写 + 执行 | rwx | 111 |
6 | 读 + 写 | rw- | 110 |
5 | 读 + 执行 | r-x | 101 |
4 | 只读 | r-- | 100 |
3 | 写 + 执行 | -wx | 011 |
2 | 只写 | -w- | 010 |
1 | 只执行 | --x | 001 |
0 | 无 | --- | 000 |
例如, 765 将这样解释:
将文件 file1.txt 设为所有人皆可读取 :
ls 参数 文件名
0
将文件 file1.txt 设为所有人皆可读取 :
ls 参数 文件名
1
将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
ls 参数 文件名
2
为 ex1.py 文件拥有者增加可执行权限:
ls 参数 文件名
3
将目前目录下的所有文件与子目录皆设为任何人可读取 :
ls 参数 文件名
4
此外chmod也可以用数字来表示权限如 :
ls 参数 文件名
5
语法为:
ls 参数 文件名
6
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。r=4,w=2,x=1
ls 参数 文件名
7
和
ls 参数 文件名
5
效果相同
ls 参数 文件名
9
和
# ls /
bin dev lib media net root srv upload www
boot etc lib64 misc opt sbin sys usr
home lost+found mnt proc selinux tmp var
0
效果相同
若用 chmod 4755 filename 可使此程序具有 root 的权限。
命令 |
说明 |
---|---|
chmod a+r *file* |
给file的所有用户增加读权限 |
chmod a-x *file* |
删除file的所有用户的执行权限 |
chmod a+rw *file* |
给file的所有用户增加读写权限 |
chmod +rwx *file* |
给file的所有用户增加读写执行权限 |
chmod u=rw,go= *file* |
对file的所有者设置读写权限,清空该用户组和其他用户对file的所有权限(空格代表无权限) |
chmod -R u+r,go-r *docs* |
对目录docs和其子目录层次结构中的所有文件给用户增加读权限,而对用户组和其他用户删除读权限 |
chmod 664 *file* |
对file的所有者和用户组设置读写权限, 为其其他用户设置读权限 |
chmod 0755 *file* |
相当于u=rwx (4+2+1),go=rx (4+1 & 4+1) 。0 没有特殊模式。 |
chmod 4755 *file* |
4 设置了设置用户ID位,剩下的相当于 u=rwx (4+2+1),go=rx (4+1 & 4+1)。 |
find path/ -type d -exec chmod a-x {} \; |
删除可执行权限对path/以及其所有的目录(不包括文件)的所有用户,使用'-type f'匹配文件 |
find path/ -type d -exec chmod a+x {} \; |
允许所有用户浏览或通过目录path/ |