Linux之目录介绍及文件管理

Linux filesystem hierarchy and file manager

命令总结:
本章节包含如下命令:
touch, mkdir, cp, install, mv, rm, mktemp,more, less, head, tail, man, stat,setfacl, getfacl, set, wc, cut, sort, uniq, diff, path

一、File system hierarchy standard

**Linux设计哲学一切皆文件,包括所有的设备、总线都定义为文件,FHS协会将linux文件定义为各个不同的层级,每个从根到根下的二级目录,表示的意义都不一样。Linux操作系统包含了kernel和application。Linux系统又将各类库划分为两大类,其中包含了静态库和动态库。静态库是直接编译进同内核,即initrd中,随系统启动时启动。动态库是将所包含的功能编译为单个库文件,放至系统指定的目录中,再程序应用启动时,按需调用。Linux将系统所需要用到的库文件都包含进了glibc库中,故glibc是linux系统必不可少的库文件。FHS定义的linux文件系统也被称作为Filesystem Hierarchy Standard,其也被众多的linux分行版本所引用,只是其极少的部分未统一。

Filesystem Hierarchy standard:

  1. /bin Essential user command binaries,所有用户的基本命令文件存放路径
  2. /sbin System binaries,系统管理二进制程序存放路径
  3. /boot Static file of the boot loader,系统引导加载器必须用到的各静态文件,如:kerenl,initrd,initramfs
  4. /dev device file ,特殊文件及设备文件
  5. /etc Host-specific system configuration,系统及程序的配置文件,只能为静态文件,不能为二进制文件
  6. /home User-home directory(optional),普通用户的家目录
  7. /lib Essential shares binaries and kernel moudles,为系统及程序提供共享库(/bin,/sbin等),以及为kernel提供内核模块
    1. lib.so.* :启动链接的C库
    2. ld* : 运行时链接器/加载器
    3. modules : 用于存储内核模块的目录
  8. /lib64 64位操作系统特有存储64位库的路径
  9. /media Mount point for removable media
  10. /mnt Mount point for temp
  11. /opt And-on application software packages,第三方软件安装位置
  12. /root root home directory (optional)
  13. /srv Date for service provided by system,为当前主机服务提供的数据
  14. /tmp Temporary files.为所有用户提供临时存放文件的路径,所有用户有写权限,这处有特殊权限
  15. /usr User Hierarhcy,全局共享只读数据路径
    bin/ sbin/ lib/ lib64/ include/ share/ local/ src/
  16. /usr/local local hierarchy.让管理员安装本地程序,能通常安装三方程序
  17. /var variables,var hierarchy,存储学发生变化的数据目录
    1. cache/ application cache date
    2. lib/ variables state information
    3. local/ variables date for /usr/local
    4. lock/ lock file
    5. log/ log file and directory
    6. opt/ variable date for opt
    7. run/ date relevnat to runing processes
    8. spool/ application spool date
    9. tmp/ temporary files
  18. /proc Kernel and processes information virtual filesystem,基于内存的虚拟文件系统,存储内核和进程的相关信息,多为内核参数
  19. /sys sysfs虚拟文件系统,提供了比proc更为理想的访问内核数据的途径,主要用来管理硬件
    1. /sys/devices 这是内核对系统中所有设备的分层次表达模型
    2. /sys/dev 维护了一个按字符设备和块设备的主次设备号连接到真实设备,在2.6.26引用
    3. /sys/bus 按总线类型分层旋转的目录结构,devices中的所有设备都工作在某种总线下
    4. /sys/class 按设备功能分类的设备模型,如所有输入设备/sys/class/input之下
    5. /sys/block 系统中所有的块设备
    6. /sys/firmware 系统加载固件机制对用户空间的接口
    7. /sys/fs 描述系统中所有文件系统
    8. /sys/kernel 内核所有可调整能数的位置
    9. /sys/module 系统中所有的模块信息,不论是静态编译或动态编译的模块KO文件,都可能会出现在这里

Linux system file type

  1. - : 普通文件
  2. d : 目录文件,directory
  3. b : block device,块设备文件,以block为单位进行随机访问
  4. c : character device,字符设备,支持以charactor为单位,进行线性访问,有时序
  5. l : symbolic link,符号连接文件
  6. p : pipe,命名管道
  7. s : socket,套接字文件,IP:PORT = Socket

二、文件的复制、移动及删除

创建文件

touch

`touch` - touch - change file timestamps
    synopsis:touch [OPTION]... FILE...
    options:
        `-c` : 只是修改时间,不创建文件
        `-a` : 修改文件的access时间,即访问时间
        `-m` : 修改文件的mtime时间,却数据的修改时间,元数据的修改时间是changetime,Ctime时间
        `-t` : STAMP,改到的指定时间
    例:touch -m -t 200212012001.08  # 修改mtime 并指定详细时间

文件分两类:
    文件元数据(meta date)
    文件数据

 时间戳:
            Access time : 最近访问时间
            Modify time :  数据改变的时间
            Change time : 元数据改变的时间
            注:只要数据改变了, 元数据也会变的
 故:使用touch修改timestamps,是修改文件的元数据部分

创建目录

`mkdir` - mkdir - make directories
    synopsis: mkdir [OPTION]... DIRECTORY...
    options:
        `-p` : --perents,按照创建父目录
        `-v` :--verbose,查看创建进度信息
        `-m` : --mode=MODE,设置权限
             mkdir -m u=x,go=w DIR
             mkdir -m 600 DIR
    例:如何创建/tmp/x/y1,/tmpx/y2 ,/tmp/x/y1/a,/tmp/x/y1/b?
        mkdir -p ‘/tmp/x/{y1/{a,b},y2}
    例:如何创建a_c,a_d b_c,b_d
        mkdir {a,b}_{c,d}

============

复制文件

文件及目录的复制 ,linux是将底层的数据流从一个位置导到另一个位置,再进行重命名操作

CP命令:

`cp` - copy file and directory
    synopsis: cp [OPTION]... [-T] SOURCE DEST
              cp [OPTION]... SOURCE... DIRECTORY
              cp [OPTION]... -t DIRECTORY SOURCE...
    options:
        `-i` : --interactive,交互模式,即覆盖之前提示用户
        `-f` : force,强制模式
        `-r` `-R` : 递归复制文件,用于复制目录
        `-d` : 复制连接,如果复制的是一个连接文件,加`-d`只会复制连接文件,不会复制连接文件所指向的文件及内容
        `--preserve` : 复制其扩展属性,=mode,=ownership,=timestamps(文件属性时间),=xattr(扩展属性),=context(安全标签),=links,=all(表示以上都包含)
        `-a` : -dR --preserve=all,用于实现归档(archive)
        
        注意:如果在不加`-d`参数时复制links,将把连接指向的文件内容复制一份到指定位置并以连接文件名命名
单源复制注意内容:
    如果DEST不存在:则事先创建此文件,并复制源文件的数据流至DEST中
    如果DEST存在:
        如果DEST是非目录文件:则覆盖目标文件
        如果DEST是目录文件:则先在DEST目录下创建一个与源文件同名的文件并复制数据流至目标文件**
多源复制注意内容:
    如果DEST不存在:错误
    如果DEST存在:
        如果DEST是非目录文件,错误
        如果DEST是目录文件:分别复制每个文件至DEST目录中, 并保持原名

install命令:

`install` - copy files and set attributes
    synopsis: install [OPTION]... [-T] SOURCE DEST
              install [OPTION]... SOURCE... DIRECTORY
              install [OPTION]... -t DIRECTORY SOURCE...
              install [OPTION]... -d DIRECTORY...
    options:
        `-m` : --mode=MODE,设定目标文件权限
                install -m o=x,ug=rw /etc/issue .
                nstall -m 755 /etc/issue ./issue
        `-o` : --owner=OWNER,设定属主
        `-g` : --group=GROUP,设定属组
        `-d` : 创建目录

移动文件

mv

`mv` - move (rename) files
    sinopsis: mv [OPTION]... [-T] SOURCE DEST
          mv [OPTION]... SOURCE... DIRECTORY
          mv [OPTION]... -t DIRECTORY SOURCE...
    options: 
        `-f` : 强制
        `-i` : 交互

删除文件

rm

`rm` - remove files or directories
    sinopsis: rm [OPTION]... FILE...
    options:
        `-f` : 强制
        `-i` : 交互
        `-r`,`-R` : 递归操作
    注:所有文件不建议直接删除,建议使用MV将文件移动到一个固定位置,后期确定不使用的时候再清理

创建临时文件和目录

mktemp

`mktemp` - mktemp - create a temporary file or directory
    synopsis: mktemp [OPTION]... [TEMPLATE]
    options:
        `-d` : 创建临时目录
        ·-u` : 测试创建
mktemp /tmp/mytmp.XXXX
mktemp -d /tmp/mytmp.XXXX   

================

三、文件查看类工具

分屏工具

more
`more` - more - file perusal filter for crt viewing
    synopssis: more [-dlfpcsu] [-num] [+/pattern] [+linenum] [file ...

less

`less` - less - opposite of more
    synopsis: less File
    options:
        `space` - 向下翻页
        `b` - 向上翻页
        `u` - 向上翻半页
        `d` - 向下翻半页
        `j` - 向下翻一行
        `k` - 向上翻一行
        `q` - 退出

head

`head` - head - output the first part of files
    synopsis: head [OPTION]... [FILE]...
    options:
        `-n` : 显示要查看的前几行
        注:一般可以使用`-6` 代替 `-n 6`

tail

`tail` - tail - output the last part of files
    synopsis: tail - output the last part of files
    options:
        `-n` : 显示要查看的后几行
        注:一般可以使用`-6` 代替 `-n 6`
        `-f` : --follow,监控最后行的变化,并显示出来

man

`man` - man - format and display the on-line manual pages
    synopsis: format and display the on-line manual pages
    options:
        注:同less工具, man工具就是调用了Less的查看功能

stat

`stat` - stat - display file or file system status
    synopsis: stat [OPTION]... FILE...
    查看文件的元数据信息

wc

`wc` - wc - print newline, word, and byte counts for each file
    synopsis : wc [OPTION]... [FILE]...
    options:
        -l : 统计行数
        -c : byte conuts 
        -w : 统计单词总数
        -m : 字符
   使用`wc file`: 格式为:行数 单词 字符

cut

`cut` - remove sections from each line of file
    synopsis: cut OPTION... [FILE]...
    options:
        -d CHAR: 指定分隔符,默认为空格
        -f #|#,#|#,#-#: fields,保留那些字段
  • 例:
    • cut -d: -f7 /etc/passwd
    • cut -d: -f1,3,5-7 /etc/passwd

sort

`sort` - sort - sort lines of text files
    synopsis: sort [OPTION]... [FILE]...
    options:
        -t CHAR : 指定分隔符
        -n : 基于数据大小排序
        -k # : 以#字段列进行排序
        -r :逆序进行排序(reverse)
        -f : 忽略字符大小写
        -u : 重复的行只保留一份(重复相同且连续的行)
  • 例:
    • sort -r -n -t: -k3 /etc/passwd
    • cut -d: -f7 /etc/passwd | sort -u(统计系统用户用了哪几种shell)

uniq

`uniq` - report or omit repeated lines
    synopsis: uniq [OPTION]... [INPUT [OUTPUT]]
    options:
        -c : 每行重复出现的次数
        -u : 只显示没有重复的行
        -d : 只显示重复的行,至少2次或2次以上
  • 例:
    • cut -d: -f7 /etc/passwd | sort | uniq -c (统计系统同一shell使用的次数)

diff

`diff` - diff - compare files line by line
    synosis: diff [OPTION]... FILES
    options:
        -u : 不同风格显示文件差别,使用unified机制,显示要修改行的上下文,默认为3行
  • 例:diff fstab fstab.bak > fstab.path (应用两个文件成生fstab.path补丁文件)

path

synopsis: path [option] -i /path/to/patch_file /path/to oldfile (打补丁)
          path /path/to/oldfile < /path/to/patch_file (同上)
    • path -i fstab.path fstab : 打补丁
    • path -R -i fstab.patch fstab
  • diff用于生成补要,path用于打补丁

==============

IO重定向及管道

什么是管道及其作用:

将一个命令的执行结果作为另一个命令的输入,即是管道

计算机对文件的识别方式:

  • 标准输入,0表示
  • 标准输出,1表示
  • 错误输出,2表示

程序的数据流有三种:

输入的数据流 <---- 标准输入(stdin),即键盘
输出的数据流 ----> 标准输出(stdout),即显示器
错误的输出流 ----> 错误输出(stderr),显示器

IO重定向

  • > : 覆盖输出重定向
  • >> : 追加输出重定向
  • < : 输入重定向
  • 2> : 错误覆盖输出重定向
  • 2>> : 错误追加输出重定向
  • &> : 合并覆盖重定向(即把标准输出和错误输出合在一起)
  • &>> : 合并追加重定向(即把标准输出和错误输出合在一起)
  • >| : 强行覆盖(即使用命令set -c 关闭覆盖重定向时,可以使用这个强行覆盖)

setw命令:

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

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,131评论 2 34
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,138评论 9 467
  • 1.Linux下如何用命令查看实时日志(完整命令) tail -f 路径.log查看前多少行 tai-200f 路...
    qianyewhy阅读 2,249评论 0 11
  • Linux系统一般有4个主要部分: 内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本...
    偷风筝的人_阅读 3,241评论 1 17
  • 秋风 踮着脚尖 踩着树梢 惊落黄叶几片 蟋蟀 急忙地抖动翅膀 花腔耍得漂亮 月亮为歌者打上一道追光 团聚 是今晚最...
    青鸟啾啾阅读 371评论 12 2