Linux基础教程(二)

163 阅读10分钟

目录及其操作

一、常用目录操作命令

1.1、mkdir命令(用来创建目录)

mkdir (选项) dirname

常用选项:
-Z:设置安全上下文,当使用SELinux时有效;
-m<目标属性>或--mode<目标属性>建立目录的同时设置目录的权限;
-p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;

1.2、rmdir命令(用来删除空目录)

rmdir(选项) dirname

常用选项:
-p或--parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;
--ignore-fail-on-non-empty:此选项使rmdir命令忽略由于删除非空目录时导致的错误信息;
-v或-verboes:显示命令的详细执行过程。

1.3、cd命令(切换用户当前工作目录)

cd dirname

常用选项:
cd     # 进入用户主目录;
cd /   # 进入根目录
cd ~   # 进入用户主目录;
cd ..   # 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);
cd ../..   # 返回上两级目录;
cd !$   # 把上个命令的参数作为cd参数使用。

1.4、pwd命令(显示当前工作目录)

一般直接使用

1.5、ls命令(显示目录内容列表)

ls [选项] [文件名]

常用选项:
-C     # 多列输出,纵向排序。
-F     # 每个目录名加 "/" 后缀,每个 FIFO 名加 "|" 后缀, 每个可运行名加“ * ”后缀。
-R     # 递归列出遇到的子目录。
-a     # 列出所有文件,包括以 "." 开头的隐含文件。
-c     # 使用“状态改变时间”代替“文件修改时间”为依据来排序(使用“-t”选项时)或列出(使用“-l”选项时)。
-d     # 将目录名象其它文件一样列出,而不是列出它们的内容。
-i     # 输出文件前先输出文件系列号(即 i 节点号: i-node number)。 

-l     #列出(以单列格式)文件类型与权限,文件的链  接数,所有者名,组名,文件大小(以字节为单位),时间
信息(建立或最近修改的实际),及文件名。

如:-rw-r--r-- 2 wzm group 808 10.1 2019 myfile
文件类型与权限中,
(1)第一个字符表示文件类型
- 普通文件
d 目录
b 块设备文件
c 字符设备文件
l 符合链接文件
s 套接字文件(socket)
p 命名管道文件(pipe)

(2)随后九个字符表示文件的存取权限
r 读
w 写
x 执行
s 当文件被执行,把该文件的UID或GID赋予执行进程的UID或GID
t 设置粘着标志位(留着内存,不被换出)
- 没有设置权限

-r     # 逆序排列。
-t     # 按时间信息排序。
-u     # 使用最近访问时间代替最近修改时间为依据来排序(使用“-t”选项时)或列出(使用“-l”选项时)。
-1     # 单列输出。
-a, --all # 列出目录中所有文件,包括以“.”开头的文件。
-b, --escape # 把文件名中不可输出的字符用反斜杠加字符编号(就象在 C 语言里一样)的形式列出。
-c, --time=ctime, --time=status
  # 按文件状态改变时间(i节点中的ctime)排序并输出目录内
  # 容。如采用长格式输出(选项“-l”),使用文件的状态改
  # 变时间取代文件修改时间。【译注:所谓文件状态改变(i节
  # 点中以ctime标志),既包括文件被修改,又包括文件属性( 如所有者、组、链接数等等)的变化】
-d, --directory
  # 将目录名象其它文件一样列出,而不是列出它们的内容。
-f    #  不排序目录内容;按它们在磁盘上存储的顺序列出。同时启 动“ -a ”选项,如果在“ -f ”之前存在“ -l
  # ”、“ - -color ”或“ -s ”,则禁止它们。
-k, --kilobytes
  # 如列出文件大小,则以千字节KB为单位。
-m, --format=commas
  # 水平列出文件,每行尽可能多,相互用逗号和一个空格分隔。
-n, --numeric-uid-gid
  # 列出数字化的 UID 和 GID 而不是用户名和组名。
-o    #  以长格式列出目录内容,但是不显示组信息。等于使用“         --format=long          --no-group
  # ”选项。提供此选项是为了与其它版本的 ls 兼容。
-p    #  在每个文件名后附上一个字符以说明该文件的类型。类似“ -F ”选项但是不 标示可执行文件。
-q, --hide-control-chars
  # 用问号代替文件名中非打印的字符。这是缺省选项。
-r, --reverse
  # 逆序排列目录内容。
-s, --size
  # 在每个文件名左侧输出该文件的大小,以    1024   字节的块为单位。如果设置了   POSIXLY_CORRECT
  # 的环境变量,除非用“ -k ”选项,块大小是 512 字节。
-t, --sort=time
  # 按文件最近修改时间( i 节点中的 mtime )而不是按文件名字典序排序,新文件 靠前。
-u, --time=atime, --time=access, --time=use
  # 类似选项“    -t    ”,但是用文件最近访问时间(    i     节点中的     atime     )取代文件修
  # 改时间。如果使用长格式列出,打印的时间是最近访问时间。
-w, --width cols
   # 假定屏幕宽度是      cols      (      cols     以实际数字取代)列。如未用此选项,缺省值是这
   # 样获得的:如可能先尝试取自终端驱动,否则尝试取自环境变量          COLUMNS          (如果设
   # 置了的话),都不行则取 80 。
-x, --format=across, --format=horizontal
   # 多列输出,横向排序。
-A, --almost-all
   # 显示除 "." 和 ".." 外的所有文件。
-B, --ignore-backups
   # 不输出以“ ~ ”结尾的备份文件,除非已经在命令行中给出。
-C, --format=vertical
   # 多列输出,纵向排序。当标准输出是终端时这是缺省项。使用命令名 dir 和 d 时, 则总是缺省的。
-F, --classify, --file-type
   # 在每个文件名后附上一个字符以说明该文件的类型。“  * ”表示普通的可执行文件; “ / ”表示目录;“
   # @ ”表示符号链接;“ | ”表示FIFOs;“ = ”表示套接字 (sockets) ;什么也没有则表示普通文件。
-G, --no-group
   # 以长格式列目录时不显示组信息。
-I, --ignorepattern
   # 除非在命令行中给定,不要列出匹配shell文件名匹配式(pattern ,不是指一般
   # 表达式)的文件。在shell中,文件名以"."起始的不与在文件名匹配式(pattern)
   # 开头的通配符匹配。
-L, --dereference
   # 列出符号链接指向的文件的信息,而不是符号链接本身。
-R, --recursive
   # 递归列出全部目录的内容。
-S, --sort=size
   # 按文件大小而不是字典序排序目录内容,大文件靠前。

二、连接文件的命令

2.1、ln命令(用来为文件创建链接)

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

常用选项:
--backup[=CONTROL]  为每个已存在的目标文件创建备份文件
-b        类似--backup,但不接受任何参数
-d, -F, --directory   创建指向目录的硬链接(只适用于超级用户)
-f, --force     强行删除任何已存在的目标文件
-i, --interactive           覆盖既有文件之前先询问用户;
-L, --logical               取消引用作为符号链接的目标
-n, --no-dereference        把符号链接的目的目录视为一般文件;
-P, --physical              直接将硬链接到符号链接
-r, --relative              创建相对于链接位置的符号链接
-s, --symbolic              对源文件建立符号链接,而非硬链接;
-S, --suffix=SUFFIX         用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的备份字符串是符号“~”,用户可通过“-S”参数来改变它;
-t, --target-directory=DIRECTORY  指定要在其中创建链接的DIRECTORY
-T, --no-target-directory   将“LINK_NAME”视为常规文件
-v, --verbose               打印每个链接文件的名称

三、改变文件或目录存取权限

3.1、chmod命令(用来变更文件或目录的权限)

chmod [OPTION]... MODE[,MODE]... FILE...

用途:
通过符号组合的方式更改目标文件或目录的权限。
通过八进制数的方式更改目标文件或目录的权限。
通过参考文件的权限来更改目标文件或目录的权限。

常用选项:
-c, --changes:当文件的权限更改时输出操作信息。
--no-preserve-root:不将'/'特殊化处理,默认选项。
--preserve-root:不能在根目录下递归操作。
-f, --silent, --quiet:抑制多数错误消息的输出。
-v, --verbose:无论文件是否更改了权限,一律输出操作信息。
--reference=RFILE:使用参考文件或参考目录RFILE的权限来设置目标文件或目录的权限。
-R, --recursive:对目录以及目录下的文件递归执行更改权限操作。

【MODE】使用:
u符号代表当前用户。
g符号代表和当前用户在同一个组的用户,以下简称组用户。
o符号代表其他用户。
a符号代表所有用户。
r符号代表读权限以及八进制数4。
w符号代表写权限以及八进制数2。
x符号代表执行权限以及八进制数1。
X符号代表如果目标文件是可执行文件或目录,可给其设置可执行权限。
s符号代表设置权限suid和sgid,使用权限组合u+s设定文件的用户的ID位,g+s设置组用户ID位。
t符号代表只有目录或文件的所有者才可以删除目录下的文件。
+符号代表添加目标用户相应的权限。
-符号代表删除目标用户相应的权限。
=符号代表添加目标用户相应的权限,删除未提到的权限。

注意:chmod命令行可以用多个MODE项,但各项间必须以逗号隔开

3.2、umask命令(显示或设置创建文件的权限掩码)

umask [-p] [-S] [mode]

常用选项:
-p:当没有参数时指定该选项,执行产生的输出格式可复用为输入;
-S(大写):以符号组合的方式输出创建文件的权限掩码,不使用该选项时以八进制数的形式输出。

四、改变用户组和文件主

4.1、chgrp命令(用来变更文件或目录的所属群组)

chgrp [选项][组群][文件|目录]

常用选项:
-R 递归式地改变指定目录及其下的所有子目录和文件的所属的组
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quiet或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不是该其他任何相关文件;
-H如果命令行参数是一个通到目录的符号链接,则遍历符号链接
-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
-L遍历每一个遇到的通到目录的符号链接
-P不遍历任何符号链接(默认)
-v或——verbose:显示指令执行过程;
--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。

4.2、chown命令(用来变更文件或目录的拥有者或所属群组)

chown(选项)(参数)

常用参数:

-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quite或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;
-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——version:显示指令执行过程;
--dereference:效果和“-h”参数相同;
--reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同。