Linux 目录与文件的基本操作
1 目录与文件
1.1 文件
硬盘中的数据在操作系统中的体现为文件。
1.2 目录
目录的概念不是文件集合。目录和文件一样,目录也是文件。目录是找到文件的“踏板”。目录的本质是路径映射。
1.3 Linux目录结构
根目录
所有的文件都需要从根开始。Linux只要一个根。就像一颗树。Linux的根与内核直接关联。Linux的根用 / 表示。
一级子目录
/bin: 二进制,可执行的命令;
/sbin: 可执行命令,仅用于管理,通常管理员才有权限使用;
/boot: 引导,操作系统用于引导系统启动的文件,内核、grub;
/dev: 设备文件;硬件都已文件形式显示。体现了一切皆文件。
/etc: 配置文件;
/home: 普通用户的家目录,/home/USERNAME,例如jerry的家目录为:/home/jerry;
/root: 管理员的家目录;
/lib, /lib64: 库文件;
/media: 挂载点目录,通常用于挂载便携性设备;
/mnt:挂载点目录,挂载额外的文件系统;
/misc: 备份目录;
/opt: 可选目录,通常第三方软件偶尔安装于此路径下;
/proc: 伪文件系统;其实没有任何文件;内存中内核的映射;
/selinux: 安全加强的Linux;
/srv: 属于服务的中间数据的存储位置;
/sys: 伪文件系统,类似于/proc。通常用于访问硬件设备属性信息;
/tmp: 临时文件目录;
/usr: 存储只读文件;
/var: 经常会发生变化的文件;比如日志等;
2 Linux路径
/usr/share/doc
第一个/ 表示根目录。 之后的/ 表示路径分隔符。
2.1 基名
基名,路径的最右侧名称,/user/share/doc的基名 doc。
basename命令 取得路径基名。
dirname命令 除基名外的路径。
2.2 相对路径,绝对路径
绝对路径:从根开始的路径;
相对路径:从当前位置开始的路径;
.:一个点,当前目录;
..:两个点,当前目录的上级目录;
3 文件基本命令
3.1 ls命令
列出指定目录下的文件。
常用参数:
- ls [-aAdfFhilnrRSt] 目录名称
- -l :以长格式显示文件的详细属性,包含档案的属性与权限等等数据;
- -a :显示所有文件,包括隐藏文件。
- -A :跟-a功能相同,但不显示.和..;
- -d :仅列出目录本身,而不是列出目录内的文件数据;
- -f :直接列出结果,而不进行排序 (ls 预设会以文件名排序!);
- -F :根据档案、目录等信息,给予附加数据结构,例如: *:代表可执行文件; /:代表目录;
- -n :列出 UID 与 GID 而非使用者与群组的名称;
- -R :连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来;
- -S :按照文件容量大小排序,而不是用文件名称排序;
- -t :按照时间排序,而不是用文件名。
- -h: 文件大小会自动进行单位换算;
- -r:文件名逆序显示;
例:显示当前目录下的文件。# ls
例:显示根目录下所有文件
ls -l与ls -lh
显示文件详细信息。
显示格式:
文件的类型 属主权限 数组权限 其他权限 文件硬连接数 属主 属组 大小 访问日期 文件名
例:显示文件的详细属性信息。# ls -l
例:显示文件大小的单位
例:当前路径为/usr/share。配合相对路径和绝对路径使用ls命令。
ls -l /usr/share/doc/lsof-2.1/README
ls -l doc/lsof-2.1/README
ls -l ./doc/lsof-2.1/README 当前路径
ls -l ../bin/passwd 父目录
另外在很多Linux的Shell中,不一样的功能的文件有不一样的颜色被显示。这帮助我们快速确定文件功能。该功能不重要。
输入:ls /dev
输入:ls /bin
3.2 ll命令 显示文件的信息
ll命令,本质就是ls -l
3.3 pwd命令 显示当前工作目录
例:
3.4 cd命令 进入目录
例:
回家目录:cd ~
cd
cd ~USERNAME:切换至USERNAME的家目录;
cd -:在上个目录和当前目录之间切换;
例:进入/usr/share目录。 cd /usr/share
例:cd为内建命令;回到家目录的几个技巧。
例:在某个目录与家目录之间来回切换。cd -
3.5 mkdir命令 创建目录
mkdir:创建目录,默认情况下,指定目录的父目录必须存在。
mkdir 常用参数
-m, –mode:指定被创建目录的权限值。(不是 rwxrwxrwx 减 umask)
-p, --parents:创建目录的同时也会创建需要的父目录。
-v, --verbose:显示创建目录与父目录的过程。
--help:显示此帮助信息并退出。
--version:输出版本信息并退出。
例:mkdir /tmp/x1
例:x2文件不存在。则会报错。
mkdir /tmp/x2/hello
例: 使用p参数,mkdir -pv /tmp/x3/hello
实例3:创建权限为777的目录
mkdir -m 777 test3
3.6 rmdir命令 删除空目录
这个命令一般不经常使用。
rmdir:仅能删除删除空目录;
rmdir -p m/n/o/p 删除当前目录下的m/n/o/p的一整条路径,但要求路径下没有任何文件。
3.7 cp命令 复制文件
cp 要复制的文件路径 ... 目标
常用参数
参数:
-a,--archive:此参数的效果和同时指定"-dpR"参数相同。
-r:递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理。
-R,--recursive:递归处理,将指定目录下的文件及子目录一并处理。-f,--force:强行复制文件或目录, 不论目的文件或目录是否已经存在。
-i,--interactive:覆盖文件之前先询问用户。
-u,--update:使用这项参数之后,只会在源文件的修改时间(Modification Time)较目的文件更新时,或是名称相互对应的目的文件并不存在,才复制文件。
-v,--verbose:显示执行过程。
-l,--link:对源文件建立硬链接,而非复制文件。
-b,--backup:删除、覆盖目的文件先备份,备份的文件或目录亦建立为符号链接,并指向源文件或目录链接的源文件或目录。假如没有加上这个参数,在复制过程中若遇到符号链接,则会直接复制源文件或目录。
-p,--preserve:保留源文件或目录的属性,包括所有者、所属组、权限与时间。
-P,--parents:保留源文件或目录的路径,此路径可以是绝对路径或相对路径,且目的目录必须已经丰在。
-s,--symbolic-link:对源文件建立符号链接,而非复制文件。
-S <备份字尾字符串>,--suffix=<备份字尾字符串>:用"-b"参数备份目的文件后,备份文件的字尾会被加上一个备份字符串。默认的备份字尾符串是符号"~"
-V <备份方式>,--version-control=<备份方式> 指定当备份文件时,备份文件名的命名方式,有以下3种:
1.numbered或t, 将使用备份编号,会在字尾加上~1~字符串,其数字编号依次递增。
2.simple或never 将使用简单备份,默认的备份字尾字符串是~, 也可通过-S来指定。
3.existing或nil将使用当前方式,程序会先检查是否存在着备份编号,若有则采用备份编号,若无则采用简单备份。
-x,--one-file-system:复制的文件或目录存放的文件系统,必须与cp指令执行时所处的文件系统相同,否则不复制,亦不处理位于其他分区的文件。
--help:显示在线帮助。
--sparse=<使用时机>:设置保存希疏文件的时机。
--version:显示版本。
cp命令对单个文件的复制:
目标不存在:则复制并重命名指定的名称(指定的名称的父目录必须存在);
目标存在: 如果目标是文件:则覆盖;如果目标是目录:将文件复制到指定的目录中;
cp命令对多个文件的复制:
如果要复制的文件是多个,则目标必须要存在且是目录;默认情况下不cp命令会复制目录。目录下已经有该文件,再复制进来相同文件名的文件。则询问是否要覆盖。
3.8 mv命令 移动文件
mv SRC DEST
规则与cp类似,但cp默认只能对文件操作,mv可以对文件目录均能操作。
-i:覆盖前提醒确认;
例:/etc目录下i开头的文件复制到/tmp ,并显示过程。
3.9 rm命令 删除文件
rm 只能删除文件,不能删除目录。
常用参数:
-i:提醒。
-f:强行删除;管理员不会有确认提示,直接删掉。
-r:递归删除目录及其内部的所有文件;
rm -rf 文件 强行删除文件。 警示:一定要谨慎使用。
rm -rf / 警示:删除根下所有文件。“自杀”非常危险。
警告:尽量不要这样操作。误操作经常发生,非常危险。
4 touch命令
touch命令一般被用于创建新的空文件。
但若把touch命令作用于已存在的文件上,则touch命令把文件的访问时间修改为当前时间。