Linux文件管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux文件管理相关的知识,希望对你有一定的参考价值。

Linux文件系统:

Linux: glibc

程序编译方式:
    动态链接
    静态编译

进程的类型:
    终端:硬件设备,关联一个用户接口

    与终端相关:通过终端启动
    与终端无关:操作引导启动过程当中自动启动

操作系统的组成:
    静态:kernel,application

    文件系统:层级结构

FHS:filesystem hierarchy standard文件系统层级结构标准

    http://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html

    /bin : 所有用户可用的基本命令程序文件;
    /sbin:供系统管理员使用的工具
    /boot:引导加载器必须用到的各种静态文件:kernel,initramfs(initrd),grub等
    /dev : 存储特殊文件或设备文件;
        设备有两种类型:字符设备(线性设备),块设备(随机设备);
    /etc :系统程序的配置文件,只能为静态;  
    /home:普通用户的家目录的集中位置;一般每个普通用户的家目录默认为此目录下与用户同名的子目录,/home/username;
    /root:管理员的家目录:可选;
    /lib :为系统启动或根文件系统上的应用程序(/bin,/sbin等)提供共享库,以及内核提供内核模块
        libc.so.*:动态链接的c库
        ld*:运行时链接器/加载器;
        modules:用于存储内核模块的目录
    /lib64:64位系统特有的存放64位共享库的路径;
    /media:便携式设备挂载点,cdrom,floppy等;
    /mnt  :其他文件系统的临时挂载点;
    /opt  :附加应用程序的安装位置;可选路径;
    /srv  :当前主机为服务提供的数据;
    /tmp  :为那些会产生临时文件的程序提供的用于存储临时文件的目录;可供所有用户执行写入操作;有特殊权限;
    /usr:usr hierarchy ,全局共享的只读数据路径;
        bin,sbin
        lib,lib64
        include:c程序头文件
        share:命令手册和自带文档的架构特有文件的存储位置;
        local:另一个层级结构;
        X11R6:x-window程序的安装位置
        src:程序源码文件的存储位置;
    /usr/local:让系统管理员安装本地应用程序;也通常用于安装第三方程序;
    /var :/var hierarchy , 存储常发生变化的数据的目录;
        cache   应用缓存数据
        lib     可变状态信息
        local   / usr / local的可变数据
        lock    锁定文件
        log     日志文件和目录
        opt     / opt的可变数据
        run     与运行流程相关的数据
        spool   应用假脱机数据
        tmp     系统重新启动之间保留的临时文件

    /proc :内核和进程存储其相关信息:他们多为内核参数,例如net.Ipv4.ip._forward,虚拟为net/ipv4/ip_forward,存储于/proc/sys/,因此其完整路径为/proc/sys/net/ipv4/ip_forward;虚拟文件系统;
    /sys  :sysfs 虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;其主要作用在于为管理Linux设备模型的接口;内核和系统信息虚拟文件系统

    参考文档:https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/index.html

Linux文件上的文件类型:
-:常规文件;即f;
d:directory ,目录文件;
b:block device ,块设备文件,支持以"block"为单位进行随机访问;
c:character device ,字符设备文件,支持以"character"为单位进行线性访问;
major number :主设备号,用于标识设备类型,进而确定要加载的驱动程序;
minor number : 次设备号,用于标识同一类型中的不同的设备;
8位二进制:0-255
l:symbolic link,符号链接文件;
p:pipe,命令管道;
s:socket,套接字文件;

Linux基本命令:
命令类型:
外部命令
shell内嵌命令

    区分内外部命令:
        type commend
            内部:bulitin
            外部:显示为命令文件路径;
                注意:命令可以有别名;别名可以与原名相同,此时原名被隐藏;因此要获取原命令,则使用command;

    命令别名:
        alias :获取所有可用别名的定义;
        alias cmd :定义别名(注意:仅对当前shell进程有效);
        unalias name:撤销别名; 

which:
    显示命令完整路径;

whereis:
    显示二进制命令在何处,以及man手册;
    -b:只查看二进制程序路径;
    -m:只查看使用手册文件路径;
who:
    查看登入到前端口的用户;
    -b:显示系统最近一次启动时间;
    -r:运行级别;
    -u:
w:
    who 的增强版,还可显示做什么,例如:CPU资源占用....;

bash的基础特性1:history

历史命令:shell 进程会其会话中保存此前用户提交执行过的命令;
    ]# history 
        定制history的功能,可通过环境变量实现;
            HISTSIZE:shell进程可保留的历史的条数;
            HISTFLIE:持久保存命令历史文件;
                .bash_history
            HISTFILESIZE:命令历史文件数;

        命令用法:
            history [-c] [-d offset] [n] 
            history -anrw [filename] 
            history -ps arg [arg...]

            -c:清空命令历史;
            -d offset:清除某条历史命令;
            -r:从文件读取命令历史至历史列表中;
            -w:把历史列表中的命令追加至历史文件中;
            history # :显示最近#条命令;

        调用命令历史列表中的命令:
            !#:调用第#条命令执行;
            !!:再一次执行上一条命令;
            !SITRING:再一次执行命令历史列表中最近一个以SIRING(开头字母,从下往上检索)开头的命令;

                注意:命令的重复执行有时候需要依赖于幂等性;

        调用上一条命令的参数:
            快捷键:esc+.
            字符串:!$

        控制命令历史记录的方式:
            环境变量:HISTCONTROL
                ignoredups:忽略重复的命令;
                ignorespace:忽略以空白字符开头的命令
                ignoreboth:以上两者同时生效;

            修改变量的值:
                NAME=‘VALUE‘

总结:
FHS,命令及bash命令历史
FHS:
/bin,/sbin,/lib,/lib64,/etc
/home,/root
/boot
/media,/mnt
/proc,/sys
/tmp
/srv 为服务提供数据
/opt
/dev
/usr
/bin,/sbin,lib,lib64,share,local,include
/var
cache,lib,log,....
命令:which,whereis,who,w,alias,unalias
命令历史:history

bash的基础特性2: 命令/路径补全
tab键

目录管理类命令:mkdir,rmdir

mkdir: 创建目录
    -p:递归创建目录
    -v:显示创建详细过程
    -m MODE:直接给定权限

rmdir: 移除空目录
    -p:只要目录为空就删除,连续执行;(不提倡使用)
    -v:显示过程;

实践:
    如何创建/tmp/x/y1,/tmp/x/y2,/tmp/x/y1/a,/tmp/x/y1/b?
    如何创建a_c,a_d,b_c,b_d;
    创建目录结构/tmp/mysysroot/
                    bin
                    sbin
                    etc
                        sysconfig
                            network-scripts
                    usr
                        bin
                        local
                            bin
                            etc
                        lib
                        lib64
                    var
                        cache
                        log
                        run

                ├── sysmyroot
                │?? ├── bin
                │?? ├── etc
                │?? │?? └── sysconfig
                │?? │??     └── network-scripts
                │?? ├── sbin
                │?? ├── usr
                │?? │?? ├── bin
                │?? │?? ├── lib
                │?? │?? ├── lib64
                │?? │?? └── local
                │?? │??     ├── bin
                │?? │??     └── etc
                │?? └── var
                │??     ├── cache
                │??     ├── log
                │??     └── run

bash的基础特性3:命令行展开
~:自动展开为用户的家目录,或指定的用户的家目录;
{}:可承载一个以逗号分隔的路径列表,并能够将其展开为多项式;

    例如: mkdir -pv /tmp/x/{y1/{a,b},y2}
            mkdir -v {a,b}_{c,d}
            mkdir -pv /tmp/sysmyroot/{bin,sbin,etc/sysconfig/network-scripts,usr/{bin,local/{bin,etc},lib,lib64},var/{cache,log,run}}

tree命令:
-L level : 指定要显示的层级;

bash的基础特性4: 命令的执行状态结果
命令执行的状态结果:
bash通过状态返回值来输出此结果;
成功:0
失败:1-255

    命令执行完成之后,其状态返回值保存于 bash 的特殊变量$?中;

命令正常执行时,有的还会有命令返回值;
    根据命令及功能不同,结果个不相同;

引用命令执行结果:
    $(cmd)
    `cmd

        例如: -pv /tmp/$(date +%H-%M-%S)

bash的基本特性5:引用
强引用:‘‘
弱引用:""
命令引用:``

bash的基础特性6:快捷键
ctrl+a
ctrl+e

ctrl+u
ctrl+k

ctrl+l

文本查看命令:cat,tac,head,tail,more,less

以上是关于Linux文件管理的主要内容,如果未能解决你的问题,请参考以下文章

使用 Git 来管理 Xcode 中的代码片段

gitlab 可以进行版本和权限控制,bug管理吗?供部门内部使用,而且是Linux和Windows平台都能使用

如何使用tablayout和片段管理java文件[关闭]

massCode 一款优秀的开源代码片段管理器

如何管理在每个 git 版本中添加私有代码片段?

[linux][c/c++]代码片段01