第七章 Linux文件与目录管理 (7.1-7.2) - Go语言中文社区

第七章 Linux文件与目录管理 (7.1-7.2)


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
  1. 执行文件路径的变量 $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, mv

  • cp (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 (取得文件名)

版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/dc5b2d2a8f42
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-07 22:43:12
  • 阅读 ( 1246 )
  • 分类:Linux

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢