1、目录
Linux 和 Unix 文件系统被组织成一个有层次的树形结构。文件系统的最上层是 /,或称为 根目录。在 Unix 和 Linux 的设计理念中,一切皆为文件——包括硬盘、分区和可插拔介质。这就意味着所有其它文件和目录(包括其它硬盘和分区)都位于根目录中。
例如:/home/jebediah/cheeses.odt 给出了正确的完整路径,它指向 cheeses.odt 文件,而该文件位于 jebediah 目录下,该目录又位于 home 目录,最后,home 目录又位于根(/) 目录下。 在根 (/) 目录下,有一组重要的系统目录,在大部分 Linux 发行版里都通用。
直接位于根 (/) 目录下的常见目录列表如下:
2、相对路径与绝对路径
绝对路径:路径的写法"一定由根目录/写起",例如, /usr/share/doc这个目录.
相对路径:路径的写法"不是由根目录/写起",例如由/usr/share/doc目录到/usr/share/man这个目录,可以写成:cd ../man.这就是相对路径.
比较特殊的目录:
注意!任何目录下都会存在".",".."这两个目录,包括根目录.可用ls -al /命令查看.
3、目录的相关操作:cd,pwd,mkdir,rmdir
处理目录的常见指令有:
cd:变换目录
pwd:显示目前的目录
mkdir:建立一个新的目录
rmdir:删除一个空的目录
3.1 pwd (Print Working Directory的缩写)显示目前所在目录
1.命令格式:
pwd [选项]
2.命令功能:
查看“当前工作目录”的完整路径。在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置。
3.常用参数:
一般情况下不带任何参数
如果目录是链接时:
格式:pwd -P 显示出实际路径,而非使用连接(link)路径。
4.常用实例:
①用 pwd 命令查看默认工作目录的完整路径
②目录连接链接时,pwd -P 显示出实际路径,而非使用连接(link)路径;pwd显示的是连接路径
3.2 cd(Change Directory的缩写)变换目录
1.命令格式:
cd [目录名]
2.命令功能:
切换当前目录至dirName
3.常用实例:
cd ~表示回到自己的家目录
cd 不加任何路径,也表示回到自己的家目录
cd ..表示去当前目录的上层目录
cd -表示回到前一个工作过的目录
cd !$ 把上个命令的参数作为cd参数使用
cd /home/ppnie/study/logs 绝对路径写法,直接去指定的目录
cd ../../../ 相对路径写法,由/home/ppnie/study/logs 去/home就可以这样写
3.3 mkdir(make directory的缩写)建立新目录
1.命令格式:
mkdir [选项] 目录...
2.命令功能:
通过 mkdir 命令可以实现在指定位置创建以 DirName(指定的文件名)命名的文件夹或目录。要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限。并且,所创建的文件夹(目录)不能与其父目录(即父文件夹)中的文件名重名,即同一个目录下不能有同名的(区分大小写)。
3.命令参数:
-m, --mode=模式,设定权限<模式> (类似 chmod),而不是 rwxrwxrwx 减 umask
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;
-v, --verbose 每次创建新目录都显示信息
--help 显示此帮助信息并退出
--version 输出版本信息并退出
4.命令实例:
① 创建一个空目录 mkdir study
② 创建多级目录a/aa/aaa ,打印创建信息,并将权限赋为 777
命令:mkdir -vp -m 777 a/aa/aaa
③ 一个命令创建项目的目录结构
命令:mkdir -vp project/{src/,lib/,WebRoot/{css/,js/,WEB-INF/,logs/}}
3.4 rmdir(remove directory的缩写)删除空目录
1.命令格式:
rmdir [选项] 目录...
2.命令功能:
删除空目录,被删除的目录里面不能存在其它的目录或档案。如果目录非空而一定要删除的话,可以使用"rm -r 目录名称"
3.命令参数:
-p :连同上层"空的"目录也一起删除
4、档案与目录管理
4.1 档案与目录的查看:ls
1.命令格式:
ls [-aAdfFhilnrRSt] 目录名称..
ls [--color={never,auto,always}] 目录名称..
ls [--full-time] 目录名称..
2.命令功能:
查看档案和目录
3.命令参数:
-a :全部的档案,连同隐藏档( 开头为 . 的档案) 一起列出来~
-A :全部的档案,连同隐藏档,但不包括 . 与 .. 这两个目录,一起列出来~
-d :仅列出目录本身,而不是列出目录内的档案数据
-f :直接列出结果,而不进行排序 (ls 预设会以档名排序!)
-F :根据档案、目录等信息,给予附加数据结构,例如:
*:代表可执行档; /:代表目录; =:代表 socket 档案; :代表 FIFO 档案;
-h :将档案容量以人类较易读的方式(例如 GB, KB 等等)列出来;
-i :列出 inode 位置,而非列出档案属性;
-l :长数据串行出,包含档案的属性等等数据;
-n :列出 UID 与 GID 而非使用者与群组的名称 (UID 与 GID 会在账号管理提到!)
-r :将排序结果反向输出,例如:原本档名由小到大,反向则为由大到小;
-R :连同子目录内容一起列出来;
-S :以档案容量大小排序!
-t :依时间排序
--color=never :不要依据档案特性给予颜色显示;
--color=always :显示颜色
--color=auto :让系统自行依据设定来判断是否给予颜色
--full-time :以完整时间模式 (包含年、月、日、时、分) 输出
--time={atime,ctime} :输出 access 时间或 改变权限属性时间 (ctime)
而非内容变更时间 (modification time)
4.命令实例:
①查询目录study/ 和 test/ 下的所有文档,并显示详细信息
命令:ls -AFl study/ test/
4.2 复制:cp
1.命令格式:
cp [-adfilprsu] 来源档(source) 目标档(destination)
cp [options] source1 source2 source3..... Directory
注意!如果来源档有两个以上,则最后一个目标档必须是"目录"。
2.命令功能:
复制文件或者目录
3.部分命令参数:
-a :相当于-pdr;(常用)
-b : 删除、覆盖目的文件先备份,备份的文件或目录亦建立为符号链接,并指向源文件或目录链接的源文件或目录。假如没有加上这个参数,在复制过程中若遇到符号链接,则会直接复制源文件或目录
-d :如果源文件为连结档(link file),则复制其属性而非档案本身;
-f :强行复制文件或目录, 不论目的文件或目录是否已经存在
-i :如果目标文件已经存在,在覆盖时会先询问;(常用)
-l :进行硬式连结(hard link)的连结档建立,而非复制档案本身;
-P: 保留源文件或目录的路径,此路径可以是绝对路径或相对路径,且目的目录必须已经丰在
-p :连同档案的属性也一起复制,而非预设属性;(备份常用)
-r :递归持续复制,用于目录的复制;(常用)
-s :复制成为符号连结档(symbolic link),即"捷径"档案;
-u :若destinition比source旧才更新destination!
-v : 显示执行过程
4. 命令实例
复制目录study 中的所有文件都复制 test,若是文件已经存在,则直接覆盖,并显示执行过程
4.3 移除:rm
1. 命令格式:
rm [选项] 文件…
2.命令功能:
删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。
3.部分命令参数:
-f, --force 忽略不存在的文件,从不给出提示。
-i, --interactive 进行交互式删除
-r, -R, --recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。
-v, --verbose 详细显示进行的步骤
--help 显示此帮助信息并退出
--version 输出版本信息并退出
4. 命令实例:
①强制删除当前目录下的所有文件和目录
命令: rm -rf *
4.4移动:mv
1. 命令格式:
mv [选项] 源文件或目录 目标文件或目录
2.命令功能:
mv命令将文件重命名或将其移至一个新的目录中
3. 部分命令参数:
-b :若需覆盖文件,则覆盖前先行备份。
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新(update)
-t : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。
4. 命令实例:
把当前目录的一个子目录里的文件移动到另一个子目录里
命令:mv test/*.txt study/
4.5取得某路径的档案名称 basename 与目录名称 dirname