Linux文件与目录管理

原文地址:https://blog.qjm253.cn/?p=448

目录与路径

  • 相对路径与绝对路径

    • 绝对路径:由根目录开始写起,例如:/etc/nginx/xxx
    • 相对路径:以当前工作目录为参考,例如:./a.js
  • 目录相关操作

    • 特殊的目录:

      .           代表当前目录
      ..          代表上一层目录
      -           代表前一个工作目录
      ~           代表“目前用户身份”所在的主文件夹
      ~acount     代表 account 这个用户的主文件夹
      
    • 常见作用于目录的命令

      • cd:切换目录
      • pwd:显示当前目录
      • mkdir:新建一个新的目录
      • rmdir:删除一个空的目录(如果目录非空,用此命令删除目录会失败)
      # cd 用法
      cd [相对路径|绝对路径]
      # 说明
      如果直接调用cd,后面不跟路径,则等效于 cd ~
      
      # pwd 用法
      pwd [-P]
      #参数
      -P:显示出当前的路径,而非使用连接(link)的路径
      
      # mkdir 用法
      mkdir [-mp] <目录名称>
      # 参数
      -m:直接设置准备创建的目录的权限,而不需要看umask
      -p:递归创建目录
      # 举个栗子
      mkdir -p a/b/c/d/e
      
      # rmdir 用法
      rmdir [-p] 目录名称
      # 参数
      -p:连同上层“空的”目录页删除
      # 举个栗子
      rmdir -p a/b/c/d/e
      
  • 环境变量:$PATH

    当前系统的环境变量记录了一连串的目录,以':'分隔,当用户执行一个命令时,系统会依次查询环境变量中记录的目录下的文件,找到则执行它,没找到则提示用户command not found

    • 查看当前系统的目录

      echo $PATH
      
    • 更多参考(包含环境变量如何设置等等)

    • 注意事项

      • 不同身份用户默认的PATH不同,默认能够随意执行的命令也不同
      • PATH是可以修改的,所以一般用户还是可以通过修改PATH来执行某些位于/sbin或/usr/sbin下面的命令来执行
      • 使用绝对路径或相对路径直接指定某个命令的文件名来执行,会比查询PATH来得正确
      • 命令应该要放置到正确的目录下,执行才会更加方便
      • 本目录(.)最好不要放置到PATH当中

文件与目录管理

  • 查看文件与目录:ls

    # 用法
    ls [-aAdfFhilnrRSt] 目录名称
    ls [--color={never,auto,always}] 目录名称
    ls [--full-time] 目录名称
    
    # 参数说明
    -a:列出全部文件(包含隐藏文件)
    -A:列出全部文件(包含隐藏文件,但不包含.和..)
    -d:仅列出目录本身,而不是列出目录内的文件数据
    -f:直接列出结果,而不进行排序(ls默认以文件名进行排序)
    -F:根据文件、目录等信息给予附加数据结构,例如
        *:代表可执行文件   /: 代表目录     =: 代表socket文件   |: 代表FIFO文件
    -h:将文件容量以人类较易读的方式(如GB、KB)列出来
    -i:列出inode号码,inode的意义后面会详细介绍
    -l:列出长数据串,包含文件的属性与权限等数据
    -n:列出UID与GID,而非用户与用户组的名称
    -r:将排序结果反序输出,例如:原本文件名由小到大,反则为由大到小
    -R:连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来
    -S:以文件容量大小排序,而不是用文件名排序
    -t:以时间排序,而不是用文件名
    --color=nerver:不要依据文件特性给予颜色显示
    --color=always:显示颜色
    --color=auto:让系统自行依据设置来判断是否给予颜色
    --full-time:以完整时间模式(包含年月日时分)输出
    --time={atime,ctime}:输出访问时间或改变权限时间(ctime),而非内容访问时间
    
  • 复制:cp

    # 用法
    cp [-adfilprsu] source destination
    cp [options] sourse1 sourse2 ... directory
    
    # 参数
    -a:相当于-pdr的意思
    -d:若源文件为连接文件(link file),则复制连接文件属性而非文件本身
    -f:为强制(force)的意思,若目标文件已经存在且无法开启,则删除后再尝试一次
    -i:若目标文件(destination)已经存在,在覆盖时会先询问是否覆盖
    -l:进行硬连接(hard link)的创建,而非复制文件本身
    -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用)
    -r:递归持续复制,用于目录的复制行为(常用)
    -s:复制成为符号连接(symbolic link),即“快捷方式文件”
    -u:若destination比source旧才更新
    
    # 注意
    如果源文件有两个以上,则最后一个目的文件一定要是一个目录才行
    
  • 删除:rm

    # 用法
    rm [-fir] <文件|目录>
    
    # 参数
    -f:就是force的意思,忽略不存在的文件,不会出现警告信息
    -i:互动模式,在删除前会询问用户是否操作
    -r:递归删除,最常用在目录的删除
    
  • 移动文件与目录或更名:mv

    # 用法
    mv [-fiu] source destination
    mv [options] source1 source2 ... directory
    
    # 参数
    -f:force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
    -i:若目标文件(destination)已经存在,就会询问是否覆盖
    -u:若目标文件已经存在,且source比较新,才会更新(update)
    
  • 取得路径的文件名与目录名称:basename、dirname

    输入:
    basename /etc/sysconfig/network
    输出:
    network
    
    输入:
    dirname /etc/sysconfig/network
    输出:
    /etc/sysconfig
    

文件内容查阅

  • cat: 由第一行开始显示文件内容
  • tac: 从最后一行开始显示(倒序显示)
  • nl:显示的时候顺便输出行号
  • more: 一页一页地显示文件内容
  • less: 与more类似,但是比more更好用,它可以前后翻页
  • head: 只看头几行
  • tail: 只看结尾几行
  • od: 以二进制的方式读取文件内容
  • 直接查看文件内容:cat、tac、nl

    • catconcatenate

      # 用法
      cat [-AbEnTv] <文件>
      
      # 参数
      -A:相当于-vET的整合参数,可列出一些特殊字符,而不是空白
      -b:列出行号,仅针对非空白行做行号显示,空白行不标行号
      -E:将结尾的断行字符$显示出来
      -n:打印出行号,连同空白行也会有行号,与-b的参数不同
      -T:将[TAB]按键以^I显示出来
      -v:列出一些看不见的特殊字符
      
    • tac
      参数用法和cat一致,只是显示的时候是倒序显示的

    • nl添加行号打印

      # 用法
      nl [-bnw] <文件>
      
      # 参数
      -b:指定行号指定的方式,主要有两种
          -b a:表示不论是否为空行,也同样列出行号(类似 cat -n)
          -b t:如果有空行,空的那一行不显示行号(默认值)
      -n:列出行号表示的方法,主要有三种:
          -n ln:行号在屏幕的最左方显示
          -n rn:行号在自己字段的最右方显示,且不加0
          =n rz:行号在自己字段的最右方显示,且加0
      -w:行号字段占用的位数
      
  • 可翻页查看:more、less

    • more一页一页翻动

      # 用法
      more <文件>
      
      # 操作
      空格键(space):代表向下翻一页
      Enter:代表向下滚动一行
      /字符串:代表在这个显示的内容当中,向下查询“字符串”这个关键字
      :f:立刻显示出文件名以及目前显示的行数
      q:代表立刻离开more,不在显示该文件内容
      b或[ctrl]-b:代表往回翻页,不过这操作只对文件有用,对管道无用
      
    • less一页一页翻动

      # 用法
      less <文件>
      
      # 操作
      空格键(space):代表向下翻一页
      [PageDown]:向下翻动一页
      [PageUp]:向上翻动一页
      /字符串:向下查询“字符串”的功能
      ?字符串:向上查询“字符串”的功能
      n:重复前一个查询(与/或?有关)
      N:反向重复前一个查询(与/或?有关)
      q:离开这个less程序
      

      用法比more更有弹性,并且拥有更丰富的查询机制,同时支持上下键翻页。

  • 数据选取:head、tail

    • head取出前面几行

      # 用法
      head [-n number] <文件>
      
      # 参数
      -n:后面接数字,代表显示几行的意思
      
    • tail取出后面几行

      # 用法
      tail [-n number] <文件>
      
      # 参数
      -n:后面接数字,代表几行的意思
      -f:表示持续监测后面所接的文件名,要等到[ctrl]-c才会结束tail监测(这个用来实时查看日志很方便)
      
  • 非纯文本文件:od

    # 用法
    od [-t TYPE] <文件>
    
    # 参数
    -t:后面可以接各种“类型(TYPE)”的输出,例如:
        a       :利用默认的字符来输出
        c       :利用ASCII字符来输出
        d[size] :利用十进制(decimal)来输出,每个整数占用size bytes
        f[size] :利用浮点数(floating)来输出,每个整数占用size bytes
        o[size] :利用八进制(octal)来输出,每个整数占用size bytes
        x[size] :利用十六进制(decimal)来输出,每个整数占用size bytes
    
  • 修改文件时间或创建新文件:touch

    • linux下文件的时间

      • modification time(mtime
        该文件的“内容数据”更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性或权限
      • status time (ctime
        当文件的“状态”(status)改变时,就会更新这个时间。距离来说,像是权限与属性被更改了,都会更新这个时间。
      • access time(*atime
        当“该文件的内容被取用”时,就会更新这个读取时间(access)。距离来说,我们使用cat命令取一个文件时,这个文件的atime就更新为当前时间了
    • touch
      touch的默认行为:如果文件不存在则以目标文件名创建新文件,如果文件存在,则将其mtime、ctime和atime都更新为当前时间

      # 用法
      touch [-acdmt] <文件>
      
      # 参数
      -a:仅修改访问时间
      -c:仅修改文件的时间,如果文件不存在不创建新文件
      -d:后面可以接欲修改的日期而不用当前的日期,也可以使用 --date="日期或时间"
      -m:仅修改mtime
      -t:后面可以接欲修改的时间而不用目前的时间,格式为[YYMMDDhhmm]
      
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容