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
    
  • 相关阅读:
    BZOJ3674 可持久化并查集加强版
    BZOJ2588 Spoj 10628. Count on a tree
    BZOJ1300 [LLH邀请赛]大数计算器
    BZOJ3261 最大异或和
    BZOJ1605 [Usaco2008 Open]Crisis on the Farm 牧场危机
    BZOJ3524 [Poi2014]Couriers
    BZOJ2127 happiness
    JZOJ__Day 7:【普及模拟】蚂蚁
    JZOJ__Day 6:【普及模拟】神奇的项链(fett)
    JZOJ__Day 6:【普及模拟】团队背包(team)
  • 原文地址:https://www.cnblogs.com/lucare/p/11278899.html
Copyright © 2011-2022 走看看