• Linux 常用命令


    〇、序言:命令基本格式

    Linux中命令格式为:command [options] [arguments]
    中括号代表是可选的,即有些命令不需要选项也不需要参数

    选项:options

    选项分为长选项和短选项。

    短选项

    比如-h,-l,-s等。(- 后面接单个字母)

    • 短选项都是使用‘-’引导,当有多个短选项时,各选项之间使用空格隔开。

    • 有些命令的短选项可以组合,比如-l –h 可以组合为–lh

    • 有些命令的短选项可以不带-,这通常叫作BSD风格的选项,比如ps aux

    • 有些短选项需要带选项本身的参数,比如-L 512M

    长选项

    比如–help,–list等。(-- 后面接单词)

    • 长选面都是完整的单词

    • 长选项通常不能组合

    • 如果需要参数,长选项的参数通常需要‘=’,比如–size=1G

    参数arguments:

    参数是指命令的作用对象。
    如ls命令,不加参数的时候显示是当前目录,也可以加参数,如ls /dev, 则输出结果是/dev目录。
    参数是传递到脚本中的真实的参数

    以上简要说明了选项及参数的区别,但具体Linux中哪条命令有哪些选项及参数,需要我们靠经验积累或者查看Linux的帮助了。

    其他

    单竖线 |

    竖线‘|’ ,在linux中是作为管道符的,将‘|’前面命令的输出作为’|'后面的输入。举个例子

    ps -ef | grep java  #使用正则grep命令寻找java进程
    
    • 1

    实际上似乎可以理解成 grep java (ps -ef)

    双竖线 ||

    双竖线‘||’,用双竖线‘||’分割的多条命令,执行的时候遵循如下规则,如果前一条命令为真,则后面的命令不会执行,如果前一条命令为假,则继续执行后面的命令。

    [[ 1 -lt 2 ]]||echo b
    
    • 1

    判断文件是否存在 不存在则创建

    [[ -f 1.txt ]] || touch 1.txt
    
    • 1

    &

    同时执行多条命令,不管命令是否执行成功

    &&

    可同时执行多条命令,当碰到执行错误的命令时,将不再执行后面的命令。如果一直没有错误的,则执行完毕。

    一、文档

    cat

    • 含义:cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。

    • 语法格式

    cat [-AbeEnstTuv] [--help] [--version] fileName
    
    • 1
    • 参数说明:
    -n 或 --number:由 1 开始对所有输出的行数编号。
    -b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
    -s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
    -v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
    -E 或 --show-ends : 在每行结束处显示 $。
    -T 或 --show-tabs: 将 TAB 字符显示为 ^I。
    -A, --show-all:等价于 -vET。
    -e:等价于"-vE"选项;
    -t:等价于"-vT"选项;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 实例:
    # 把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:
    cat -n textfile1 > textfile2
    
    #把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)
    #之后将内容附加到 textfile3 文档里:
    cat -b textfile1 textfile2 >> textfile3
    
    #清空 /etc/test.txt 文档内容:
    cat /dev/null > /etc/test.txt
    
    #cat 也可以用来制作镜像文件。
    #例如要制作软盘的镜像文件,将软盘放好后输入:
    cat /dev/fd0 > OUTFILE
    #相反的,如果想把 image file 写到软盘,输入:
    cat IMG_FILE > /dev/fd0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述

    笔记:dev/null

    在类 Unix 系统中,/dev/null 称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个 EOF。

    而使用 cat $filename > /dev/null 则不会得到任何信息,因为我们将本来该通过标准输出显示的文件信息重定向到了 /dev/null 中。

    使用 cat $filename 1 > /dev/null 也会得到同样的效果,因为默认重定向的 1 就是标准输出。 如果你对 shell 脚本或者重定向比较熟悉的话,应该会联想到 2 ,也即标准错误输出。

    如果我们不想看到错误输出呢?我们可以禁止标准错误 cat $badname 2 > /dev/null。

    grep

    介绍
    全拼:Global search REgular expression and Print out the line.

    作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文本逐行进行匹配检查,打印匹配到的行.
    格式

    grep [options] [pattern] [file ...]
    
    • 1

    operations

    -a --text # 不要忽略二进制数据。
    -A <显示行数> --after-context=<显示行数> # 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
    -b --byte-offset # 在显示符合范本样式的那一行之外,并显示该行之前的内容。
    -B<显示行数> --before-context=<显示行数> # 除了显示符合样式的那一行之外,并显示该行之前的内容。
    -c --count # 计算符合范本样式的列数。
    -C<显示行数> --context=<显示行数>或-<显示行数> # 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
    -d<进行动作> --directories=<动作> # 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
    -e<范本样式> --regexp=<范本样式> # 指定字符串作为查找文件内容的范本样式。
    -E --extended-regexp # 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
    -f<范本文件> --file=<规则文件> # 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
    -F --fixed-regexp # 将范本样式视为固定字符串的列表。
    -G --basic-regexp # 将范本样式视为普通的表示法来使用。
    -h --no-filename # 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
    -H --with-filename # 在显示符合范本样式的那一列之前,标示该列的文件名称。
    -i --ignore-case # 忽略字符大小写的差别。
    -l --file-with-matches # 列出文件内容符合指定的范本样式的文件名称。
    -L --files-without-match # 列出文件内容不符合指定的范本样式的文件名称。
    -n --line-number # 在显示符合范本样式的那一列之前,标示出该列的编号。
    -P --perl-regexp # PATTERN 是一个 Perl 正则表达式
    -q --quiet或–silent # 不显示任何信息。
    -R/-r --recursive # 此参数的效果和指定“-d recurse”参数相同。
    -s --no-messages # 不显示错误信息。
    -v --revert-match # 反转查找。
    -V --version # 显示版本信息。
    -w --word-regexp # 只显示全字符合的列。
    -x --line-regexp # 只显示全列符合的列。
    -y # 此参数效果跟“-i”相同。
    -o # 只输出文件中匹配到的部分。
    -m --max-count= # 找到num行结果后停止查找,用来限制匹配行数
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    patten
    详见正则表达式
    实例

    查找进程

    
    > ps -ef | grep java
    root     16934     1  0 Feb25 ?        00:12:23 java -jar demo.jar
    root      6891  2151  0 21:42 pts/2    00:00:00 grep --color=auto java
    
    • 1
    • 2
    • 3
    • 4

    第一条记录是查找出的进程;第二条结果是grep进程本身,并非真正要找的进程。补显示grep本身可使用
    ps -ef | grep redis | grep -v grep

    查找进程个数

    > ps -ef | grep -c java
    10
    > ps -ef | grep java -c
    10
    
    • 1
    • 2
    • 3
    • 4

    查找文件关键词

    > grep "linux" rumenz.txt 
    linux123
    linuxxxx
    
    // -n 显示行号
    > grep -n "linux" rumenz.txt 
    6:linux123
    7:linuxxxx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    从文件中读取关键词进行搜索

    ## k中是要搜寻的关键词
    > cat rumenz.txt | grep -f k.txt
    redis
    linux123
    linuxxxx
    
    //显示行号
    > cat rumenz.txt | grep -nf k.txt 
    5:redis
    6:linux123
    7:linuxxxx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    多文件找关键词

    > grep "linux" rumenz.txt rumenz123.txt 
    rumenz.txt:linux123
    rumenz.txt:linuxxxx
    rumenz123.txt:linux123
    rumenz123.txt:linuxxxx
    rumenz123.txt:linux100
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    通配符文件搜索

    // 查找当前目录下所有以rumenz开头的文件
    > grep "linux" rumenz*
    rumenz123.txt:linux123
    rumenz123.txt:linuxxxx
    rumenz123.txt:linux100
    rumenz.txt:linux123
    rumenz.txt:linuxxxx
    
    // 查找当前目录下所有以.txt结尾的文件
    
    > grep "linux" *.txt
    k.txt:linux
    rumenz123.txt:linux123
    rumenz123.txt:linuxxxx
    rumenz123.txt:linux100
    rumenz.txt:linux123
    rumenz.txt:linuxxxx
    ————————————————
    版权声明:本文为CSDN博主「入门小站」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_37335761/article/details/122682881
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    tail与head

    tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。
    tail [参数] [文件]
    -f 循环读取
    -q 不显示处理信息
    -v 显示详细的处理信息
    -c<数目> 显示的字节数
    -n<行数> 显示文件的尾部 n 行内容
    –pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
    -q, --quiet, --silent 从不输出给出文件名的首部
    -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

    tail notes.log  # 默认显示最后 10 行
    tail -f filename #会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。
    tail -n +20 notes.log #显示文件 notes.log 的内容,从第 20 行至文件末尾
    tail -n 100 /etc/cron  #显示最后100行数据
    tail -n -100 /etc/cron #除了前99行不显示外,显示第100行到末尾行
    
    • 1
    • 2
    • 3
    • 4
    • 5

    head命令类似 head 命令可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。

    vim

    https://www.runoob.com/linux/linux-vim.html

    二、进程管理

    PS

    ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。

    ps [options] [--help]
    
    • 1

    -A 列出所有的进程
    -w 显示加宽可以显示较多的资讯
    -au 显示较详细的资讯
    -aux 显示所有包含其他使用者的进程

    USER PID %CPU %MEM VSZ(虚拟内存占用) RSS(记忆体 内存大小) TTY STAT(该行程的状态:) START TIME COMMAND(所执行的指令)
    
    • 1

    只用ps 即使加了-a 也不会显示全部进程 要显示全部进程要加-e参数 -f用于显示详细信息

    实例

     ps -ef | grep 进程关键字  (最后一个进程是grep本身)
    
    • 1

    显示进程信息 ps -A
    ps -u root //显示root进程用户信息
    ps -ef //显示所有命令,连带命令行

    kill

    kill [-s <信息名称或编号>][程序]  或 kill [-l <信息编号>]
    
    • 1

    -l <信息编号>  若不加<信息编号>选项,则 -l 参数会列出全部的信息名称。
    -s <信息名称或编号>  指定要送出的信息。
    [程序]  [程序]可以是程序的PID或是PGID,也可以是工作编号
    使用 kill -l 命令列出所有可用信号。

    最常用的信号是:

    1 (HUP):重新加载进程。
    9 (KILL):杀死一个进程。
    15 (TERM):正常停止一个进程。

    # 杀死进程
    kill 12345
    
    #强制杀死进程
    kill -KILL 123456
    
    #发送SIGHUP信号,可以使用一下信号
    kill -HUP pid
    
    #彻底杀死进程
    kill -9 123456
    
    #杀死指定用户所有进程
    kill -9 $(ps -ef | grep hnlinux) //方法一 过滤出hnlinux用户进程 
    kill -u hnlinux //方法二
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    linux 的 kill 命令是向进程发送信号,kill 不是杀死的意思,-9 表示无条件退出,但由进程自行决定是否退出,这就是为什么 kill -9 终止不了系统进程和守护进程的原因。

    文件管理

    ls

    ls(英文全拼:list files): 列出目录及文件名
    选项与参数:

    -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
    -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
    -l :长数据串列出,包含文件的属性与权限等等数据;(常用)

    cd

    cd(英文全拼:change directory):切换目录
    1)cd 进入用户主目录
    (2)cd ~ 进入用户主目录
    (3)cd - 返回进入此目录之前所在目录
    (4)cd … 返回上一级目录
    (5)cd …/…返回上两级目录
    /代表着根目录,是树形结构的最上层
    .表示当前目录,也可以用./表示;
    …表示上一级目录,也可以用. ./表示;

    pwd

    pwd(英文全拼:print work directory):显示目前的目录
    -P :显示出确实的路径,而非使用连结 (link) 路径。

    mkdir

    mkdir(英文全拼:make directory):创建一个新的目录
    -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
    -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!

    touch

    新建文件可以用touch命令 如touch a.java
    虽然touch本来是用来改文件修改日期的

    rmdir

    rmdir(英文全拼:remove directory):删除一个空的目录

    cp

    cp(英文全拼:copy file): 复制文件或目录

    rm

    rm(英文全拼:remove): 删除文件或目录

    mv 移动与重命名

    mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称
    移动文件:mv 文件名 移动目的地文件名
    重命名文件:mv 文件名 修改后的文件名

    查找文件-find以及whereis、locate

    find的命令比较复杂 下面几种格式讲的都是一个东西
    find [paths] [expression,包含options] [actions]
    find [path...] -options [-print / -ecex / -ok]
    find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;
    find <指定目录> <指定条件> <指定动作>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    find 命令接受一个或多个路径(paths)作为搜索范围,并在该路径下递归地搜索。即检索完指定的目录后,还会对该目录下的子目录进行检索,以及子目录下的子目录……直到到达目录树底部。

    默认情况下(不带任何搜索条件),find 命令会返回指定目录下的所有文件,所以常常需要通过特定的 expression 对结果进行筛选。

    find 命令默认的 action 是将所有检索结果打印至标准输出。可以通过自定义 action ,让 find 命令对搜索到的结果执行特定的操作。

    find还支持and or等逻辑查找符号
    在这里插入图片描述

    这里先不做详细解释,简单地测试下 find 命令:

    实例

    #如何查找一个文件大小超过5M的文件
    find . -type f -size +100M
    
    #如果知道一个文件名称,怎么查这个文件在linux下的哪个目录,
    #如:要查找tnsnames.ora文件
    find / -name tnsnames.ora
    #output
    #/opt/app/oracle/product/10.2/network/admin/tnsnames.ora
    #/opt/app/oracle/product/10.2/network/admin/samples/tnsnames.ora
    
    #查找小写字母开头的.c文件          
    find  .  -name  ‘[a-z]*.c‘  -print #支持直接正则表达式
    #搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。
    find . -name 'my*'  (必须用引号括起来)
    
    
    #搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。
    $ find . -name 'my*' -ls
    # 删除搜索结果
    find directory -name file2 -delete
    
    
    
    
    #按照文件特征查找     
    find / -amin -10   # 查找在系统中最后10分钟访问的文件(access time)
    find / -atime -2   # 查找在系统中最后48小时访问的文件
    find / -empty   # 查找在系统中为空的文件或者文件夹
    find / -group cat   # 查找在系统中属于 group为cat的文件
    find / -mmin -5   # 查找在系统中最后5分钟里修改过的文件(modify time)
    find / -mtime -1   #查找在系统中最后24小时里修改过的文件
    find / -user fred   #查找在系统中属于fred这个用户的文件
    find / -size +10000c  #查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
    find / -size -1000k   #查找出小于1000KB的文件
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    有如下结构的示例目录 directory
    $ tree directory
    directory
    ├── file1
    ├── file2
    ├── sub-dir1
    │ ├── file1
    │ ├── file2
    │ └── file3
    └── sub-dir2
    ├── file2
    └── sub-subdir1
    └── file1

    3 directories, 7 files
    默认的 find 命令会列出该目录下的所有文件
    复制代码
    $ find directory
    directory
    directory/sub-dir1
    directory/sub-dir1/file3
    directory/sub-dir1/file2
    directory/sub-dir1/file1
    directory/file2
    directory/sub-dir2
    directory/sub-dir2/file2
    directory/sub-dir2/sub-subdir1
    directory/sub-dir2/sub-subdir1/file1
    directory/file1
    复制代码

    为 find 命令指定 expression 以筛选出特定的文件
    $ find directory -name file2
    directory/sub-dir1/file2
    directory/file2
    directory/sub-dir2/file2

    为 find 命令指定特殊的 action(此处 -delete 表示删除搜索结果)
    复制代码
    $ find directory -name file2 -delete
    $ find directory
    directory
    directory/sub-dir1
    directory/sub-dir1/file3
    directory/sub-dir1/file1
    directory/sub-dir2
    directory/sub-dir2/sub-subdir1
    directory/sub-dir2/sub-subdir1/file1
    directory/file1
    复制代码

    二、搜索条件(expression)

    1. 根据文件名检索
      find 命令中的 -name 选项可以根据文件名称进行检索(区分大小写)。如需要忽略文件名中的大小写,可以使用 -iname 选项。

    -name 和 -iname 两个选项都支持 wildcards 。如:

    ? 可以表示任意一个单一的符号

    • 可以表示任意数量(包括 0)的未知符号
      find /usr -name ‘*.txt’ 查找 /usr 目录下所有文件名以 .txt 结尾的文件
      find /usr -name ‘???’ 查找 /usr 目录下所有文件名刚好为 4 个字符的文件

    有些时候,你需要在搜索时匹配某个文件或目录的完整路径,而不仅仅是匹配文件名。可以使用 -path 或 -ipath 选项。

    如查找 /usr 下所有文件名以 .txt 结尾的文件或目录,且该文件的父目录必须是 src。可以使用以下命令:
    find /usr -path ‘/src/.txt’

    1. 根据文件类型检索
      如果只想搜索得到文件或目录,即不想它们同时出现在结果中。可以使用 -type 选项指定文件类型。

    -type 选项最常用的参数如下:

    f: 文件
    d: 目录
    l: 符号链接
    find /usr -type d -name ‘python*’ 检索 /usr 下所有文件名以 python 开头的目录

    1. 检索空文件
      find 命令支持 -empty 选项用来检索为空的文件或目录。空文件即文件里没有任何内容,空目录即目录中没有任何文件或子目录。

    find ~ -type d -empty 检索用户主目录下所有的空目录

    1. 反义匹配
      find 命令也允许用户对当前的匹配条件进行“反义”(类似于逻辑非操作)。

    如需要检索 /usr 下所有文件名不以 .txt 为后缀的文件。可以使用以下命令:
    find /usr -type f ! -name ‘*.txt’

    也可以“翻转”任何其他的筛选条件,如:
    find /usr -type f ! -empty 检索 /usr 下所有内容不为空的文件

    1. 根据文件的所属权检索
      为了检索归属于特定用户的文件或目录,可以使用 -user 选项。

    find / -type f -user starky 检索根目录下所有属主为 starky 的文件

    类似于 -user选项,-group 选项则可以根据文件或目录的属组进行检索。

    1. 根据时间日期进行检索
      有些时候,需要根据文件创建或修改的时间进行检索。

    Linux 系统中,与文件相关联的时间参数有以下三种:

    修改时间(Modification time):最后一次文件内容有过更改的时间点
    访问时间(Access time):最后一次文件有被读取过的时间点
    变更时间(Change time):最后一次文件有被变更过的时间点(如内容被修改,或权限等 metadata 被修改)
    与此对应的是 find 命令中的 -mtime,-atime 和 -ctime 三个选项。

    这三个选项的使用遵循以下示例中的规则:

    -mtime 2:该文件 2 天前被修改过
    -mtime -2:该文件 2 天以内被修改过
    -mtime +2:该文件距离上次修改已经超过 2 天时间
    find /usr -type f -mtime 2 检索 /usr 下两天前被修改过的文件

    如果觉得 -mtime 等选项以天为单位时间有点长,还可以使用 -mmin,-amin,-cmin 三个选项:
    find /usr -type f -mtime +50 -mtime -100 检索 /usr 下 50 到 100 天之前修改过的文件
    find /usr -type f -mtime 2 -amin 5 检索 /usr 下两天前被修改过且 5 分钟前又读取过的文件

    1. 根据文件大小检索
      -size 选项允许用户通过文件大小进行搜索(只适用于文件,目录没有大小……)。

    表示文件大小的单位由以下字符组成:

    c:字节
    k:Kb
    M:Mb
    G:Gb
    另外,还可以使用 + 或 - 符号表示大于或小于当前条件。

    find / -size +1G 检索文件大小高于 1 GB 的文件

    1. 根据文件权限检索
      find 命令可以使用 -perm 选项以文件权限为依据进行搜索。

    使用符号形式
    如需要检索 /usr 目录下权限为 rwxr-xr-x 的文件,可以使用以下命令:
    find /usr -perm u=rwx,g=rx,o=rx

    搜索 /usr 目录下所有权限为 r-xr-xr-x(即系统中的所有用户都只有读写权限)的文件和目录,可以使用以下命令:
    find /usr -perm a=rx

    很多时候,我们只想匹配文件权限的一个子集。比如,检索可以直接被任何用户执行的文件,即只关心文件的执行权限,而不用管其读写权限是什么。

    上述的需求可以通过以下命令实现:find / -type f -perm /a=x
    其中 a=x 前面的 / 符号即用来表示只匹配权限的某个子集(执行权限),而不用关心其他权限的具体设置。

    使用数字形式
    -perm 选项也支持数字形式的文件权限标记。

    find /usr -perm 644 搜索 /usr 目录下权限为 644(即 rwxr-xr-x)的文件

    1. 限制遍历的层数
      find 命令默认是以递归的方式检索项目的,这有时候会导致得到的结果数量非常巨大。可以使用 -maxdepth 限制 find 命令递归的层数。

    find / -maxdepth 3 搜索时向下递归的层数最大为 3

    1. 逻辑组合
      在之前的例子中有出现多个搜索条件的组合以及对某个搜索条件的反转。
      实际上 find 命令支持 “and” 和 “or” 两种逻辑运算,对应的命令选项分别是 -a 和 -o。通过这两个选项可以对搜索条件进行更复杂的组合。

    此外还可以使用小括号对搜索条件进行分组。注意 find 命令中的小括号常需要用单引号包裹起来。因小括号在 Shell 中有特殊的含义。

    如检索 /usr 下文件名以 python 开头且类型为目录的文件
    find /usr -type d -name ‘python*’

    该命令等同于:
    find /usr -type d -a -name ‘python*’

    更复杂的组合形式如:
    find / ‘(’ -mmin -5 -o -mtime +50 ‘)’ -a -type f

    三、对搜索结果执行命令

    1. 删除文件
      -delete 选项可以用来删除搜索到的文件和目录。

    如删除 home 目录下所有的空目录:
    find ~ -type d -empty -delete

    1. 执行自定义命令
      -exec 选项可以对搜索到的结果执行特定的命令。

    如需要将 home 目录下所有的 MP3 音频文件复制到移动存储设备(假设路径是 /media/MyDrive),可使用下面的命令:
    find ~ -type f -name ‘*.mp3’ -exec cp {} /media/MyDrive ‘;’

    其中的大括号({})作为检索到的文件的 占位符 ,而分号( ;)作为命令结束的标志。因为分号是 Shell 中有特殊含义的符号,所以需要使用单引号括起来。
    每当 find 命令检索到一个符合条件的文件,会使用其完整路径取代命令中的 {},然后执行 -exec 后面的命令一次。

    另一个很重要的用法是,在多个文件中检索某个指定的字符串。
    如在用户主目录下的所有文件中检索字符串 hello ,可以使用如下命令:
    find ~ -type f -exec grep -l hello {} ‘;’

    -exec 选项中的 + 符号
    创建 Gzip 格式的压缩文件的命令为:tar -czvf filename.tar.gz

    现在假设需要将用户主目录下所有的 MP3 文件添加到压缩包 music.tar.gz 中,直观的感觉是,其命令应为如下形式:
    find ~ -type f -name ‘*.mp3’ -exec tar -czvf music.tar.gz {} ‘;’

    实际情况是,这样得到的 music.tar.gz 其实只包含一个 MP3 文件。
    原因是 find 命令每次发现一个音频文件,都会再执行一次 -exec 选项后面的压缩命令。导致先前生成的压缩包被覆盖。

    可以先让 find 命令检索出所有符合条件的音频文件,再将得到的文件列表传递给后面的压缩命令。完整的命令如下:
    find ~ -type f -name ‘*.mp3’ -exec tar -czvf music.tar.gz {} +

    显示文件信息
    如果想浏览搜索到的文件(目录)的详细信息(如权限和大小等),可以直接使用 -ls 选项。

    find / -type file -size +1G -ls 浏览所有 1G 以上大小的文件的详细信息

    还可以通过locate、whereis查找

    locate tnsnames.ora
    
    #该指令会在特定目录中查找符合条件的文件。
    #这些文件应属于原始代码、二进制文件,或是帮助文件。
    whereis nginx  
    
    • 1
    • 2
    • 3
    • 4
    • 5

    文件传输

    系统设置

    磁盘管理

    磁盘维护

    网络通讯

    备份压缩

    设备管理

     - ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组
    
    • 1
     - chown (change ownerp) : 修改所属用户与组。 
    
    • 1
     - chmod (change mode) : 修改用户的权限。
    
    • 1
    chgrp [-R] 属组名 文件名
    参数选项
    -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
    
    • 1
    • 2
    • 3

    你可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp。

    查看日志
    5.如何查看测试项目的日志

    一般测试的项目里面,有个logs的目录文件,会存放日志文件,有个xxx.out的文件,可以用tail -f 动态实时查看后端日志

    先cd 到logs目录(里面有xx.out文件)

    tail -f xx.out

    这时屏幕上会动态实时显示当前的日志,ctr+c停止

    6.如何查看最近1000行日志

    tail -1000 xx.out

    查看端口
    7.LINUX中如何查看某个端口是否被占用

    netstat -anp | grep 端口号

    图中主要看监控状态为LISTEN表示已经被占用,最后一列显示被服务mysqld占用,查看具体端口号,只要有如图这一行就表示被占用了

    查看82端口的使用情况,如图

    netstat -anp |grep 82

    可以看出并没有LISTEN那一行,所以就表示没有被占用。此处注意,图中显示的LISTENING并不表示端口被占用,不要和LISTEN混淆哦,查看具体端口时候,必须要看到tcp,端口号,LISTEN那一行,才表示端口被占用了

    查看当前所有已经使用的端口情况,如图:

    netstat -nultp(此处不用加端口号)

    tree 查看当前的目录树

  • 相关阅读:
    【CANoe】文件处理_hex文件读取解析
    树状数组基本操作
    RPA的价值和优势有哪些?
    zabbix第三方邮箱警告配置
    Day09-尚品汇-detail路由组件展示商品售卖属性-剪裁
    [ACTF2020 新生赛]Include 1
    基础知识-网络与服务器
    [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞s2-046(CVE-2017-5638)
    【附源码】Python计算机毕业设计水库洪水预报调度系统
    千巡翼X1 让航测无人机更小更轻更高效
  • 原文地址:https://blog.csdn.net/S_ZaiJiangHu/article/details/126074613