Linux03 一 文件与目录管理

$PATH

  输入 ls 时,无论位于哪个目录,系统都能准确找到并执行 /bin/ls ,这是因为环境变量 PATH 保存了命令 ls 的目录路径,系统在 PATH 定义的目录下查找名为 ls 的可执行文件。如果含有多个名为 ls 的可执行文件,则优先执行最先被查找到的同名指令。

  echo 指令可以打印字符串,在 PATH 前加 $ 可以获取 PATH 定义的变量。执行 echo $PATH 可以打印 PATH 当前定义的目录:

1

  PATH 变量的内容是由一些目录组成,每个目录之间通过冒号 : 分隔,且目录有顺序之分。/usr/binPATH 变量内,所以能在任何地方执行 ls 来找到 /bin/ls 文件。如果想添加路径到 PATH 内,例如将 /home/wcy 添加到 PATH,可以执行 PATH="${PATH}:/home/wcy"

2

  不同身份的用户默认的 PATH 不同,默认能随意执行的命令也不同。执行命令时使用绝对路径指定某个命令会比系统查找 PATH 准确。. 目录最好不要放到 PATH 中,因为如果有用户在所有人都可以访问的目录写了恶意程序,并命名为常用指令的名称,位于当前目录就有可能中招。


目录的操作

cd

  cd(change directory)的作用是切换工作目录,目录名称和 cd 命令之间存在一个空格。有几个特殊目录:. 代表此层目录,.. 代表上一层目录,- 代表前一个目录,~ 代表当前用户的家目录,~account 代表 account 用户的家目录。在所有的目录下都会有 ... 目录。

cd [相对路径或绝对路径]
cd ~wcy					# 代表进入用户 wcy 的家目录
cd ~					# 代表进入自己的家目录
cd						# 没有加上路径,也是进入自己的家目录
cd ..					# 去到上层目录
cd -					# 回到刚刚的目录

pwd

  pwd(print working directory)是显示目前所在路径的命令,很多软件使用的目录名相同,为了避免弄错目录,可以输入 pwd 命令。

pwd [-P]
选项与参数:
-P  :显示真正的路径,而非使用链接(link)路径

3

  /bin/usr/bin 的链接文件,使用 -P 选项能显示正确的目录名称。

mkdir

  mkdir(make directory)可以建立新的目录,默认情况下需要一层一层的建立目录,加上 -p 选项可以让系统自动逐层建立目录,如果目录存在系统也不会显示错误信息。

mkdir [-mp] 目录名称
选项与参数:
-m  :设置文件的权限,不使用默认权限(umask)
-p  :直接将需要的目录(包括上层目录)递归创建。

  创建 test1/test2 的目录,原先不存在 test1 目录,所以 mkdir test1/test2 命令会报错,通过 mkdir -p test1/test2 可以自动建立 test1 目录,然后建立 test2 目录。

4

  一般用户新建目录的权限默认为 775,这与 umask 有关。如果想创建文件夹时修改权限,可以通过 -m 设置文件夹的权限。例如新建一个目录 test3 并赋予 711 的权限,输入命令 mkdir -m 711 test3

5

rmdir

  rmdir(remove directory) 删除旧有的目录,可以使用 rmdir。目录需要一层一层的删除,被删除的目录里不能存在其他的目录与文件。如果要删除目录下所有东西,需要使用 rm -r 目录名

rmdir [-p] 目录名称
选项与参数:
-p  :连同上层“空”的目录一起删除

  对于 test1/test2 目录结构,可以使用 rmdir -p test1/test2 命令。删除 test1/test2 目录后 test1 目录为空,因为有 -p 选项所以会连同此时的空目录 test1 一同删除。也可以通过 rm -r test1 直接删除 test1 目录,不过 rmdir 命令会安全一些。

6


文件与目录管理

ls

  ls 命令是经常会执行的命令,执行命令时默认会显示非隐藏的文件名,以文件名进行排序并显示文件名代表的颜色。

ls [-aAdfFhilnrRSt] 文件名或目录结构
ls [--color={never,auto,always}] 文件名或目录名称
ls [--full-time] 文件名或目录名称
选项与参数:
-a  :全部的文件,连同隐藏文件(开头为 . 的文件)一起列出
-A  :全部的文件,连同隐藏文件,但不包括 ... 这两个目录
-d  :仅列出目录本身,不列出目录内的文件数据
-f  :直接列出结果,不进行排序(ls 默认以文件名排序)
-F  :根据文件、目录等信息,给予附加数据结构
	*:可执行文件  /:目录  =:socket文件  |:FIFO文件
-h  :将文件容量以 GB、KB 等方式列出来
-i  :列出 inode 号码
-l  :显示详细信息,包含文件的属性与权限等数据
-n  :列出 UID 与 GID 代替使用者与用户组的名称
-r  :将排序结果反向输出
-R  :连同子目录内容一起列出
-S  :以文件容量大小排序
-t  :以时间排序
--color=never   :不要依据文件特性显示颜色
--color=always  :显示颜色
--color=auto    :让系统自行依据设置判断是否显示颜色
--full-time     :以完整时间模式输出
--time=(atime,ctime)  :输出 access 时间或改变权限属性时间(ctime)

  例如使用 ls -alF --color=never 命令,不显示颜色,显示文件类型。

7

  因为 ls 常会用到 -l 的选项,很多 Linux 发行版都会将 ll 设置成 ls -l 的意思。这是 Bash shell 的 alias 功能。


cp

  复制文件可以使用 cp (copy)命令,cp 命令还可以建立链接文件(快捷方式),对比文件予以更新以及复制目录等功能。

cp [-adfilprsu] 源文件(source) 目标文件(destination)
cp [options] source1 source2 source3 ... directory
选项与参数:
-a  :相当于 -dr --preserve=all
-d  :若源文件为链接文件,则复制链接文件属性而非文件本身
-f  :若目标文件已存在且无法打开和删除,可以强制复制到现有的目标文件
-i  :若目标文件已存在,覆盖时会先询问操作
-l  :建立硬链接的链接文件,而非复制文件本身
-p  :连同文件的属性一起复制,而非使用默认属性
-r  :递归复制,用于目录的复制操作
-s  :复制成为符号链接文件(快捷方式)
-u  :destination 不存在或比 source 旧才更新 destination
--preserve=all  :除了 -p 权限相关参数,还加入 SELinux 的属性,links 和 xattr 也会复制

  复制数据时默认的数据拥有者是命令操作者本身,通过 -a-p 选项复制的文件会完整复制文件权限和属性。复制文件时要注意文件权限,否则其他人可能无法操作复制的文件。

8

  通过 -l-s 可以创建链接文件。创建硬链接时第二栏的链接数会增加。创建软连接相当于创建了一个快捷方式,文件名右侧有 -> 符号指向源文件。

9

  复制链接时默认复制原始文件,而不是链接文件的属性。通过 -d 选项可以复制链接文件的属性。

10

  cp 指令可以将多个文件复制到一个目录,目录名放在最后。

10


rm

  rm 是删除(remove)的命令。为了防止被 root 误删,很多 Linux 发行版默认加了 -i 选项。如果要删除目录及目录下的所有文件,需要使用 -r 选项。

rm [-fir] 文件或目录
选项与参数:
-f  :force 的意思,忽略不存在的文件,不出现警告信息
-i  :删除前会询问使用者是否删除
-r  :递归删除,最常用于删除目录

  删除 tmp 目录下的 .bashrc 文件,加上 -i 选项会主动询问,避免删除到错误的文件名。

在这里插入图片描述

  如果要删除以 - 开头的文件,通过加上本目录 ./ 避免首位字符是 -

在这里插入图片描述


mv

  mv 是移动(move)的意思,用来移动文件和目录,可以使用 -u 测试新旧文件,判断是否需要移动。mv 命令也可以修改文件名。 Linux 中的 rename 命令同样可以更改文件的文件名。

mv [-fiu] source destination
mv [options] source1 source2 source3 ... directory
选项与参数:
-f  :force 的意思,如果目标文件存在,会直接覆盖文件
-i  :若目标文件已存在,会询问是否覆盖
-u  :若目标文件已存在,且 source 文件比较新,才会更新

  将文件或目录移动到指定目录中。

在这里插入图片描述

  将目录名称更改为 test

在这里插入图片描述


basename、dirname

  文件的完整名包含目录和文件名,每个文件名的长度都可以达到255个字符。利用 / 可以辨别,同样可以使用 basenamedirname 命令获取。

在这里插入图片描述


文件内容查看

  需要查看一个文件的内容时,有很多命令可以使用。下面是各个命令的用途。

  • cat 从第一行开始显示文件的内容
  • tac 从最后一行开始显示
  • nl 显示内容的时候,同时输出行号
  • more 一页一页的显示文件内容
  • lessmore 类似,可以往前翻页
  • head 只查看前面几行
  • tail 只查看后面几行
  • od 以二进制的方式读取文件内容

cat

  cat 是 Concatenate 的简写,功能是将一个文件的内容连续打印在屏幕上。不过文件内容超过 40 行时,来不及在屏幕看到结果,可以配合 lessmore 命令使用。

cat [-AbEnTv]
选项与参数:
-A  :相当于 -VET 的整合选项,可以列出一些特殊字符
-b  :列出行号,仅显示非空白行
-E  :显示结尾的换行符 $
-n  :打印行号,空白行也会出现行号
-T  :将 [tab] 按键以 ^I 显示出来
-v  :列出一些特殊字符

在这里插入图片描述


tac

  tac 是将文件从最后一行到第一行反向在屏幕上显示出来,功能和 cat 相反。

在这里插入图片描述


nl

  nl 可以将文件内容自动加上行号,可以做比较多的显示设计。

nl [-bnw] file
选项与参数:
-b  :指定行号指定的方式,主要有两种:
  -b a :不论是否为空行,都列出行号
  -b t :空行不列出行号(默认)
-n  :列出行号表示的方法:
  -n ln :行号在屏幕最左侧栏位显示
  -n rn :行号在栏位最右方显示,不加0
  -n rz :行号在栏位最左方显示,加0
-w  :行号栏位占用字符数

  用 nl 列出 /etc/issue 的内容。默认空白行不会列出行号。

在这里插入图片描述

  通过 -b a 选项给空白行加上行号,类似 cat -n

在这里插入图片描述

  用 -n rz 选项给行号前补 0。

在这里插入图片描述

  如果要将行号的栏位改为 4 位,可以加上 -w 4 选项。

在这里插入图片描述


more

  通过moreless 命令,在查看数据多的文件时,就可以一页一页查看文件内容。在命令过程中,可以按以下几个按键。

  • [Space] :向下翻一页
  • [Enter] :向下翻一行
  • /string :向下查找 string 字符串
  • :f :显示文件名及目前显示的行数
  • q :退出 more 命令
  • b 或 [Ctrl] + b :往回翻页,只对文件有效

  输入 more /etc/man_db.conf 命令,就可以看到下面的画面。

在这里插入图片描述

  查找字符串时,输入 / 后光标会到最后一行并等待输入。输入字符串并按下 [Enter] 时,more 就会向下查找。重复查找时按下 n 即可。


less

  使用 less 命令时,可以用 [Page Up]、[Page Down] 来前后翻看文件。less 拥有更多查找方式,可以前后查找。可以输入的命令有:

  • [Space] :向下翻一页
  • [Page Up] :向上翻动一页
  • [Page Down] :向下翻动一页
  • ?string :向上查找 string 字符串
  • /string :向下查找 string 字符串
  • n :重复前一个查找
  • N :反向重复另一个查找
  • g :前往这个数据的第一行
  • G :前往这个数据的最后一行
  • q :退出 less 命令

  less 还有很多功能,可以使用 man less 查找。man 命令就是使用 less 来显示说明文件的内容。


head

  可以使用 headtail 对输出数据进行截取,这两个命令都是以行为单位,不加 -n 选项时,默认显示十行。如果跟的是负数,如 -n -10 时表示列出所有行,但不包括最后 10 行。

head [-n number] file
选项与参数:
-n  :后面跟着截取的行数。

tail

  tail 的用法与 head 类似,只是显示的是后几行。当使用 tail -n +10 表示文件从 10 行以后会被列出来。由于有些数据会实时写入,所以加上 -f 选项可以一直刷新文件并显示新加的数据到屏幕上,直到按下 [Ctrl] + c 才会结束命令。

tail [-n number] file
选项与参数:
-n  :后面跟着截取的行数。
-f  :表示持续刷新显示文件中的内容,按下 [Ctrl]+c 才会停止

  如果想要显示文件的 11 到 20 行,可以先取文件的前 20 行,再取后 10 行,可以使用命令 head -n 20 file | tail -n 10 。这两个命令中间有个管道符号 | 存在,表示前面的命令所输出的信息,通过管道交由后续的命令继续使用。因此 tail 命令不需要文件名,因为 tail 的数据来自于 head 处理后的结果。


od

  查找字符串时,输入 / 后光标会到最后一行并等待输入。输入字符串并按下 [Enter] 时,more 就会向下查找。重复查找时按下 n 即可。


less

  使用 less 命令时,可以用 [Page Up]、[Page Down] 来前后翻看文件。less 拥有更多查找方式,可以前后查找。可以输入的命令有:

  • [Space] :向下翻一页
  • [Page Up] :向上翻动一页
  • [Page Down] :向下翻动一页
  • ?string :向上查找 string 字符串
  • /string :向下查找 string 字符串
  • n :重复前一个查找
  • N :反向重复另一个查找
  • g :前往这个数据的第一行
  • G :前往这个数据的最后一行
  • q :退出 less 命令

  less 还有很多功能,可以使用 man less 查找。man 命令就是使用 less 来显示说明文件的内容。


head

  可以使用 headtail 对输出数据进行截取,这两个命令都是以行为单位,不加 -n 选项时,默认显示十行。如果跟的是负数,如 -n -10 时表示列出所有行,但不包括最后 10 行。

head [-n number] file
选项与参数:
-n  :后面跟着截取的行数。

tail

  tail 的用法与 head 类似,只是显示的是后几行。当使用 tail -n +10 表示文件从 10 行以后会被列出来。由于有些数据会实时写入,所以加上 -f 选项可以一直刷新文件并显示新加的数据到屏幕上,直到按下 [Ctrl] + c 才会结束命令。

tail [-n number] file
选项与参数:
-n  :后面跟着截取的行数。
-f  :表示持续刷新显示文件中的内容,按下 [Ctrl]+c 才会停止

  如果想要显示文件的 11 到 20 行,可以先取文件的前 20 行,再取后 10 行,可以使用命令 head -n 20 file | tail -n 10 。这两个命令中间有个管道符号 | 存在,表示前面的命令所输出的信息,通过管道交由后续的命令继续使用。因此 tail 命令不需要文件名,因为 tail 的数据来自于 head 处理后的结果。


od

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值