1.相对路径和绝对路径
路径(PATH)
相对路径 - 从根目录写起 cd /usr/share/doc
绝对路径 - 从目前工作目录写起 cd ../man
- shell scripts 下使用绝对路径
2.目录的相关操作
特殊的目录
.该层目录
..上层目录
-上一个工作目录
~ 当前用户主文件夹
~Leathy Leathy用户主文件夹cd Change Directory
pwd Print Working Directory
mkdir Make Directory
mkdir /home/leathy/testing/test1 ->在/home/leathy/testing/下创建test1这个目录
假如没有这个目录 就会报错:
mkdir: cannot create directory ‘/test/test1/test3’: No such file or directory
[-p]
-p, --parents
no error if existing, make parent directories as needed
[-m]
-m, --mode=MODE
set file mode (as in chmod), not a=rwx - umask
强制设置目录权限
- rmdir ReMove Directory (只能删除空的目录)
[-p]
-p, --parents
remove DIRECTORY and its ancestors; e.g., 'rmdir -p a/b/c' is similar
被删除的目录不能有其他目录和文件
如果有,且需要一并删除 使用:
- rm -r
[-r]
-r, -R, --recursive
remove directories and their contents recursively
[-f]
-f, --force
ignore nonexistent files and arguments, never prompt
- 执行文件路径的变量 $PATH
无论是root用户还是普通用户 echo $PATH 出的目录,都包含了 ls 这条命令 所属的 目录 所以即使在任何目录都可以使用ls这个内置命令
- whereis
which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
五个查找命令 from 阮一峰
http://www.ruanyifeng.com/blog/2009/10/5_ways_to_search_for_files_using_the_terminal.html
当我们执行命令时,系统会依照PATH的设置去每一个PATH定义的目录查询文件名为 该命令 如ls 的可执行文件执行,如果有多个,则先查询到的同名命令先执行。
echo $PATH
su leathy
Tips
1.不同的身份用户默认的PATH不同,默认能够随意执行的命令也不同(leathy下 ifconfig eth0会显示command not found)
2.PATH是可以修改的,所以一般用户还是可以通过修改PATH来执行某些位于/sbin或/usr/sbin下的命令来查询
4.查看文件与目录:ls
ls (list directory contents)
[-a]
-a, --all
do not ignore entries starting with .
[-d]
-d, --directory
list directories themselves, not their contents
和-l连用 查看当前目录的详细信息
[-l]
-l use a long listing format
alias ll ls -l 的别名 ll
5.复制、删除与移动:cp, rm, mvcp (copy files and directories)
[-a] = [-pdr]
-a, --archive
same as -dR --preserve=all
[-p] preserve 维持
连同文件属性一起复制过去
[-d]
若源文件为链接文件的属性,则复制链接文件属性而非文件本身
[-i]
-i, --interactive
prompt before overwrite (overrides a previous -n option
[-r]
-R, -r, --recursive
copy directories recursively
目录不可以直接的复制,要 -r 递归复制,但权限仍有可能被改变
只有取得read权限的文件才可以cp
在默认情况下,cp 后文件owner是命令操作者
注意 当前用户 和文件权限
[-l] link 硬连接(下一章讲)
-l, --link
hard link files instead of copying
[-s] 软连接 (下一章讲)
-s, --symbolic-link
make symbolic links instead of copying
[-u] update
-u, --update
copy only when the SOURCE file is newer than the destination file or when the destination file is missing
可以将多个数据一次性复制到同一个目录
cp /test1 /test2 /tmp (最后一个一定得是目录)
当前用户无法修改的文件权限,即使使用了 -a 参数也无法完整复制权限
当你使用 cp 时 考虑这四个问题
1.是否需要完整的保留来源文件的信息
使用 -a 或-pdr 完整拷贝 -p 拷贝属性 -d 拷贝连接文件属性而非本身
-r 递归拷贝
2.源文件是否为软连接文件
直接cp 会拷贝成源文件
3.源文件是否特殊的文件 如FIFO 、socket等?
Review p#151
套接字 Socket 数据接口文件
用于在网络上的数据连接
启动一个程序来监听客户端的请求,而客户端通过socket进行数据的通讯
第一个属性为[s]
通常可以在/var/run看到socket文件
管道 FIFO(first in first out) pipe
第一个属性为[p]
与 process 有关 简单理解为快捷方式
4.源文件是否为目录?
使用 -r 递归拷贝目录 ,但权限仍然可能变化
rm
[-f]
[-i]
[-r]mv (Move or Rename)
[-f] force
[-i] interactive 交互
[-u] update
5.取得路径的文件名与目录名称
basename /etc/sysconfig/network (取得目录名)
dirname /etc/sysconfig/network (取得文件名)