04_Linux基础-.&..-cat-tac->&>>-EOF-Shell-more-ps-less-head-tail-sed-grep-which-whereis-PATH-bash-/usr-locate-find


一. 回顾

  1. 回顾
  2. // 将/home/目录下的所有文件和文件夹复制到/jindafu目录下
  3. cp /home/* . -r
  4. #注:复制文件夹 接-r 递归复制(因为提到了文件夹)
  5. #注:所有 通配符*
  6. // 复制/etc/hosts文件到jindafu,不给予覆盖提醒
  7. 用cp的绝对路径
  8. which cp 得到cp的路径
  9. /usr/bin/cp /etc/hosts .
  10. #注:不给予提醒 输入cp命令的绝对路径 因为cp命令是别名 所有会有提醒
  11. // 将xiena目录改名为xienana
  12. mv xiena/ xienana
  13. // 将singer目录下的所有文件复制到hejiong目录下
  14. cp haiquan/singer/* hejiong/
  15. #注:所有 通配符*
  16. #注:复制文件不接-r
  17. // 删除所有的xienana目录
  18. find命令 或 tree查看xienana在哪 rm -rf 路径
  19. find /hunantv/ -name “xienana” -exec rm -rf {} \;
  20. // 查看目录结构 tree 查看类型 file
  21. // echo $PS1 $PS2 怎么看PS1 PS2
  22. // hostname 查看主机名
  23. // echo $SHELL 查看默认shell (是bash)
  24. // cat /ect/shells 查看机器里有哪些shell
  25. sh bash exit
  26. #/etc 存放配置文件
  27. // d 目录
  28. - 普通文件
  29. l 链接文件
  30. c 字符设备文件(显示)
  31. b 块设备文件 (磁盘)
  32. // reboot 重启机器
  33. // clear 清屏
  34. // 别名 alias , unalias , vim /root/.bashrc
  35. // env 环境变量 set 所有变量

二. . .. 删不掉

  1. // rm -rf 不会删除隐藏文件
  2. rm -rf .lixh 删除隐藏文件
  3. .和..删不掉

三. cat

  1. // ls 查看文件夹里的内容
  2. cat 1.查看文件里的内容
  3. 2.可以将多个文件连接到一起输出
  4. -n, --number 给输出的行进行编号
  5. 用处2 cat tangliangfei.txt wangtc.txt (连接功能)
  6. 先将tangliangfei.txt内容输出,再将wangtc.txt内容输出

tac 与 cat

  1. // tac 逆序显示,从最后一行到第一行
  2. 不能接-n
  3. cat 正序显示,从第一行到最后一行 (有-n选项)

四. 重定向

  1. // > 输出重定向,会覆盖原来的内容,如果文件不存在会自动新建
  2. 重定向:就是将在屏幕上输出的内容,改变输出的方向,输出到文件里
  3. >> 追加输出重定向,不会覆盖原来的内容,只是在末尾追加,如果文件不存在会自动新建
  4. >会覆盖原来的内容,>>不覆盖,末尾追加
  5. # cat tangliangfei.txt wangtc.txt >tang_wang.txt
  6. # echo 123456789 >>tang_wang.txt
  7. (学会cat与>、>>的组合)

五. here document

  1. // 生成指定内容的文件 --》here document --》主要用在写脚本生成指定的内容
  2. // <<EOF 定义的结束字符串
  3. 当输入EOF的时候,结束 end of file
  1. # cat >chenpeng.txt <<EOF (注1:后面不一定非得EOF,但要起的有意义)
  2. > chen peng (注2:1个>符号,原来内容会被覆盖)
  3. > jiangsu
  4. > xinhua
  5. > nongda
  6. > linux
  7. > cali
  8. > EOF (注3:点回车)
  9. # cat >>cali.txt <<end(注1:2个>符号,内容追加,不覆盖)
  10. > sanchuang
  11. > nongda
  12. > changsha

六. Shell 脚本

  1. // shell脚本: 其实是一个文件,文件里面有很多的linux命令,这个文件可以执行,被执行的时候,会执行文件里的所有的命令
  1. # vim first_shell.sh
  2. #!/bin/bash(注1:声明这个脚本使用的解释器是bash)
  3. mkdir -p /test(注2:存在不报错,不存在就新建)
  4. cd /test
  5. mkdir sc{1..100}
  6. touch pengyf{1..100}.txt
  7. cp /etc/hosts /test
  8. cat >sanchuang.txt <<EOF(注3:回车后直接打,文本文件里没有提示符>)
  9. sanchuang hunan changsha furongqu hunannongda
  10. feng de yong
  11. linux
  12. EOF(注4:结束)
  13. echo "####################################"
  14. cat -n sanchuang.txt
  15. echo "####################################"
  1. 脚本写好了↑↑↑
  1. # bash first_shell.sh 执行脚本(注:内容如下)
  2. ####################################
  3. 1 sanchuang hunan changsha furongqu hunannongda
  4. 2 feng de yong
  5. 3 linux
  6. ####################################
  7. // 脚本在执行的时候,是从第1条命令,自上而下执行,如果中间有命令执行失败,后面的命令还是会执行的(Python中间出错,没有异常捕获的话,不再执行)

七. more

  1. // more命令 分页显示 (注1:没有-n选项,cat有-n选项)
  2. 用途:全屏方式分页显示文件内容
  3. 交互操作方法:
  4. Enter键向下逐行滚动
  5. 按空格键向下翻一屏、按b键向上翻一屏 back
  6. q键退出 (注2:显示完自动退出,与less的差别)
  1. # more messages

八. ps aux

  1. // # ps aux 查看linux当前运行的进程的信息--》任务管理器(ps -aux也可以)
  2. # ps -aux|more
  3. # cat messages |more 和 more messages 一样
  4. # cat -n messages |more 显示行号

九. less

  1. // less命令
  2. 用途:与more命令相同,但扩展功能更多
  3. 交互操作方法:
  4. more命令基本类似,但个别操作会有些出入
  5. page down】【page up】上翻下翻页(注1more不支持)
  6. 显示完不退出,按q退出 (注2:与more的差别)
  7. (注3:也支持空格、bEnter,凡是more支持的less都支持)
  1. # less messages
  2. # cat messages |less

十. head

  1. // head命令(注1:默认取前10行,连续的几行)
  2. 用途:查看文件开头的一部分内容(默认为10行)
  3. 格式:head -n number 文件名
  4. 格式:head -数字 文件名
  1. cat -n passwd |head 显示前10行,有编号
  2. head passwd 显示前10行,没有编号
  3. head -5 passwd 显示前5行(没编号)
  4. head -n 5 passwd 显示前5行(没编号,与上一条命令效果一样)

十一. tail

  1. // tail命令
  2. 用途:查看文件结尾的少部分内容(默认为10行)
  3. 格式:tail -n number 文件名
  4. 格式:tail -数字 文件名
  5. tail -f 文件名 = tailf # 注:tailf不知道怎么用
  6. #注:tail -f 动态的监控文件末尾的变化
  1. tail passwd 取末尾10行(无编号)
  2. cat -n passwd |tail 取末尾10行(有编号)
  3. cat -n passwd |tail -5 取末尾5行(有编号)
  4. cat -n passwd |tail -1 最后1行(有编号)
  5. cat -n passwd |tail -n 3 取末尾3行(有编号)
  6. tail -n 2 passwd 显示最后2
  7. tail -n -2 passwd 与上条效果一样
  8. tail -n +2 passwd 显示从第2行到末尾 (注1:用处:统计有多少行的时候,不想显示首行,统计磁盘挂载的时候不想看到标题这一行)
  9. (注2df -Th 显示linux里的磁盘分区的使用情况)
  10. df -Th|tail -n +2 统计磁盘挂载不显示标题行
  11. df -Th|tail -n +2|wc -l 统计行数
  12. # tail -f feng.txt 动态的监控文件末尾的变化
  13. (注4:经常用来查看日志文件的变化,根据日志的记录去排错)
  14. (注2:重新打开窗口连过去,右边修改文件内容,左边动态监控文件末尾的变化,一有新的内容就显示)(注3Ctrl+C 强行终止)
  1. tail -f 扩展
  2. 特别适合看某些日志文件
  3. /var 存放动态变化的文件 variable 变量,变化的,可变的
  4. log 日志:是程序记录它发生的事情
  1. # cd /var/log (注1:/var/log 存放大量日志文件)
  2. # tail -f secure 查看secure日志文件 (注2:secure 安全)
  3. (注3:别的窗口做操作,日志文件末尾动态更新)

十二. sed

  1. 1.取出passwd的第3
  2. # cat -n /etc/passwd|head -3|tail -1 (注1:先取前3行,再取最后1行,用|管道)
  3. # cat /etc/passwd|head -3|tail -1 (注2:与上面命令比,没有编号3)
  4. 2.取出passwd文件的第5行到10
  5. #注:这种 先看末尾 用head 因为行数是从前到后计算的
  6. # cat -n /etc/passwd|head |tail -6 (注3:先head取默认前10行,再取后六行)
  7. (注4:从第5行到10行,tail -6,不是-5
  8. # cat -n messages |head -200|tail -101 (100到200行)
  9. 3.取出第3行,第5行,第10
  10. # sed -n '1p;3p;5p' passwd (注5:-n是选项,符合要求的选项显示出来,不是显示行号的意思)
  11. 练习3扩展
  12. // sed
  13. -n 作用:只是显示符合要求的行(注9:不符合要求的行不显示)
  14. 1p;3p;5p
  15. 1p 显示第1 p print命令
  16. ; 命令连接符号
  17. # cat -n passwd |sed -n ‘1p;3p;5p’ (注6:显示1、3、5行,有编号)
  18. # sed -n '1p;3p;5p' passwd (注7:没有编号)
  19. (注10:用双引号””也可以)
  20. # cat -n passwd |sed -n '3p;5p;10p' 显示不连续的3,5,10行的内容 (这样写显示行号)
  21. # cat -n passwd |sed -n '3,10p' 显示第3行到第10行的内容,中间是连续的
  22. # cat -n passwd |sed '3,10p'(注8:sed后不接-n的话,会显示所有的行[包括不符合要求的行],只不过3到10行输出两遍,所有一定要接-n)
  23. 总结:sed 1.显示连续的 2.显示不连续的

十三. grep

  1. // grep 文本过滤 (过滤的是文件,不是文件夹目录)
  2. grep root /etc/passwd 包含root的行
  3. grep “^liang /etc/passwd liang开头的行
  4. grep bash$ /etc/passwd bash结尾的行
  5. Ctrl + c 终止
  6. // 文本处理三剑客 sed grep awk

十四. which

  1. which 查找可执行文件并显示所在的位置
  2. 搜索范围由PATH环境变量指定
  3. # which mkdir
  4. /usr/bin/mkdir
  5. # cd /usr/bin/
  6. # ll mkdir
  7. -rwxr-xr-x. 1 root root 195192 4 10 02:53 mkdir
  8. rwxr-xr-x 权限
  9. r read --》cat vim
  10. w write --》 vim >>
  11. x 执行 execute ---》运行
  12. # ll first_shell.sh
  13. -rw-r--r--. 1 root root…… (注1:脚本无可执行权限)
  14. # bash first_shell.sh (注2:用bash去执行它)
  15. # chmod +x first_shell.sh (注3:给它可执行权限)
  16. -rwxr-xr-x. root root…… (注4:有可执行权限了)
  17. # ./first_shell.sh (注5:直接执行,直接在当前终端执行,当前bash执行)
  18. # /lianxi/first_shell.sh (注6:接绝对路径,接文件,直接执行)
  19. # chmod -x first_shell.sh (注7:取消可执行权限)
  20. # /lianxi/first_shell.sh
  21. -bash: /lianxi/first_shell.sh: 权限不够 (取消可执行权限后不能直接执行)

whereis

  1. // whereis 查找命令放到哪里(注1:跟which很像)(注2:没什么用,man手册在哪里不是很重要)
  2. # whereis mkdir
  3. mkdir: /usr/bin/mkdir /usr/share/man/man1/mkdir.1.gz
  4. (注2:压缩文件,是它的文档)
  5. 1.查看命令安放路径
  6. 2.该命令man手册的路径(man的时候看的内容的存放路径)
  7. //whereis和which的区别
  8. Which不显示man手册的路径,whereis显示man手册的路径
  9. # whereis mkdir
  10. mkdir: /usr/bin/mkdir /usr/share/man/man1/mkdir.1.gz
  11. # which mkidr
  12. /usr/bin/mkdir
  13. //whereis和which 都是到PATH变量里去找的 (共同点)

十五. PATH

  1. //PATH是路径
  2. which命令在查找命令的时候,会到PATH变量指定的路径下查找
  3. # which fengdeyong
  4. /usr/bin/which: no fengdeyong in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
  5. (备注1:红色为路径 备注2:多个文件夹用:冒号隔开)
  6. # echo $PATH (注3:$PATH 引用PATH变量)
  7. /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  8. 查找的顺序是从左往右找,如果在第1个里面找到了,就不会往后面找,以此类推

深入理解 PATH 变量的作用

1.编写一个schello.c的文件

  1. # vim schello.c (注1:编写脚本如下)
  2. #include<stdio.h>
  3. int main(){
  4. printf("hello,world\n"); (注2\n 换行)
  5. printf("i am cali\n");
  6. return 0;
  7. }
  8. # file schello.c
  9. schello.c: C source, ASCII text (注3C语言文件,文本文件,机器不能识别)

2.编译成二进制程序文件

gcc 是linux里的一个编译器,将c源码文件编译成二进制文件

gcc 是linux里的一个编译器,将c源码文件编译成二进制文件

  1. # yum install gcc -y
  2. # gcc -o schello schello.c (注1:-o 输出一个二进制文件)(注2:编译schello.c的命令)
  3. # ls (↑↑注3:schello产生的文件,schello原来文件)
  4. schello schello.c (注2:生成绿色可执行权限的文件 schello
  5. # ll
  6. 总用量 20
  7. -rwxr-xr-x. 1 root root 12744 9 18 15:12 schello
  8. -rw-r--r--. 1 root root 93 9 18 15:08 schello.c
  9. # ./schello (注4:./ 运行)
  10. # /lianxi/sc/schello (注5:绝对路径运行,./相对路径或绝对路径都可以运行)
  11. # schello 不能运行 (注6:linux不知道schello放在哪里,它只会到PATH变量里去找)
  12. -bash: schello:未找到命令 (注7PATH变量没有当前所在路径,没有/lianxi/sc
  13. (解决如下)

要让 Linux 系统知道我们的命令在哪里?

  1. 1.适应PATH变量,将我们的命令复制到PATH变量已有的路径下
  2. # echo $PATH
  3. /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  4. # cp schello /usr/local/bin/
  5. # schello (注1:成功运行)
  6. hello,world
  7. i am cali
  8. # which schello
  9. /usr/local/bin/schello (注2:复制到PATH变量的路径下后bash可以找到schello
  10. 2.修改PATH变量,添加我们自己的命令所在的路径
  11. ①临时修改PATH变量
  12. # PATH=/lianxi/sc:$PATH 临时修改PATH变量
  13. (注3:先引用PATH变量的值,在和/lianxi/sc:字符串拼凑在一起再赋值给PATH变量)
  14. (注3$PATH——》/lianxi/sc:+$PATH重新组合——》赋值PATH变量 从右到左)
  15. # echo $PATH
  16. /lianxi/sc:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  17. (注4:新的PATH变量,前面多了/lianxi/sc:)
  18. [root@sanchuang-linux sc]# which schello(注5which 可以找到)
  19. /lianxi/sc/schello
  20. # schello (注6:bash可以运行)
  21. hello,world
  22. i am cali
  23. ②永久有效
  24. 修改文件,添加PATH变量,让它永久生效
  25. # vim /root/.bashrc
  26. .bashrc这个文件是linux系统开机启动或者用户登录都会运行这个文件里的命令,所以才会永久有效
  27. PATH=/lianxi/sc:$PATH (注1:打进去,放到最后一行)
  1. // mkdir 用C写的
  2. // # yum install python3 -y 安装python3软件
  3. # python3 (注1:进入Python3解释器)
  4. >>> a = 10 (注2:提示符>>>)
  5. >>> b = 20 (注4Python不需要编译,Python代码直接运行,用Python解释器去解释)
  6. >>> sg = "tangliangfei"
  7. >>> c = a + b
  8. >>> c
  9. 30
  10. >>> print(sg) (注3:输出)
  11. tangliangfei
  12. >>> exit() (注5exit()退出出 exit()是exit函数)
  1. //扩展
  2. .py结尾的文件,是python程序文件
  3. .sh结尾,shell脚本
  4. .c结尾,c语言
  5. # vim sc_py_hello.py
  6. #!/usr/bin/python3 (注1:which python3——》/usr/bin/python3)
  7. (注2:申明脚本是Python脚本,里面的命令用Python3解释器去解释)
  8. username = input("please input your name:")(注3:引号里面只是提示符,提示输什么)
  9. (注4input()函数会接收你输入的东西,赋值给username
  10. age = input("please input your age:")
  11. print(f"your name is {username} ,your age is {age}")(注5print(f ) 语法)
  12. (注6:{username}{age} 引用变量的值)
  13. # ls
  14. schello schello.c sc_py_hello.py
  15. # python3 sc_py_hello.py (注7:直接执行Python3,类似于bash a.sh)
  16. please input your name:cali
  17. please input your age:18
  18. your name is cali ,your age is 18
  19. [root@sanchuang-linux sc]# cat sc_py_hello.py
  20. # /lianxi/sc/sc_py_hello.py (注1:不能直接运行,如下 权限不够,pwd查看路径)
  21. -bash: /lianxi/sc/sc_py_hello.py: 权限不够
  22. # chmod +x sc_py_hello.py (注2:给它可执行权限)
  23. # /lianxi/sc/sc_py_hello.py (注3:可以直接执行了)
  24. please input your name:wangtc
  25. please input your age:18
  26. your name is wangtc ,your age is 18
  27. //怎样让sc_py_hello.py 在PATH变量里运行
  28. # which sc_py_hello.py (注1:能运行,因为之前在PATH变量里已经添加这个路径了(/lianxi/sc))
  29. # sc_py_hello.py (注2:能运行,因为之前在PATH变量里已经添加这个路径了(/lianxi/sc))
  30. # echo $PATH
  31. /lianxi/sc:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  1. 总结:跟是用什么语言写的关系不大
  2. 1.把它放到PATH变量所在的路径里面,并2.给它可执行权限 就能直接运行
  3. # chmod -x sc_py_hello.py (注3:取消可执行权限)
  4. # sc_py_hello.py (注4:不给它可执行权限,路径放在PATH变量所在的路径下,也不能直接执行)
  5. -bash: /lianxi/sc/sc_py_hello.py 权限不够
  6. 总结:写的Python程序,一定要1.给它可执行权限,并2.把它放到PATH变量所在路径下面,不然不能执行
  7. //扩展 (注2:总结:文件名字很长,想敲个短一点的命令,考虑用别名 [快捷键])
  8. # alias sc_py_hello=sc_py_hello.py 定义别名,可以缩短命令的长度
  9. # sc_py_hello(注1:不想输这么长,可以使用别名,别名可以用来偷懒)
  10. please input your name:feng (运行成功,条件是在PATH变量路径下和可执行权限,如上面的操作)
  11. please input your age:19
  12. your name is feng ,your age is 19
  13. # which sc_py_hello
  14. alias sc_py_hello='sc_py_hello.py'
  15. /lianxi/sc/sc_py_hello.py

十六. bash

  1. //bash 是linux非常好的shell解析器 (注1:2件事要做)
  2. 1.查找命令 --》PATH变量的路径下
  3. 2.告诉内核去启动命令(运行这个命令)

十七. /usr

  1. // /usr 存放linux程序的目录 unix system resource
  2. /usr/bin 存放二进制程序,所有的用户都可以使用 binary
  3. /usr/sbin 存放二进制程序,有比较高的权限(root)的用户执行的程序 super user binary
  1. # which useradd(注1:查找useradd命令路径)
  2. /usr/sbin/useradd (注2:存放在sbin目录下)
  3. # su - xulilin (注3:切换为普通用户)
  4. $ which useradd
  5. $ /usr/sbin/useradd
  6. $ useradd xu123 (注4:普通用户不能执行sbin/下高级别命令)
  7. ……报错useradd:Permission denied (注5:权限被拒绝)

十八. locate

  1. // locate 知识点(注4:需要安装)(注5经常需要更新# updatedb)
  2. # yum provides locate -y 查询locate是哪个软件包提供的(注1:新知识点)
  3. mlocate-0.26-20.el8.x86_64 : An utility for finding files by name
  4. (注3yum provides …… -y 查询某命令是哪个软件包提供的)
  5. (注2:从结果知道 mlocate提供locate命令)
  6. # yum install mlocate -y 安装mlocate软件
  1. locate命令
  2. 格式:locate 文件名
  3. (注5locate是到自己的数据库查找的,能具体到/下面,且必须更新自己的数据库)
  4. 根据每天更新的数据库(/var/lib/mlocate)查找,速度块
  5. /var/lib/mlocate/mlocate.db
  6. database 数据库(注6db的解释)
  7. 数据库里的内容还是根据/目录下的内容生成
  8. 每天会自动更新数据库 /var/lib/mlocate/mlocate.db
  9. 手动更新数据库updatedb
  1. # updatedb 生成和更新数据库mlocate.db (注1:手动更新)
  2. # cd /var/lib/mlocate/
  3. # ls
  4. mlocate.db
  5. # locate mkdir(注2:将linux系统里面文件名里面包含了mkdir的文件全部找出来)
  6. /usr/bin/mkdir
  7. /usr/lib/python3.6/site-packages/pip/_vendor/lockfile/mkdirlockfile.py
  8. /usr/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/mkdirlockfile.cpython-36.opt-1.pyc
  9. /usr/lib/python3.6/site-packages/pip/_vendor/lockfile/__pycache__/mkdirlockfile.cpython-36.pyc
  10. /usr/share/man/man1/mkdir.1.gz
  11. # which mkdir(注3:只是找到/usr下的mkdir,其他地方的mkdir没找出来)
  12. /usr/bin/mkdir
  1. locate查找的范围:
  2. /--》mlocate.db里去查找(注2:在 根下面自己的数据库mlocate.db下面去查找)
  3. 方式:模糊查找,文件名里包含就可以
  4. 缺点:新的文件,有时候找不到,因为没有更新数据库 --》updatedb(注3:手动更新)
  5. 可以查找任何文件(注4:新建的文件,# updatedb手动更新数据库,否则找不到)
  6. which 查找的范围:PATH变量
  7. 方式:精确查找(注1:文件名必须一模一样)
  8. 只能查找命令

which、whereis、locate、find

  1. // which、whereis、locate、find 命令查找类
  2. Whichwhereis 只能找命令
  3. loacte 也可以查找普通文件、可以查找任何文件

十九. find

//* find命令

  1. 格式:find [查找范围] [查找条件] [动作]
  2. find 可以找1.命令、2.文件 (即任何文件)

(注1:融合了which、whereis、locate所有功能)

find命令

用途:用于查找文件或目录

格式:find [查找范围] [查找条件] [动作]

常用查找条件

-name:按文件名称查找

-iname:按文件名称查找,不区分大小写

-size: 按文件大小查找

-user: 按文件属主查找

-type: 按文件类型查找

-perm :按文件权限查找

-mtime :按文件更改时间查找

-newer:按比某个文件更新的查找

  1. -name和-iname
  2. # find /lianxi -name "lixh.txt"(注1:精确查找,-name根据文件名来)
  3. /lianxi/lixh.txt
  4. # find / -name "schello"(注2:精确查找,可以/下查找)
  5. /lianxi/sc/schello
  6. # find / -name "schello*"(注3:*模糊查找,可以/下查找)
  7. /lianxi/sc/schello.c
  8. /lianxi/sc/schello
  9. # find / -name "li*.txt"(注4:*模糊查找)
  10. # find / -iname "lixh.txt" (注5:-iname 查找的文件名不区分大小写)
  11. /lianxi/lixh.txt
  12. /lianxi/LIXH.TXT
  1. -size (大小)
  2. # ll -h 看文件夹下的每个文件的大小
  3. # du -a 查看文件夹下的每个文件的大小(单位KB)
  4. du -ah 查看文件夹下的每个文件的大小 (单位KMG
  5. # find /boot -size +1M(注1:+1M 大于1M的 全部找出来)(注2:-1M、1M:小于1M,等于1M)
  6. /boot/grub2/fonts/unicode.pf2 (注3:查找的结果不是特别精准)
  7. /boot/initramfs-4.18.0-193.el8.x86_64kdump.img
  8. /boot/initramfs-4.18.0-193.el8.x86_64.img
  1. -type (类型)
  2. # find . -type d (注1:查找目录)
  3. # find . -type f (注2:查找普通文件)
  4. # find . -type l (注3:链接文件)
  5. # find . -type c (注4:字符设备文件)
  6. # find . -type b (注5:块设备文件)
  7. # find . -type p (注6:管道文件)
  8. # find . -type s (注7:socket文件)(进程与进程通信的文件)
  1. -mtime (以24小时为单位) 按文件更改时间查找
  2. -mmin (以分钟为单位)
  3. # find . -time +1 1天以前
  4. # find . -time -1 1天以内
  5. # find . -mmin -30 30分钟以内
  6. # find . -mmin +30 30分钟以前
  1. -user (属于哪个用户创建的文件)(用处不大)
  2. # find . -user root
  3. # find / -user cali
  1. -newer (比指定文件更新的文件,后建的文件)
  2. # find . -newer feng.txt
  1. // 特殊查找条件
  2. -o :逻辑或,只要所给的条件中有一个满足,寻找条件就算满足 or
  3. -not :逻辑非,在命令中可用“!”表示。该运算符表示查找不满足所给条件的文件
  4. -a:逻辑与,系统默认是与,可不加,表示只有当所给的条件都满足时,寻找条件才算满and
  5. find /boot -size +1024k -a -name vmlinuz*”(注1:逻辑与 -a可不加,系统默认逻辑与)
  6. find /boot -size +1024k -o -name vmlinuz*”
  7. find . -user nie -type f -size +1k -o -name "vmlinuz*"
  8. find . -user nie -type f \( -size +1k -o -name "vmlinuz*" \) (注3:()改变了优先级,\解释在下方)(注5\( \)即() 改变了优先级)
  9. find /home !-user hello -exec ls -ld {} \;
  10. \ 转义字符 (注2:因为小括号()有特殊作用,接上/以后让它表示只是小括号)
  11. 默认情况下-a的优先级高,先执行逻辑与(-a),再执行逻辑或(-o
  12. # find / -iname "*.conf" -size +1k -type f -user root -o -size +10M
  13. (注4:前面先组合成一个条件,要么满足-o前面的,要么满足-o后面的条件)
  1. // 扩展,接上面的命令 -exec 和 -ok
  2. # find /lianxi -name "li*.txt" -exec rm -rf {} \;(注1:前面是查找,-exec表示要执行的动作)相关解释如下
  3. -exec 执行后面的命令
  4. rm -rf 具体删除命令
  5. {} 代表前面的find查找出来的内容,理解为一个容器存放前面find查找到的内容
  6. \; 表示find命令结束符号
  7. # find /lianxi -name "*.txt" -size +1k -type f -exec cp {} /fengdeyong \;
  8. (注2:文件名.txt结尾的,大小大于1k的,文件,拷贝到fengdeyong里面)
  9. (注3find 找/lianxi 下的每一层)
  10. -ok
  11. -ok 让你确认一下,再执行
  12. # find . -name "*wang*" -ok rm -rf {} \;
  13. < rm ... ./wangtc.txt > ? y
  14. < rm ... ./tang_wang.txt > ? y
  15. 总结:-exec执行命令,不给与确认(写脚本常用,方便)
  16. -ok 执行命令,需要确认
  1. -maxdepth 查找文件时,目录的深度
  2. # find . -name bb
  3. ./aa/bb
  4. ./aa/bb/bb
  5. ./bb
  6. # find . -maxdepth 1 -name bb(注2:只挖1级)
  7. ./bb
  8. # find . -maxdepth 2 -name bb(注3:只挖2级)
  9. ./aa/bb
  10. ./bb
  11. # find . -maxdepth 3 -name bb(注4:只挖3级)
  12. ./aa/bb
  13. ./aa/bb/bb
  14. ./bb
  15. (注1:不接-maxdepth的话,有多少层挖多少层)
  16. # find /lianxi -name "*.txt"
  17. (注6:不接-maxdepth,东西太多了,挖的太深了)
  18. /lianxi/tangliangfei.txt
  19. /lianxi/chenpeng.txt
  20. /lianxi/cali.txt
  21. /lianxi/feng.txt
  22. /lianxi/aa/bb/feng.txt
  23. /lianxi/aa/feng.txt
  24. # find /lianxi -maxdepth 1 -name "*.txt"
  25. (注5:这种情况用的多,只想找1层的,只挖/lianxi下面的,子文件夹、子子文件夹下面都不要)
  26. /lianxi/tangliangfei.txt(注7:显示如下)
  27. /lianxi/chenpeng.txt
  28. /lianxi/cali.txt
  29. /lianxi/feng.txt
  1. // !取反 的使用,接上面的命令(注1:lianxi下面的不是*.txt的)
  2. # find /lianxi -maxdepth 1 ! -name "*.txt"(只对后面的条件取反)
  3. /lianxi
  4. /lianxi/passwd
  5. /lianxi/first_shell.sh
  6. /lianxi/messages
  7. /lianxi/sc
  8. /lianxi/LIXH.TXT
  9. /lianxi/aa
  10. /lianxi/bb

04_Linux基础-.&..-cat-tac-重定向-EOF-Shell-more-ps-less-head-tail-sed-grep-which-whereis-PATH-bash-usr-locate-find的更多相关文章

  1. shell 编程四剑客简介 find sed grep awk(微信公众号摘抄)

    一,Shell编程四剑客之Find 通过如上基础语法的学习,读者对Shell编程有了更近一步的理解,Shell编程不再是简单命令的堆积,而是演变成了各种特殊的语句.各种语法.编程工具.各种命令的集合. ...

  2. centos shell基础 alias 变量单引号 双引号 history 错误重定向 2>&1 jobs 环境变量 .bash_history source配置文件 nohup & 后台运行 cut,sort,wc ,uniq ,tee ,tr ,split, paste cat> 2.txt <<EOF 通配符 glob模式 发邮件命令mail 2015-4-8 第十二节课

    centos shell基础知识 alias  变量单引号 双引号   history 错误重定向 2>&1  jobs  环境变量 .bash_history  source配置文件 ...

  3. cat命令和EOF标识输出shell到文件

    在某些场合,可能我们需要在脚本中生成一个临时文件,然后把该文件作为最终文件放入目录中.(可参考ntop.spec文件)这样有几个好处,其中之一就是临时文件不是唯一的,可以通过变量赋值,也可根据不同的判 ...

  4. shell基础--cat命令的使用

    一.cat的常用用法 1.总结 2.实验 (1).非交互式编辑 [root@~_~ day5]# cat > cattest.sh <<STOP > hello > ST ...

  5. linux cat命令的<<EOF

    初初开始学习linux的命令,只对linux一些简单命令有一些了解! 首先我看到网上有一些创建一个文件采用的命令是(mkdir创建文件夹):cat > test1.txt <<EOF ...

  6. Linux指令--cat,tac

    原文出处:http://www.cnblogs.com/peida/archive/2012/10/30/2746968.html cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内 ...

  7. Linux中查看文本文件内容命令cat/tac/nl/more/less/head/tail/vi总结

    概述 在Linux系统下,有很多命令可以查看文本文件的内容,如cat/tac/nl/more/less/head/tail等命令,当然还有vi/nano等文本编辑器.在这里,我只介绍其中自己常用的一部 ...

  8. Linux命令:查看文件内容cat|tac|more|less|head|tail|nl|od

    查看文件内容的命令;cat, tac, more, less, head, tail, nl, 1)cat 由第一行开始显示文档内容,一直显示到最后 2)tac 从最后一行开始显示,一直显示到第一行内 ...

  9. Linux学习笔记:cat、tac、more、less、head、tail查看文件内容

    Linux下查看文件内容可以通过以下命令: cat tac more less head tail nl tailf 1.cat 由第一行开始显示内容,并将所有内容输出.当文件过大时,使用cat查看不 ...

随机推荐

  1. 记一次grpc server内存/吞吐量优化

    背景 最近,上线的采集器忽然时有OOM.采集器本质上是一个grpc服务,网络设备通过grpc协议将数据上报后,采集器进行格式等整理后,发往下一个系统(比如分析,存储). 打开运行环境,发现特性如下: ...

  2. numpy学习笔记02

    简介 numpy.array() 数组对象,可以表示普通的一维数组,或者二维矩阵,或者任意数据:并且它可以对数组中的数据进行非常高效的运算,如:数据统计.图像处理.线性代数等 numpy 之所以能运行 ...

  3. 跟着Vam一起学习Typescript(第一期)

    一.安装环境与配置1.命令行安装 npm i -g typescript 2.快捷打开Vs Code编辑器 创建一个项目文件夹,在该文件夹下打开命令行工具,使用code .命令快速打开编辑器(如果计算 ...

  4. Spring框架系列(4) - 深入浅出Spring核心之面向切面编程(AOP)

    在Spring基础 - Spring简单例子引入Spring的核心中向你展示了AOP的基础含义,同时以此发散了一些AOP相关知识点; 本节将在此基础上进一步解读AOP的含义以及AOP的使用方式.@pd ...

  5. ABAP CDS - Annotations 注解

    Syntax ... annotation[.annotation1[.annotation2]][:value]  ... Effect Annotation that can be specifi ...

  6. webpack中文api

    1.      简介 1.Plugins://插件 webpack has a rich plugin interface.Most of the features are internal plug ...

  7. 《HelloGitHub》第 75 期

    兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...

  8. Django快速入门之项目配置

    开始 环境 python:3.6.2 django:2.0.5 跑起来 用pycharm导入或新建一个Django项目,在目录中存在manage.py的文件,通过下列指令运行Django后台. pyt ...

  9. 在.NET 6.0上使用Kestrel配置和自定义HTTPS

    大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. 本章是<定制ASP NET 6.0框架系列文章>的第四篇.在本章,我们 ...

  10. python超级有用的实战项目,拿走不谢~

    写在前面的一点P话: Python是目前最好的编程语言之一.由于其可读性和对初学者的友好性,已被广泛使用. 那么要想学会并掌握Python,可以实战的练习项目是必不可少的. 直接上第一个项目~ 猜字游 ...