zoukankan      html  css  js  c++  java
  • Linux 文件与目录管理

    一、目录与路径

    相对路径与绝对路径

    • 绝对路径:路径的写法“一定由根目录 / 写起”,例如: /usr/share/doc 这个目录。
    • 相对路径:路径的写法“不是由 / 写起”,例如由 /usr/share/doc 要到 /usr/share/man 下面时,可以写成: “cd ../man”这就是相对路径的写法啦!相对路径意指“相对于目前工作目录的路径!”

    目录的相关操作

    .         代表此层目录
    ..        代表上一层目录
    -         代表前一个工作目录
    ~         代表“目前使用者身份”所在的主文件夹
    ~account  代表 account 这个使用者的主文件夹(account是个帐号名称)
    

    关于可执行文件路径的变量: $PATH

    我们知道查阅文件属性的指令ls完整文件名为:/bin/ls(这是绝对路径),但是我们在任何目录下输入 ls 就一定可以显示出一些讯息,这是因为环境变量 PATH 的帮助所致。

    当我们在执行一个指令的时候,举例来说“ls”好了,系统会依照PATH的设置去每个PATH定义的目录下搜寻文件名为ls的可可执行文件, 如果在PATH定义的目录中含有多个文件名为ls的可可执行文件,那么先搜寻到的同名指令先被执行!

    echo $PATH:

    [**@someone ~]$ echo $PATH
    /usr/local/jdk1.8.0_111/bin:/usr/local/jdk/bin:/usr/local/bin:/usr/bin/mysql:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin
    
    

    无论是root还是其它用户都有 /bin 或 /usr/bin, 这个目录在PATH变量内,所以当然就能够在任何地方执行ls来找到/bin/ls可执行文件。

    但是对于我们自己解压安装的某些程序包,如某些web容器Tomcat或者Jetty,当我们要执行bin目录的某些sh脚本,需要使用绝对路径或者./start.sh这样的相对路径。

    二、文件内容查阅

    常见的文件内容查阅命令:

    cat   由第一行开始显示文件内容
    tac   从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
    nl    显示的时候,顺道输出行号!
    more  一页一页的显示文件内容
    less  与 more 类似,但是比 more 更好的是,他可以往前翻页!
    head  只看头几行
    tail  只看尾巴几行
    od    以二进制的方式读取文件内容!
    

    直接检视

    • cat
    [root@study ~]# cat [-AbEnTv]
    选项与参数:
    -A  :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
    -b  :列出行号,仅针对非空白行做行号显示,空白行不标行号!
    -E  :将结尾的断行字符 $ 显示出来;
    -n  :打印出行号,连同空白行也会有行号,与 -b 的选项不同;
    -T  :将 [tab] 按键以 ^I 显示出来;
    -v  :列出一些看不出来的特殊字符
    
    • tac(反向展示)
    • nl(添加行号打印)
    [root@study ~]# nl [-bnw] 文件
    选项与参数:
    -b  :指定行号指定的方式,主要有两种:
          -b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
          -b t :如果有空行,空的那一行不要列出行号(默认值);
    -n  :列出行号表示的方法,主要有三种:
          -n ln :行号在屏幕的最左方显示;
          -n rn :行号在自己字段的最右方显示,且不加 0 ;
          -n rz :行号在自己字段的最右方显示,且加 0 ;
    -w  :行号字段的占用的字符数。
    

    nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能。

    可翻阅检视

    • more
    空白键: 代表向下翻一页;
    Enter : 代表向下翻“一行”;
    /字串 : 代表在这个显示的内容当中,向下搜寻“字串”这个关键字;
    :f    : 立刻显示出文件名以及目前显示的行数;
    q     : 代表立刻离开 more ,不再显示该文件内容。
    b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
    
    • less
    空白键 :   向下翻动一页;
    [pagedown]:向下翻动一页;
    [pageup] : 向上翻动一页;
    /字串 :    向下搜寻“字串”的功能;
    ?字串 :    向上搜寻“字串”的功能;
    n :重复前一个搜寻 (与 / 或 ? 有关!)
    N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
    g :前进到这个数据的第一行去;
    G :前进到这个数据的最后一行去 (注意大小写);
    q :离开 less 这个程序;
    

    less 的用法比起 more 又更加的有弹性,在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件。

    数据撷取

    • head (取出前面几行)
    [root@study ~]# head [-n number] 文件
    选项与参数:
    -n  :后面接数字,代表显示几行的意思
    
    [root@study ~]# head /etc/man_db.conf
    # 默认的情况中,显示前面十行!若要显示前 20 行,就得要这样:
    [root@study ~]# head -n 20 /etc/man_db.conf
    
    • tail (取出后面几行)
    [root@study ~]# tail -n 20 /etc/man_db.conf
    
    范例一:如果不知道/etc/man_db.conf有几行,却只想列出100行以后的数据时?
    [root@study ~]# tail -n +100 /etc/man_db.conf
    
    范例二:持续侦测/var/log/messages的内容
    [root@study ~]# tail -f /var/log/messages
      <==要等到输入[crtl]-c之后才会离开tail这个指令的侦测!
    

    通常用这个tail来刷日志。

    三、命令与文件查询

    脚本名的查询

    • which(寻找“执行文件”)

    根据PATH这个环境变量所规范的路径去查询“执行文件”的文件名。所以,重点是找出执行文件而已。

    文件名的查找

    因为 whereis 与 locate 是利用数据库来查找数据,所以速度相当快,find 要实际查询硬盘。

    • whereis(寻找特定文件)
    -b: 只找二进制格式的文件
    -m: 只找在说明文件 manual 路径下的文件
    -s: 只找 source 源文件
    -u: 查找不在上述三个选项当中的其他特殊文件
    
    • locate

    locate 寻找数据是由已创建的数据库 /var/lib/mlocate/ 里面的数据所查找的,而数据库的创建默认是每天执行一次,新建的文件直接查找会找不到,需要手动更新数据库,直接输入“updatedb”就可以了。

    • find

    与时间有关的参数:

    -mtime n  : n为数字,意义为在n天之前的“一天之内”被更改过的文件
    -mtime +n : 列出在n天之前的(不含n本身)被更改过的文件名
    -mtime -n : 列出在n天之内(含n天本身)被更改过的文件名
    -newer file: file为一个存在的文件,列出此file还有新的文件名
    
    时间轴表示:
               |4|
               -4|----------> 
    <----------|+4
    <------7-6-5-4-3-2-1-now--------
    

    范例:

    # 将过去系统上面24小时内有改动的文件列出
    find / -mtime 0
    
    # 寻找 /etc 下面的文件,如果文件日期比 /etc/passwd 新就列出
    find /etc -newer /etc/passwd
     
    

    与用户或用户组名有关的参数:

    -uid n: n为数字,这个数字是用户的账号ID,即UID,这个UID是记录在/etc/passed 里面与账号名称对应的数字
    -gid n: n为数字,这个数字是用户组名的ID,即GID,这个GID记录在/etc/group中
    -user name:  name为用户账号名称
    -group name: name为用户组名
    -nouser:    寻找文件的所有者不存在/etc/passwd 的人
    -nogroup:   寻找文件的所有用户组不存在于 /etc/group 中的文件
    

    范例:

    # 查找/home 下面属于 vbird 的文件
    # 可以利用这个命令将属于某个用户的所有文件都找出来
    find /home -user vbird
    
    # 查找系统中不属于任何人的文件
    # 通过这个命令可以找出那些不太正常的文件
    find / -nouser
    

    与文件权限及名称有关的参数:

    -name filename: 查找文件名为 filename 的文件
    -size [+-]SIZE: 查找比SIZE还要大(+)或小(-)的文件,这个SIZE的规格有:c-byte k-1024bytes
    -type TYPE: 查找文件的类型为TYPE的,类型主要有:一般正规文件(f)、设备文件(b,c)、目录文件(d)、连接文件(l)、socket(s)、FIFO(p)等
    -perm mode: 查找文件权限“刚好等于mode的文件” mode类似chmod的属性值,如-rwxr-xr-x的属性值为4755
    
  • 相关阅读:
    【codecombat】 试玩全攻略 第二章 边远地区的森林 一步错
    【codecombat】 试玩全攻略 第十八关 最后的kithman族
    【codecombat】 试玩全攻略 第二章 边远地区的森林 woodlang cubbies
    【codecombat】 试玩全攻略 第二章 边远地区的森林 羊肠小道
    【codecombat】 试玩全攻略 第十七关 混乱的梦境
    【codecombat】 试玩全攻略 第二章 边远地区的森林 林中的死亡回避
    【codecombat】 试玩全攻略 特别关:kithguard斗殴
    【codecombat】 试玩全攻略 第二章 边远地区的森林 森林保卫战
    【codecombat】 试玩全攻略 第二章 边远地区的森林
    实验3 类和对象||
  • 原文地址:https://www.cnblogs.com/lucare/p/11278899.html
Copyright © 2011-2022 走看看