zoukankan      html  css  js  c++  java
  • 《Linux》跟老男孩学Linux核心系统命令

    一、命令行简介

    1.1 Linux 命令行提示符介绍

    [root@root_pc ~]#         #<==这是超级管理员root用户对应的命令行
    [oldboy@oldboy_pc ~]$  #<==这是普通用户oldboy对应的命令行

    1、#号,是使用超级用户root登录后的命令行结尾提示符,而$号是使用普通用户登录后的命令行结尾提示符。

    2、命令行提示符@前面的字符代表当前登录的用户(可用whoami查询),@后面的为主机名(可用hostname查询),~所在的位置是窗口当前用户所在的路径。

    系统Bash命令行的提示符是由一个称为PS1的系统环境变量控制的。

    PS1变量 含义
    d 代表日期,格式为weekday month date,例如“Mon Aug 1”
    H 完整的主机名称
    h 仅取主机的第一个名字
    显示时间为24小时格式,如:HH:MM:SS
    T 显示时间为12小时格式
    A 显示时间为24小时格式:HH:MM
    u 当前用户的账号名称
    v BASH的版本信息
    w 显示完整的路径,其中家目录会以~代替,这是本例的主角
    W 利用basename取得工作目录名称,所以只会列出最后一个目录
    # 执行的第几个命令
    $ 提示字符,如果是root,则提示符为#,如果是普通用户,则为$

     因此,要查看当前的PS1变量的值,可采用如下命令:

    echo $SP1                 #<== 打印超级管理员对应的PS1
    >>>[u@u W]$            #<==@是一个分隔符

    临时修改PS1变量对应的值:

    PS1='[u@h w]$ '        #  更改了w的大小写

    永久修改

    编辑 /etc/bashrc 文件
    修改第36行左右的 $PS1
    注销并重新登录系统或直接执行 source /etc/bashrc

    1.2 Linux命令行常用快捷键

      常用连接工具SecureCRT 和 Xshell 客户端软件,以下快捷键也正对这两个工具。

    快捷键 供能说明(标红带*为常用)
    最有用的快捷键
    tab 命令或路径等的补全键,Linux最有的快捷键*
    移动光标快捷键
    Ctrl+a 光标回到命令行首*
    Ctrl+e 光标回到命令行尾*
    Ctrl+f 光标向右移动一个字符(相当于方向键右键)
    Ctrl+b 光标向左移动一个字符(相当于方向键左键)
    剪切、粘贴、清除快捷键
    Ctrl+Insert 复制命令行内容*
    Shift+Insert 粘贴命令行内容*
    Ctrl+k 剪切(删除)光标处当行尾位的字符*
    Ctrl+u 剪切(删除)光标处当行首的字符*
    Ctrl+w 剪切(删除)光标前的一个单词
    Ctrl+y 粘贴Ctrl+u/Ctrl+k/Ctrl+w删除的文本
    Ctrl+c 中断终端正在执行的任务或者删除整行*
    Ctrl+h 删除光标所在处的前一个字符(相当于退格键)
    重复执行命令快捷键
    Ctrl+d 退出当前Shell命令行*
    Ctrl+r 搜索命令行使用过的历史命令记录*
    Ctrl+g 从执行Ctrl+r的搜索历史命令模式中退出
    控制快捷键
    Ctrl+l 清除屏幕的所有内容,并在屏幕的最上面开始一个新行,等同于clear命令
    Ctrl+s 锁定终端,使之无法输入内容
    Ctrl+q 解锁执行Ctrl+s的锁定状态
    Ctrl+z 暂停执行在终端运行的任务*
    !号开头的快捷命令
    !! 执行上一条命令
    !pw 执行最近以pw开头的命令*
    !pw:p 仅打印最近以pw开头的命令,但不执行
    !num 执行历史命令列表的第num(数字)条命令*
    !$ 上一条命令的最后一个参数,相当于Esc+.(点)
    ESC相关
    Esc+.(点) 获取上一条命令最后的部分(空格分隔)*
    Esc+b 移动到当前单词的开头
    Esc+f 移动到当前单词的结尾

    1.3 在Linux命令行下查看命令帮助

    man 参数选项 命令 / 文件
    命令 --help

      如果需要中文显示,需要调整系统字符集为 zh_CN.UTF-8 

    cat /etc/sysconfig/i18n
    >>LANG="zh_CN.UTF-8"
    echo $LANG
    >>zh_CN.UTF-8

    bash内置命令:

      在Linux系统里有一些特殊的命令,它们就是bash程序的内置命令,例如cd、history、read等,这些命令在系统目录里不存在真实的程序文件(存在于bahs程序里)

    help cd

    还有一个很少用的,跟man差不多的命令info,但是几乎用不到。

    info ls

    1.4 Liinux 关机、重启、注销

    shutdown

    参数选项 解释说明
    -r 重启系统,而不是关机,shutdown -r now
    -h 关机,shutdown -h now
    -c 取消正在执行的shutdown指令

    其他命令表

    命令 说明
    关机命令
    shutdown -h now 立即关机
    shutdown -h +1 1分钟后关机,1可以是别的数字或时间点,例如:11:00。shutdown -c取消
    halt 立即停止系统,需要人工关闭电源,是reboot的链接文件
    init 0 切换运行级别到0,0表示关机,因此此命令的作用就是关机
    poweroff 立即停止系统,并且关闭电源
    重启命令
    reboot 立即重启(生产常用)
    shutdown -r now 立即重启(生产常用)
    shutdown -r +1 1分钟后重启
    init 6 切换运行级别到6,6表示重启,因此此命令的作用就是重启
    注销命令
    logout 注销退出当前用户窗口
    exit 注销退出当前用户窗口,快捷键Ctrl+d

    二、文件和目录操作命令

    2.1 pwd:显示当前所在的位置 *****

      pwd 命令是 “print working directory”的缩写,其功能是显示当前工作目录的绝对路径。正常情况下使用不带参数。

    2.2 cd:切换目录 *****

      cd命令是 "Change Directory"的缩写,其功能是从当前工作目录切换到指定的工作目录。

      该命令是 bash shell 内置命令。

    参数选项 解释说明(带*的为重点)
    - 当只使用“-”选项时,将会从当前目录切换到系统环境变量"OLDPWD"对应值的目录路径,即当前用户上一次所在的目录路径
    ~

    当只使用“-”选项时,将会从当前目录切换到系统环境变量"HOME"对应值的目录路径,即当前用户的家目录所在的路径

    .. 当只使用“..”选项时,将会从当前目录切换到当前目录的上一级目录所在的路径

    2.3 tree:以树形结构显示目录下的内容

      功能是以树形结构列出制定目录下的所有内容,包括所有文件、子目录即子目录里的目录和文件。

      tree 命令需要安装,检查  rpm -qa tree ,安装 yum -y install tree 

    参数选项 解释说明
    -a 显示所有文件,包括隐藏文件(以 "." 点开头的文件)
    -d 只显示目录*
    -f 显示每个文件的全路径
    -i 不显示树枝,常与-f参数配合使用
    -L level 遍历目录的最大层数,level为大于0的正整数*
    -F 在执行文件、目录、Socket、符号连接、管道名称等不同类型文件的结尾,各自加上 "*"、"/"、"="、"@"、"|"号,类似于 ls 命令的 -F 选项

      如果出现系统字符集问题,不能正确显示中文,以下命令解决

    LANG=en_US.UTF-8

    实例:

    显示 etc 下第一层的目录结构
    tree -dL 1 /etc/
    
    显示 boot 下第一层完整路径
    tree -L 1 1 -f /boot/
    
    >>>
    |____  /boot/dir1
    |____  /boot/dir2
    |____  /boot/dir3
    
    显示 boot 下第一层完整路径而不带树杈
    tree -L 1 1 -fi /boot/
    
    >>>
    /boot/dir1
    /boot/dir2
    /boot/dir3

    技巧性实例

    过滤以斜线结尾的所有内容(其实就是过滤出目录)
    tree -L 1 -F /boot/ | greop /$
    
    使用 -d 参数显示目录树
    tree -L 1 -d /boot/

    2.4 mkdir:创建目录 *****

      mkdir 是“make directions”缩写。功能是创建目录。如果目录已经存在,会提示,而不会继续创建。

    可以创建多个目录
    
    mkdir dir1 dir2 dir3
    参数选项 解释说明(带 * 的为重点)
    -p

    1:递归创建目录

    2:即使要创建的目录事先已存在也不会报错提示目录已存在

    -m 设置新创建目录的默认目录对应的权限
    -v 显示创建目录的过程
    mkdir -p /test/test
    mkdir -pv test/{dir1_1,dir1_2}/{dir2_1,dir2_2}
    mkdir -m 333 dir2

    扩展知识:大括号{}

    echo {B,C}
    >>>B C
    
    echo A{B,C}
    >>>AB AC
    
    echo A{,C}
    >>>A AC

      生产案例:写了一个Shell脚本,准备对某个目录(假如目录很大, 几百个GB)做一些操作,在此之前要测试脚本,所以要搭建一个模拟环境,然后把目录结构复制过去。

    显示 test 文件夹的所有目录树,--noreport不显示最后一行统计信息
    tree -fid --noreport test
    tree -fid --noreport test >>~/test.txt
    
    搭建好环境后运行
    mkdir -p `cat ~/test.txt`
    
    当使用反引号(键盘ESC下方),反引号内部使用cat命令读取 test.txt.文件内容。
    一个命令语句中如果还有反引号包含的命令,那么需要优先执行反引号中的命令语句。

    2.5 touch:创建空文件或改变文件的时间戳属性  *****

      touch命令有两个功能:一是创建新的空文件;二是改变已有文件的时间戳属性

    参数选项 解释说明
    -a 只更改指定文件的最后访问时间
    -d STRING 使用字符串 STRING 代表的时间作为模板设置指定文件的时间属性
    -m 只更改指定文件的最后修改时间
    -r file 将指定文件的时间属性设置为与模板文件 file 的时间属性相同
    -t STAMP 使用 [[CC]YY]MMDDhhmm[.ss]格式的时间设置文件的时间属性。格式的含义从左到右依次为:世纪、年、月、日、时、分、秒
    touch a.txt b.txt
    touch stu{01..05}
    会创建 stu01 stu02 stu03 stu04 stu05
    
    touch -a test.txt
    touch -m test.txt
    touch -d 20201001 test.txt   指定创建文件后的文件修改时间为2020年10月01日
    touch -r test1.txt test2.txt   让test1的时间属性和test2.txt一致
    touch -t 201512312234.50 test.txt

    扩展知识

    GNU/Linux 的文件有3种类型的时间戳

    Access:2015-07-30 17:48:20.502156890 +0800  最后访问文件的时间
    Modify:2015-07-30 17:48:20.502156890 +0800  最后修改文件的时间
    Change:2015-07-30 17:48:20.502156890 +0800  最后改变文件状态的时间
    
    atime:最后访问时间(ls -lu) 查看文件内容时,文件的访问时间(access time)会改变
    mtime:最后修改时间(ls -lt) 修改文件内容,文件的修改时间(modify time)会改变
    ctime:状态改变时间(ls -lc) 修改文件内容、移动文件或改变文件属性等,文件的change时间会改变

    2.6 ls:显示目录下的内容及相关属性信息  *****

    list的缩写

    参数选项 解释说明
    -l 使用长格式列出文件及目录信息
    -a 显示目录下的所有文件,包括以“.”字符开始的隐藏文件
    -t 根据最后的修改时间(mtime)排序,默认是以文件名排序
    -r 依相反次序排序
    -F 在条目后加上文件类型的指示符号(*、/、=、@、|,其中的一个)
    -p 只在目录后面加上“/”
    -i 显示inode节点信息
    -d 当遇到目录时,列出目录本身而非目录内的文件,并且不跟随符号链接
    -h 以人类可读的信息显示文件或目录大小,如1KB,23MB,2GB等
    -A 列出所有文件,包括隐藏文件,但不包括“.”与“..”这两个目录
    -S 根据文件大小排序
    -R 递归列出所有子目录
    -x 逐行列出项目而不是逐栏列出
    -X 根据扩展名排序
    -c 根据状态改变时间(ctime)排序
    -u 根据最后访问时间(atime)排序
    --color={never,always,auto} 不同的文件类型显示不同的颜色参数,never表示不显示,always表示总是显示,auto表示自动显示
    --full-time 以完整的时间格式输出
    --time-style={full-iso,long-iso,iso,locale} 以不同的时间格式输出,long-iso效果最好
    --time={atime,ctime} 按不同的时间属性输出,atime表示按访问时间,ctime表示按改变权限属性时间,如果不加此参数则默认为最后修改时间
    ls -a
    ls -l  这时候时间属性列默认显示的是文件的最后一次修改时间
    
    ls -l --time-style=long-iso  以long-iso方式显示时间。如果不加的话,没有年份的信息
    ls --full-time  等同于上面这句
    
    ls -l --time-style=long-iso --time=atime
    
    ls -F |grep / 过滤目录
    
    ls -l dir1 此时不能查看目录本身的信息,而是看目录内文件信息
    ls -ld dir1 可以看目录信息
    
    ls -R dir1 查看递归信息

      ls -F 命令的扩展知识

    可执行普通文件  *
    目录    /
    套接字  =
    FIFOs   |
    符号链接  @
    
    生产场景数据库备份,获取数据库名列表
    
    #! /bin/bash
    # backup database and sava one week data
    # test 2020-05-31
    destdir=/data/mysql_backup
    musqldumpbin=/usr/local/mysql/bin/mysqldump
    
    ls -F /usr/local/mysql/data/egrep "/" |awk -F "/" 'print $1' >/root/dbfilename.list

      文件输出内容的属性解读

    12345 -rw-r--r-- 1 root root 35 Oct 28 11:29 test
    列属性 属性说明
    文件inode索引 test文件的inode索引节点编号为12345
    文件类型 文件类型是 - ,表示这是一个普通文件
    文件权限 文件权限是 rw-r--r--,表示文件属主可读、可写,文件所归属的用户组可读,其他用户可读
    硬链接数个数 表示test这个文件没有其他的硬链接;因为连接数是1,就是它本身
    文件属主 这个文件所属的用户,这里的意思是test文件被root用户所拥有,是第一个root
    文件属组 这个文件所属的用户组,在这里是root用户组,是第二个root
    文件大小 文件大小是35字节
    文件修改时间 这里的时间是test文件最后被更新(包括文件创建、内容更新、文件名更新等)的时间,可用如下命令查看文件的修改、访问及变化的时间;ls -l、ls -l --time=atime、ls -l --time=ctime,注意:这里只是显示不同的文件属性时间,并不是按照属性时间排序

    2.7 cp:复制文件或目录 *****

      copy的缩写

    参数选项 解释说明
    -p 复制文件时保持源文件的所有者、权限信息及时间属性
    -d 如果复制的源文件是符号链接,那么仅复制符号链接本身,而且保留符号链接所指向的目标文件或目录
    -r 递归复制目录,即复制目录下的所有层级的子目录及文件
    -a 等同于上面的p、d、r这3个选项功能的总和
    -i 覆盖已有文件前提示用户确认
    -t 默认情况下命令格式是“cp 源文件 目标文件”,使用 -t 参数可以颠倒顺序,格式变为 “cp -t 目标文件 源文件”

    cp 覆盖文件之前不提示是否覆盖的几种方法(原因,cp有默认别名,cp -i)

    which cp 查看 cp 的系统别名
    一:使用命令全路径,这样就不用用到别名了
    
    /bin/cp file1 file2
    
    二、命令开头使用反斜线,屏蔽系统别名
    cp file1 file2
    
    三、取消cp的别名,但重启后失效
    unalias cp
    
    四、注释别名
    cat ~/.bashrc

    2.8 mv:移动或重命名文件 *****

    参数选项 解释说明
    -f 若目标文件已经存在,则不会询问而是直接覆盖
    -i 如目标文件已经存在,则会询问是否覆盖
    -n 不覆盖已经存在的文件
    -t 指定 mv 的目标目录,适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后,和cp命令的-t选项功能一致
    -u 在源文件比目标文件新,或目标文件不存在时才进行移动
    移动多个文件
    mv file1 file2 file3 dir1/   把所有file文件移动到 dir1 下面

     2.9 rm:删除文件或目录 *****

      remove 的缩写,删除一个或多个文件或目录。

    参数选项 解释说明
    -f 强制删除。忽略不存在的文件,不提示确认
    -i 在删除前需要确认
    -I 在删除超过三个文件或者递归删除前要求确认
    -r 递归删除目录及其内容

    rm 非常危险

    1、可以通过mv 替代 rm,先移动到回收站 /tmp
    2、备份,异机备份
    3find . -type f -name ".txt" -mtime +7|xargs rm -f
    4、切换目录,同时不使用通配符

    2.10 rmdir:删除空目录 *

    几乎不用

    参数选项 解释说明
    -p 递归删除目录,当子目录删除后其父目录为空时,也一并删除。如果整个路径被删除,或者由于某种原因保留了部分路径,则系统在标准输出上显示相应的信息
    -v 显示命令的执行过程

    2.11 ln:硬链接与软链接 *****

      link的缩写。其功能是创建文件间的链接(make links between files),链接类型包括硬链接(hard link)和软链接(符号链接,symbolic link)

    参数选项 解释说明
    无参数 创建硬链接
    -s 创建软链接

    2.11.1 硬链接

       硬链接是指通过索引节点(inode)来进行链接。在linux(ext2、ext3、ext4)文件系统中,所有文件都有一个独有的inode编号。在Linux文件系统中,多个文件名指向同一个索引节点(inode)是正常且允许的。这种情况下的文件就被称为硬链接。

    1、具有相同inode节点号的多个文件互为硬链接文件
    2、删除硬链接文件或者删除源文件任意之一,文件实体并未被删除
    3、只有删除了源文件以及源文件所有对应的硬链接文件,文件实体才会被删除

    2.11.2 软链接

      类似于windows里面的快捷方式

    1、软链接类似于windows的快捷方式(可以通过readlink命令查看其指向)
    2、软链接类似于一个文本文件,里面存放的是源文件的路径,指向源文件实体
    3、即使删除了源文件,软链接文件也还是依然存在,但是无法访问指向的源文件路径内容了
    4、软链接和源文件是不同类型的文件,也是不同的文件,inode号也不相同

    2.11.3 目录链接

    1、对于目录,不可以创建硬链接,但是可以创建软链接。
    2、目录可以跨文件系统
    3、硬链接不能跨越文件系统
    4、每个目录下面都有一个硬链接 “.”号,和对应上级目录的硬链接 “..”
    5、在父目录中创建一个子目录,父目录的链接数会增加1(子目录都有 ".."来指向父目录)。但是在父目录中创建文件时,父目录的链接数不会增加

    2.12 readlink:查看符号链接文件的内容 **

      使用cat命令查看软链接文件时,看到的是源文件内容。可以用readlink查看软链接的真实内容。

    参数选项 解释说明

    -f

    一直跟随符号链接,直到非符号链接的文件位置,但要保证最后必须存在一个非符号链接的文件

     2.13 find:查找目录下的文件 *****

      find 命令用于查找目录下的文件,同时也可以调用其他命令执行相应的操作。

    find  -H -L -P          path  expression(options tests actions)
         如何处理符号链接                           参数   限定条件  执行的动作
    参数选项 解释说明
    pathname 命令所查找的目录路径,例如用“.”来表示当前目录,用“/”来表示系统根目录
    Option 模块
    -depth 从指定目录下最深层的子目录开始查找
    -maxdepth levels 查找的最大目录级数,levels为自然数
    -regextype type 改变正则表达式的模式。默认为emac,还有posix-awk,posix-basic,posix-egrep,posix-extended
    Tests 模块
    -mtime[-n|n|+n]

    按照文件的修改时间来查找文件(这个参数最常用),具体如下:

    -n 表示文件更改时间距现在n天以前

    +n 表示文件更改时间距现在n天以前

    n是距现在第n天

    -atime[-n|n|+n]

    按照文件的访问时间来查找文件,单位为天

    -ctime[-n|n|+n] 按照文件的状态改变时间来查找文件,单位为天
    -amin 按照文件的访问时间来查找文件,单位为分钟
    -cmin 按照文件的状态改变时间来查找文件,单位为分钟
    -mmin 按照文件的修改时间来查找文件,单位为分钟
    -group 按照文件所属的组来查找文件
    -name 按照文件名查找文件,只支持*、?、[]等特殊通配符
    -newer 查找更改时间比指定文件新的文件
    -nogroup 查找没有有效用户组的文件,即该文件所属的组在 /etc/groups 中不存在
    -nouser 查找没有有效属主的文件,即该文件的属主在 /etc/passwd 中不存在
    -path pattern 指定路径样式,配合 -prune 参数排除指定目录
    -perm 按照文件权限来查找文件
    -regex 接正则表达式
    -iregex 接正则表达式,不区分大小写
    -size n[cwbkMG] 查找文件长度为n块的文件,带有cwbkMG时表示文件长度以字节计
    -user 按照文件属主来查找文件
    -type

    查找某一类型的文件

    b(块设备文件)

    c(字符设备文件)

    d(目录)

    p(管道文件)

    l(符号链接文件)

    f(普通文件)

    s(socket文件)

    D(door)

    Actions 模块
    -delete 将查找出的文件删除
    -exec 对匹配的文件执行该参数所给出的Shell命令
    -ok 和-exec作用想用,但在执行每个命令之前,都会让用户先确定是否执行
    -prune 使用这一选项可以使find命令不在当前指定的目录中查找
    -print 将匹配的文件输出到标注输出(默认功能,使用中可省略)
    OPERATORS find支持逻辑运算符
    ! 取反
    -a 取交集,全拼为and
    -o 取并集,全拼为or
    查找两天内受到访问的文件使用选项 atime ,-2 表示两天内
    find . -atime -2 
    
    查找 /data/,查找修改时间在 5 天以内的文件使用选项 mtime
    
    在 /var/log/ 目录下查找 5 天前以 “.log” 结尾的文件
    find /var/log/ -mtime +5 -name '*.log'
    
    查找当前目录下的所有目录
    find . -type d
    查找当前目录下非目录文件
    find . ! -type d
    
    按照文件权限来查找文件,755是权限的数字表示方式
    find /data/ -perm 755
    
    查找当前目录下文件大小大于1000字节的文件
    find . -size +1000c
    
    查找文件时希望忽略某个目录
    find /data -path "/data/dir3" -prune -o -print 
        代码中的 -path "/data/dir3" -prune -o -print 是 -path "/data/dir3" -a -prune -o -print 的简写。其中 -a 和 -o 类似于Shell中的 "&&""||",当 -path "/data/dir3" 为真时,执行 -prune;为假时,执行 -print
    
    忽略多个目录
    find /data (-path /data/dir2 -o -path /data/dir3 ) -prune -o -print 
         转义 ()
    
    查找用户为 testuser 的文件
    find . -user testuser
    查找没有对应任何用户的文件
    find . -nouser  (为了查找那些属主账户已经被删除的文件)
    
    查找用户组为 testgroup 的文件
    find . -group testgroup
    查找没有对应任何用户组的文件
    find . -nogroup
    
    在当前目录查找更改时间比文件 file.txt 新的文件
    find . -newer file1 ! -newer file2
    在当前目录查找更改时间比文件file1新但比file2旧的文件
    
    查找一级目录
    find . -maxdepth 1 -type d,类似于 tree -L 1find . maxdepth 1 -type d ! -name "." -o -name "testfile1"find . maxdepth 1 -type d ! -name "." -a -name "testfile2"
    
    find正则表达式
    find pathname -regextype "type" -regex "pattern"
    一般使用
    find . -regex ".*find"
    
    -regextype "type" 默认为emacs,修改如下
    find . -regextype "posix-egrep" -name "*[0-9]"
    
    ls -l命令放在find命令的 -exec 选项中执行
    find . type f -exec ls -l {} ;
        -exec 后面跟的是 command 命令,最后以分号(;)作为结束标志,考虑到各个系统中分号会有不同的意义,所以前面要加反斜杠转义
        注意点:
        1、{}的作用:指代前面 find 命令查找到的内容
        2、{}前后都要有空格
        3、command 可以是其他任何命令,例如rm等
    
    在目录中查找更改时间在14天以前的文件,并删除它们
    find . -type f -mtime +14 -exec rm {} ;
    
    部分遗留(64-67)待补充

    2.14 xargs:将标准输入转换成命令行参数 ****

       xargs命令是向其他命令传递命令行参数的一个过滤器,能够将管道或者标准输入传递的数据转换成xargs命令后跟随的命令的命令行参数。

    参数选项 解释说明
    -n 指定每行的最大参数量n,可以将标准输入的文本划分为多行,每行n个参数,默认空格分隔
    -d 自定义分隔符
    -i 以 {} 替代前面的结果
    -I 指定一个符号替代前面的结果,而不用 -i 参数默认的 {}
    -p 提示让用户确认是否执行后面的命令
    -0 用 null 代替空格作为分隔符,配合 find 命令的 -print()选项的输出使用
    xargs < test.txt    将所有数字变成一行,注意 xargs 不能直接接文件,需要结合输入重定向符 <
    
    xargs -n 3 < test.txt
    
    echo  sliisdjaiXozasdXadsXaasdw|xargs -d X   以 X 作为分隔符
    
    echo  sliisdjaiXozasdXadsXaasdw|xargs -d X -n 2  以X作为分隔符且每行最多输出2个
    
    find . -name ".log"|xargs -i mv {} dir1/   使用-i选项,用{}代替find查找的结果
    find . -name ".log"|xargs -I [] cp [] dir2

    2.15 rename:重命名文件 ***

    rename from to file
    from:代表需要替换或者需要处理的字符(一般是文件名的一部分,也包括扩展名)
    to:把前面的from代表的内容替换为to代表的内容
    file:待处理的文件,可以用 “*” 通配所有的文件
    
    rename .jpg .oldboy *.jpg    将所有文件的.jpg替换为 .oldboy

    2.16 basename:显示文件名或目录名

    basename /data/dir1/file1.txt    
    结果:file1.txt
    
    basename /data/dir1/file1.txt.txt
    结果:file1

    2.17 dirname:显示文件或目录路径 ***

    dirname /data/dir1/file1.txt   只显示文件所在的路径
    结果:/data/dir1

    2.18 chattr:改变文件的扩展属性 ***

      chattr 命令用于改变文件的扩展属性。与chmod这个命令相比,chmod只是改变文件的读、写、执行权限,更底层的属性控制是由chattr来改变的

    参数选项 解释说明
    -R 递归更改目录属性
    -V 显示命令执行过程
    mode
    + 增加参数
    - 移除参数
    = 更新为指定参数
    A 告诉系统不要修改这个文件的最后访问时间
    a 只能向文件中添加数据,而不能删除,多用于服务器日志文件安全
    i 设定文件不能被删除,改名,写入或新增内容
    给文件加锁,使其只能是只读
    chattr +i file1.txt    (此时就算是root用户无法删除)
    
    解锁
    chattr -i file1.txt 

    2.19 lsattr:查看文件扩展属性 ***

    参数选项 解释说明
    -R 递归查看目录的扩展属性
    -a 显示所有文件包括隐藏文件的扩展属性
    -d 显示目录的扩展属性
    查看文件的扩展属性
    lsattr file.txt
    
    查看目录的扩展属性
    lsattr -d dir

    2.20 file:显示文件的类型 ****

      用于显示文件的类型

    参数选项 解释说明
    -b 输出信息使用精简格式,不输出文件名
    file *

    2.21 md5sum:计算和校验文件的MD5值 ****

      用于计算和校验文件的MD5值

    参数选项 解释说明
    -b 二进制模式读取文件
    -c 从指定文件中读取MD5校验值,并进行校验
    -t 文本模式读取文件,这是默认模式
    --quiet 校验文件使用的参数,校验通过不输出OK
    --status 校验文件使用的参数,不输出任何信息,可以通过命令的返回值来判断
    md5sum test.file >md5.log
    md5sum -c md5.log
    输出:test.file:OK         表示文件没有发生变化
    
    echo "test">test.file
    md5sum -c md5.log
    输出:test.file:FAILED        表示文件没有发生变化
    
    md5sum --status -c md5.log   不直接输出结果,改用返回值判断结果

    2.22 chown:改变文件或目录的用户和用户组

    chown:用户 文件或目录      #<==仅仅授权用户
    chown  :组 文件或目录        #<==仅仅授权组
    chown  用户:组 文件或目录        #<==表示授权用户和组
    参数选项 解释说明
    -R 递归更改目录的用户和用户组
    chown testuser testfile   #授权testuser用户
    
    chown  :testgroup testfile   #授权 testgroup 用户组
    
    chown  user:testgroup testfile    #同时更改
    
    chown -R user:testgroup testfile    #递归更改

    2.23 chmod:改变文件或目录权限 *****

      用来改变文件或目录权限的命令,但是只有文件的属主和超级用户root 才能执行这个命令

    https://www.cnblogs.com/dongye95/p/12434448.html#_label1_8

    2.24 chgrp:更改文件用户组

      已经被chown取代了

    参数选项 解释说明
    -R 递归更改目录的用户组
    chgrp testgroup testfile    #修改 testfile的用户组为 testgroup
    chgrp -R  testgroup testfile

    2.25 umask:显示或设置权限掩码 ***

      P86-90(暂时不看,感觉没必要)

    三、文件过滤及内容编辑处理命令

    3.1 cat:合并文件或查看文件内容 *****

    序号 cat命令常用功能 简要例子说明
    1 查看文件内容 例如:cat file.txt,这是cat最基本的功能之一
    2 把多个文件合并成一个 例如:cat file1.txt file2.txt >newfile.txt
    3 创建编辑新文件 例如:输入 cat >file1.txt,后面接要编辑的内容,使用快捷键Ctrl+d或者Ctrl+c可以结束编辑
    4 非交互式的编辑或追加内容到文件尾部

    生产上最重要的一个应用,格式如下:

    cat >>file.txt<<EOF

    i am who

    EOF

    5 清空文件内容 例如:使用cat /dev/null >file1.txt 命令就可以把文件内容清空,但是文件还是存在的,这个功能生产工作中也会用到

    cat 命令的参数选项及说明

    参数选项 解释说明
    -n 从1开始对所有输出的内容按行编号
    -b 和 -n 选项功能类似,但会忽略显示空白行行号
    -s 当遇到有连续两行以上的空白行时,就替换为一行空白行
    -A 等价于 -vET 三个选项的功能之和
    -e 等价于 -vE
    -E 在每一行的行位显示 $ 符号(此符号为结束标识符,平时隐藏,即使是空行也有)
    -t 于-vT等价
    -T 将Tab字符显示为 ^I
    -v 除了LFD 和TAB之外,使用 ^ 和M- 引用

    执行如下的完整命令生成test.txt 文件内容

    cat >test.txt<<EOF
    welcome to here
    wish you like
    
    bye!
    EOF
    
    ##这里要按回车才能结束,另外,EOF必须成对出现,但也可以用别的成对标签来替换。结尾的EOF必须顶格写。
    
    如果EOF要不顶格写。需要加 - 。虽然不用定格,但是不能用空格,要要tab
    
    cat >test.txt<<-EOF
    welcome to here
    wish you like
    
    bye!
        EOF
    
    
    如果内容中有 $符号,需要使用  转义

    curl -X POST --header 'Content-Type: application/json' --header 'Accept: text/html' -d '{
    "containerNumber": "ABC063002"
    }' 'http://yiwu-station.gateway.dev.thundersdata.com/service/containerTransition/listContainerByPage'


     

  • 相关阅读:
    sql mysql
    sql练习
    re正则表达式
    《大道至简 第二章》读后感
    读《大道至简:编程的精义》有感
    爬取汽车之家新闻图片的python爬虫代码
    Linux系统封装成iso文件
    使用Zabbix进行IPMI监控
    zabbix支持的主要监控方式
    python虚拟环境搭建
  • 原文地址:https://www.cnblogs.com/dongye95/p/12044296.html
Copyright © 2011-2022 走看看