zoukankan      html  css  js  c++  java
  • Linux文件

    一、文件系统
        管理文件系统
            文件系统日志方法:
                数据模式  索引节点和文件都会被写入日志;丢失数据风险低,但性能差
                有序模式  只有索引节点数据会被写入日志,但只有数据成功写入后才删除;在性能和安全性之间取得了良好的折中
                回写模式  只有索引节点数据会被写入日志,但不控制文件数据何时写入;丢失数据风险高,但仍比不用日志好
        操作文件系统
            fdisk 创建分区——sudo fdisk /dev/sdb
                fdisk 命令:
                a  设置活动分区标志
                b  编辑BSD Unix系统用的磁盘标签
                c  设置DOS兼容标志
                d  删除分区
                l  显示可用的分区类型
                m  显示命令选项
                n  添加一个新分区
                o  创建DOS分区表
                p  显示当前分区表
                q  退出,不保存更改
                s  为Sun Unix系统创建一个新磁盘标签
                t  修改分区的系统ID
                u  改变使用的存储单位
                v  验证分区表
                w  将分区表写入磁盘
                x  高级功能
            创建文件系统——sudo mkfs.ext4 /dev/sdb
                创建文件系统的命令行程序:
               工 具           用 途
                mkefs       创建一个ext文件系统
                mke2fs      创建一个ext2文件系统
                mkfs.ext3   创建一个ext3文件系统
                mkfs.ext4   创建一个ext4文件系统
                mkreiserfs  创建一个ReiserFS文件系统
                jfs_mkfs    创建一个JFS文件系统
                mkfs.xfs        创建一个XFS文件系统
                mkfs.zfs        创建一个ZFS文件系统
                mkfs.btrfs    创建一个Btrfs文件系统
            type mkfs.ext4    -- type命令判断工具是否可用
            新文件系统挂载(重启linux文件系统不会自动挂载,除非创建在/etc/fstab)
                ——sudo mkdir /mnt/my_partition  -- 创建挂载点
                ——sudo mount -t ext4 /dev/sdb /mnt/my_partition        -- 挂载
            文件系统的检查与修复
                fsck
                fsck 的命令行选项:
                -a  如果检测到错误,自动修复文件系统
                -A  检查/etc/fstab文件中列出的所有文件系统
                -C  给支持进度条功能的文件系统显示一个进度条(只有ext2和ext3)
                -N  不进行检查,只显示哪些检查会执行
                -r  出现错误时提示
                -R  使用 -A 选项时跳过根文件系统
                -s  检查多个文件系统时,依次进行检查
                -t  指定要检查的文件系统类型
                -T  启动时不显示头部信息
                -V  在检查时产生详细输出
                -y  检测到错误时自动修复文件系统
        逻辑卷管理(未文件系统创建逻辑存储设备)
            逻辑卷管理布局:卷组、逻辑卷、物理卷(linux将每一个逻辑卷视为一个物理分区)
            LVM 允许你在Linux上用简单的命令行命令管理一个完整的逻辑卷管理环境
                功能三:快照(备份逻辑卷文件);条带化(跨多个物理硬盘创建逻辑卷);镜像(实时更新的逻辑卷的完整副本)
            使用LVM
                ①定义物理卷:
                    通过t命名改变分区类型:t——8e——w(8e代表LVM,w保存)
                    sudo pvcreate /dev/sdb1  -- 标记为LVM分区
                    sudo pvdisplay /dev/sdb1 -- 查看创建进度( VG Name 内容为空,因为物理卷还不属于某个卷组)
                ②创建卷组
                    sudo vgcreate Vol1 /dev/sdb1  -- 创建卷组Voll
                    sudo vgdisplay Vol1                        -- 查看创建卷组细节
                ③创建逻辑卷
                    lvcreate 的选项:
                    -c  --chunksize     指定快照逻辑卷的单位大小
                    -C  --contiguous    设置或重置连续分配策略
                    -i  --stripes       指定条带数
                    -I  --stripesize    指定每个条带的大小
                    -l  --extents           指定分配给新逻辑卷的逻辑区段数,或者要用的逻辑区段的百分比
                    -L  --size                   指定分配给新逻辑卷的硬盘大小
                        --minor               指定设备的次设备号
                    -m  --mirrors           创建逻辑卷镜像
                    -M  --persistent       让次设备号一直有效
                    -n  --name                   指定新逻辑卷的名称
                    -p  --permission       为逻辑卷设置读/写权限
                    -r  --readahead       设置预读扇区数
                    -R  --regionsize       指定将镜像分成多大的区
                    -s  snapshot               创建快照逻辑卷
                    -Z  --zero                   将新逻辑卷的前1 KB数据设置为零
                  sudo lvcreate -l 100%FREE -n lvtest Vol1  -- 为逻辑卷命名lvtest(指定卷组Voll)
                  sudo lvdisplay Vol1        -- 查看逻辑卷创建细节  
                ④创建文件系统
                    sudo mkfs.ext4 /dev/Vol1/lvtest
                    sudo mount /dev/Vol1/lvtest /mnt/my_partition -- 挂载
                ⑤修改LVM
                    Linux LVM命令:
                    vgchange  激活和禁用卷组
                    vgremove  删除卷组
                    vgextend  将物理卷加到卷组中
                    vgreduce  从卷组中删除物理卷
                    lvextend  增加逻辑卷的大小
                    lvreduce  减小逻辑卷的大小
    
    二、文件
        清空当前界面(clear)
        查看历史命令(history)
        列出文件和目录(ls):
        ls  -- 按列字母排序列出
        ls -a   -- 列出包括文件前代·的隐藏文件*(!隐藏文件的查看方式:cat .bash_history )
        ls -F     -- 区别文件和目录列出,文件后加正斜线区分/,文件后加*表示有执行权限的文件
        ls -F -R  -- 递归文件。直到所有目录或子目录下的文件。
        ls -l   -- 长列表显示文件详细信息:文件属性(类型和权限)、数量(!对于目录文件(-2)才是实际子目录的个数)、属主、属组、字节大小(byte)、上次更改时间、文件名。(!可以仅查看某个目录:ls -ld New_Dir 文件:ls -l new_file.sh)
                   支持通配符使用?*(?号代表一个字符,*号代表0个或多个字符)
                   支持正则表达式:
                       ls -l my_scr[ai]pt  a 或 i
                       ls -l f[a-i]ll      a 到 i
                       ls -l f[!a]ll                排除 a
        扩展:!列出当前环境所有包括隐藏文件:ls -al
              !列出当前环境所有包括隐藏文件 并区别目录:ls -F -al
              !列出当前环境所有包括隐藏文件 区别目录 并递归:ls -FR -al
    
        切换目录(cd):
        HFS标准(文件系统层次结构标准):http://www.pathname.com/fhs
        Linux目录名称
            /  虚拟目录的根目录。通常不会在这里存储文件
            /bin  二进制目录,存放许多用户级的GNU工具
            /boot  启动目录,存放启动文件
            /dev  设备目录,Linux在这里创建设备节点
            /etc  系统配置文件目录
            /home  主目录,Linux在这里创建用户目录
            /lib  库目录,存放系统和应用程序的库文件
            /media  媒体目录,可移动媒体设备的常用挂载点
            /mnt  挂载目录,另一个可移动媒体设备的常用挂载点
            /opt  可选目录,常用于存放第三方软件包和数据文件
            /proc  进程目录,存放现有硬件及当前进程的相关信息
            /root  root用户的主目录
            /sbin  系统二进制目录,存放许多GNU管理员级工具
            /run  运行目录,存放系统运作时的运行时数据
            /srv  服务目录,存放本地服务的相关文件
            /sys  系统目录,存放系统硬件信息的相关文件
            /tmp  临时目录,可以在该目录中创建和删除临时工作文件
            /usr  用户二进制目录,大量用户级的GNU工具和数据文件都存储在这里
            /var  可变目录,用以存放经常变化的文件,比如日志文件
        cd /bin       -- 进入bin目录(!绝对路径:目录或文件前加(/))
        cd bin     -- 进入当前目录下一个目录bin(!相对路径)
        cd ../bin  -- 进入bin的父目录(!扩展:cd ../../bin )
        cd                -- 返回当前用户起始目录(!查看当前目录位置:pwd )
    
        处理目录(可以使用tree工具检查目录)
            创建:
                mkdir New_Dir        -- 创建新目录
                mkdir -p New_Dir/Sub_Dir/Under_Dir        -- 创建层级目录
            删除:
                rmdir New_Dir        -- 删除空目录
                rm -ri New_Dir    -- 每一级提示删除:目录文件都删除掉
                rm -rf New_Dir    -- 递归删除(!强制删除:不提示,目录和文件一起删除)
            更改:
                mv Old_Dir New_Dir  -- 修改目录名(!New_Dir若存在,则会将Old_Dir移动到New_Dir下 )
    
        处理文件
            创建:
                touch New_Dir/my_file        -- 创建空文件,当文件存在更改修改时间
            删除:
                rm -i file        -- 删除文件(会有提示)
                rm -f file    -- 强制删除文件(不会有提示,慎用)
            更改:
                mv old_file new_Scripts        -- 移动或重命文件(!如果 new_Scripts 文件存在将被覆盖,如果 new_Scripts 是文件夹,old_file将被移动到文件夹 new_Scripts 下 )
                touch -a old_file        -- 更改访问时间(!默认显示更改时间,查看文件内容的时间不会显示。查看访问时间:ls -l --time=atime new_file)
            复制(cp):
                cp old_file new_file  -- 复制old_file,命名为new_file
                cp -i old_file Old_Dir/    -- 将old_file文件复制到Old_Dir下。如果Old_Dir有old_file文件,会提示是否覆盖
                cp -R Scripts/ Mod_Scripts/        -- 递归复制文件夹中所有内容到Mod_Scripts/ (扩展!备份script结尾的文件:cp *script Mod_Scripts/ )    
            链接(ln):
                创建软链接
                    ln -s data_file sl_data_file        -- 符号链接sl_data_file(注意不要软链接上创建软连接,容易断裂和混乱)
                创建硬链接
                    ln data_file sl_data_file                -- 硬链接(其实是同一个文件属性更改,如重命名,inode编码并没有改变。!查看文件的唯一inode编码:ls -i *data_file(扩展:ls -li *data_file 长列表显示))
            查看文件(file、cat、more):
                一、file tmp  -- 查看文件类型:确定该文本文件的 字符编码、文件类型    
                二、cat(查看所有内容。所有展示一旦运行不能停止,不适合大型文件查看)
                    cat old_file
                    cat -n old_file    -- 给查看文件加上行号
                    cat -b old_file  -- 给有文本的加上行号
                    cat -T old_file  -- T 参数会用 ^I 字符组合去替换文中的所有制表符
                三、more(分页工具:会在显示每页数据之后停下来,q键退出)
                四、less(more的升级版,部分中文会转数字不好用)
                五、查看文件首尾数据
                    head old_file        -- 默认查看前面10行数据
                    head -5 old_file  -- 限制查看前五行数据
                    fail old_file  -- 默认查看倒数10行数据 
                    fail -n 2 old_file  -- 限制查看倒数2行数据
            编辑:
                流编辑器:sed、gwak
                交互式编辑器:vim
    
        排序(sort):
        sort 命令参数:
            -b  --ignore-leading-blanks         排序时忽略起始的空白
            -C  --check=quiet                 不排序,如果数据无序也不要报告
            -c  --check                       不排序,但检查输入数据是不是已排序;未排序的话,报告
            -d  --dictionary-order            仅考虑空白和字母,不考虑特殊字符
            -f  --ignore-case                 默认情况下,会将大写字母排在前面;这个参数会忽略大小写
            -g  --general-number-sort         按通用数值来排序(跟 -n 不同,把值当浮点数来排序,支持科学计数法表示的值)
            -i  --ignore-nonprinting          在排序时忽略不可打印字符
            -k  --key=POS1[,POS2]             排序从POS1位置开始;如果指定了POS2的话,到POS2位置结束
            -M  --month-sort                  用三字符月份名按月份排序
            -m  --merge                       将两个已排序数据文件合并
            -n  --numeric-sort                按字符串数值来排序(并不转换为浮点数)
            -o  --output=file                 将排序结果写出到指定的文件中
            -R  --random-sort                 按随机生成的散列表的键值排序
                --random-source=FILE          指定 -R 参数用到的随机字节的源文件
            -r  --reverse                     反序排序(升序变成降序)
            -S  --buffer-size=SIZE            指定使用的内存大小
            -s  --stable                      禁用最后重排序比较
            -T  --temporary-directory=DIR     指定一个位置来存储临时工作文件
            -t  --field-separator=SEP         指定一个用来区分键位置的字符
            -u  --unique                      和 -c 参数一起使用时,检查严格排序;不和 -c 参数一起用时,仅输出第一例相似的两行
            -z  --zero-terminated             用NULL字符作为行尾,而不是用换行符
        sort file  -- 按字符排序
        sort -n file -- 按数值排序(!默认升序。降序排列:sort -nr file ) 
        sort -t ':' -k 3 -n /etc/passwd    -- -t 以分隔符:分隔,-k 3代表行第三列该列排序 
    
        查找文本特定信息(grep):
        grep three file     -- 搜索文件中的three的文本.如:grep ly_sw_cs /etc/passwd 查看ly_sw_cs用户是否可以使用系统
        grep -v t file   -- 输出不匹配t的行
        grep -n t file        -- 如果要显示匹配模式的行所在的行号,可加 -n 参数
        grep -c t file   -- 如果只要知道有多少行含有匹配的模式,可用 -c 参数  
        grep -e t -e f -e ,file         -- 输出了含有字符 t 或字符 f 或',' 的所有行  
        grep [tf] file   -- 正则表达式,t或f或',',同-e
    
        压缩文件(gzip,tar)
        gzip file        -- 压缩文件file,支持通配符gzip file* (原文件转化为压缩文件 file.gz )
        tar 命令的功能(归档):
            -A  --concatenate        将一个已有tar归档文件追加到另一个已有tar归档文件
            -c  --create             创建一个新的tar归档文件
            -d  --diff               检查归档文件和文件系统的不同之处
                --delete             从已有tar归档文件中删除
            -r  --append             追加文件到已有tar归档文件末尾
            -t  --list               列出已有tar归档文件的内容
            -u  --update             将比tar归档文件中已有的同名文件新的文件追加到该tar归档文件中
            -x  --extract            从已有tar归档文件中提取文件
            -C dir                   切换到指定目录
            -f file                  输出结果到文件或设备 file
            -j                       将输出重定向给 bzip2 命令来压缩内容
            -p                       保留所有文件权限
            -v                       在处理文件时显示文件
            -z                       将输出重定向给 gzip 命令来压缩内容   
        tar -cvf test.tar test/ test2/   -- 创建了名为test.tar的归档文件,含有test和test2目录内容 (打包)
        tar -tf test.tar                 -- 列出tar文件test.tar的内容(但并不提取文件) 
        tar -xvf test.tar                -- 从tar文件test.tar中提取内容(解包)
        以.tgz结尾的gzip文件是压缩过的tar文件可用命令 tar -zxvf filename.tgz 来解压
        
    三、文本编辑工具
        linux编辑器分类:
            ?  vim编辑器
            ?  nano编辑器
            ?  emacs编辑器
            ?  KWrite编辑器
            ?  Kate编辑器
            ?  GNOME编辑器
        linux的交互式编辑器选择一种就可以了
        交互式编辑器vim:
            检查vim软件包
                which vim -- /usr/bin/vim
                readlink -f /usr/bin/vi -- 找出链接文件的最后一环/usr/bin/vim.tiny
            vim基础
                vim编辑器有三种操作模式(ESC到一般模式与其他模式切换):
                    一般模式
                    插入模式(i a A o R 进入)    
                    命令行模式(/ :进入)
                vim中有用来移动光标的命令(处理放向键失灵的特殊情况):
                    h :左移一个字符。
                    j :下移一行。
                    k :上移一行。
                    l :右移一个字符。
                vim提供了一些能够提高移动速度的命令:
                    PageDown(或Ctrl+F):下翻一屏。
                    PageUp(或Ctrl+B):上翻一屏。
                    G :移到缓冲区的最后一行。
                    gg :移到缓冲区的第一行。
                    num G :移动到缓冲区中的第num行。        
                vim命名行(普通模式下键入:):
                    q! :取消所有对缓冲区数据的修改并退出
                    wq :将缓冲区数据保存到文件中并退出
                复制和黏贴:普通模式下,通过寄存器使用p命名实现
                    剪切黏贴:x/dw/dd/d$;p
                    复制黏贴:yw/y$;p(yw表示复制一个单词,y$表示复制到行尾)
                查找和替换
                    查找的3种情况,下斜线+单词查找,要继续查找同一个单词,按下斜线键,然后按回车键:(在一般模式中直接使用 /+字符串 查找)
                        如果要查找的文本出现在光标当前位置之后,则光标会跳到该文本出现的第一个位置。
                        如果要查找的文本出现在光标当前位置之前,则光标会绕过文件末尾,出现在该文本所在的第一个位置(并用一条消息指明)。
                        输出一条错误消息,说明在文件中没有找到要查找的文本。
                    替换
                        :s/old/new/ :替换当前行的第一个old
                        :s/old/new/g :一行命令替换所有 old 。
                        :n,ms/old/new/g :替换行号 n 和 m 之间所有 old 。
                        :%s/old/new/g :替换整个文件中的所有 old 。
                        :%s/old/new/gc :替换整个文件中的所有 old ,但在每次出现时提示。
                vim常用命令解释:
                    x  删除当前光标所在位置的字符
                    dd  删除当前光标所在行
                    dw  删除当前光标所在位置的单词
                    d$  删除当前光标所在位置至行尾的内容
                    J  删除当前光标所在行行尾的换行符(拼接行)        
                    u  撤销前一编辑命令
                    i  在当前光标前插入数据
                    a  在当前光标后追加数据
                    A  在当前光标所在行行尾追加数据
                    o  在当前光标所在行上添加一行
                    r  用char替换当前光标所在位置的单个字符
                    R  用text覆盖当前光标所在位置的数据,直到按下ESC键
    生活就要逢山开路遇水搭桥,愿共勉!
  • 相关阅读:
    [WPF]搜索列表项的四种实现方案点评
    一个生成均匀分布随机数的问题
    制作NSIS命令行窗口输出插件
    公司的Principle给出的高性能数据库设计,总觉得别扭
    用WordPress一步步建立自己的博客站点
    译作要严格尊重原著吗?——读〈Windows核心编程〉小感
    这么好的书怎么全国都缺货?
    【C语言】用c语言实现简单的五子棋
    【C语言】游戏菜单界面设计 与 游戏整合
    【C语言】基于五子棋框架上的 象棋 小游戏
  • 原文地址:https://www.cnblogs.com/TianMu/p/11193686.html
Copyright © 2011-2022 走看看