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


一. 回顾

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

二. . .. 删不掉

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

三. cat

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

tac 与 cat

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

四. 重定向

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

五. here document

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

六. Shell 脚本

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

七. more

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

八. ps aux

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

九. less

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

十. head

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

十一. tail

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

十二. sed

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

十三. grep

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

十四. which

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

whereis

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

十五. PATH

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

深入理解 PATH 变量的作用

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

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

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

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

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

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

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

1.适应PATH变量,将我们的命令复制到PATH变量已有的路径下
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
# cp schello /usr/local/bin/
# schello (注1:成功运行)
hello,world
i am cali
# which schello
/usr/local/bin/schello (注2:复制到PATH变量的路径下后bash可以找到schello)
2.修改PATH变量,添加我们自己的命令所在的路径
①临时修改PATH变量
# PATH=/lianxi/sc:$PATH 临时修改PATH变量
(注3:先引用PATH变量的值,在和/lianxi/sc:字符串拼凑在一起再赋值给PATH变量)
(注3:$PATH——》/lianxi/sc:+$PATH重新组合——》赋值PATH变量 从右到左)
# echo $PATH
/lianxi/sc:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
(注4:新的PATH变量,前面多了/lianxi/sc:)
[root@sanchuang-linux sc]# which schello(注5:which 可以找到)
/lianxi/sc/schello
# schello (注6:bash可以运行)
hello,world
i am cali
②永久有效
修改文件,添加PATH变量,让它永久生效
# vim /root/.bashrc
.bashrc这个文件是linux系统开机启动或者用户登录都会运行这个文件里的命令,所以才会永久有效
PATH=/lianxi/sc:$PATH (注1:打进去,放到最后一行)
//		mkdir 用C写的

//		# yum  install  python3  -y   安装python3软件
# python3 (注1:进入Python3解释器)
>>> a = 10 (注2:提示符>>>)
>>> b = 20 (注4:Python不需要编译,Python代码直接运行,用Python解释器去解释)
>>> sg = "tangliangfei"
>>> c = a + b
>>> c
30
>>> print(sg) (注3:输出)
tangliangfei
>>> exit() (注5:exit()退出出 exit()是exit函数)
//扩展
.py结尾的文件,是python程序文件
.sh结尾,shell脚本
.c结尾,c语言
# vim sc_py_hello.py
#!/usr/bin/python3 (注1:which python3——》/usr/bin/python3)
(注2:申明脚本是Python脚本,里面的命令用Python3解释器去解释)
username = input("please input your name:")(注3:引号里面只是提示符,提示输什么)
(注4:input()函数会接收你输入的东西,赋值给username)
age = input("please input your age:") print(f"your name is {username} ,your age is {age}")(注5:print(f ) 语法)
(注6:{username}{age} 引用变量的值) # ls
schello schello.c sc_py_hello.py
# python3 sc_py_hello.py (注7:直接执行Python3,类似于bash a.sh)
please input your name:cali
please input your age:18
your name is cali ,your age is 18
[root@sanchuang-linux sc]# cat sc_py_hello.py # /lianxi/sc/sc_py_hello.py (注1:不能直接运行,如下 权限不够,pwd查看路径)
-bash: /lianxi/sc/sc_py_hello.py: 权限不够
# chmod +x sc_py_hello.py (注2:给它可执行权限)
# /lianxi/sc/sc_py_hello.py (注3:可以直接执行了)
please input your name:wangtc
please input your age:18
your name is wangtc ,your age is 18 //怎样让sc_py_hello.py 在PATH变量里运行
# which sc_py_hello.py (注1:能运行,因为之前在PATH变量里已经添加这个路径了(/lianxi/sc))
# sc_py_hello.py (注2:能运行,因为之前在PATH变量里已经添加这个路径了(/lianxi/sc))
# echo $PATH
/lianxi/sc:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  总结:跟是用什么语言写的关系不大
1.把它放到PATH变量所在的路径里面,并2.给它可执行权限 就能直接运行
# chmod -x sc_py_hello.py (注3:取消可执行权限)
# sc_py_hello.py (注4:不给它可执行权限,路径放在PATH变量所在的路径下,也不能直接执行)
-bash: /lianxi/sc/sc_py_hello.py: 权限不够
总结:写的Python程序,一定要1.给它可执行权限,并2.把它放到PATH变量所在路径下面,不然不能执行
//扩展 (注2:总结:文件名字很长,想敲个短一点的命令,考虑用别名 [快捷键])
# alias sc_py_hello=sc_py_hello.py 定义别名,可以缩短命令的长度
# sc_py_hello(注1:不想输这么长,可以使用别名,别名可以用来偷懒)
please input your name:feng (运行成功,条件是在PATH变量路径下和可执行权限,如上面的操作)
please input your age:19
your name is feng ,your age is 19
# which sc_py_hello
alias sc_py_hello='sc_py_hello.py'
/lianxi/sc/sc_py_hello.py

十六. bash

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

十七. /usr

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

十八. locate

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

which、whereis、locate、find

//		which、whereis、locate、find 命令查找类
Which、whereis 只能找命令
loacte 也可以查找普通文件、可以查找任何文件

十九. find

//* find命令

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

  find 可以找1.命令、2.文件 (即任何文件)

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

find命令

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

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

常用查找条件

-name:按文件名称查找

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

-size: 按文件大小查找

-user: 按文件属主查找

-type: 按文件类型查找

-perm :按文件权限查找

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

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

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

    本章内容概要 1. python 语法注释 2. python 语法之变量常量 3. python 基本数据类型(整型(int),浮点型(float),字符串(str)) 本章内容详解 1. pyth ...

  2. 一个bug肝一周...忍不住提了issue

    导航 Socket.IO是什么 Socket.IO的应用场景 为什么选socket.io-client-java 实战案例 参考 本文首发于智客工坊-<socket.io客户端向webserve ...

  3. python小题目练习(十一)

    题目:大乐透号码生成器 需求:使用Random模块模拟大乐透号码生成器,选号规则为:前区在1 ~ 35的范围内随机产生不重复 的5个号码,后区在1~ 12的范围内随机产生不重复的2个号码.效果如图8. ...

  4. Multiparty Cardinality Testing for Threshold Private Set-2021:解读

    本文记录阅读该论文的笔记. 本文基于阈值加法同态加密方案提出了一个新的允许\(N\)方检查其输入集的交集是否大于\(n-t\)的IPSI方案,该协议的通信复杂度为\(O(Nt^2)\). 注意:\(N ...

  5. NC16597 [NOIP2011]聪明的质监员

    NC16597 [NOIP2011]聪明的质监员 题目 题目描述 小T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有 \(n\) 个矿石,从 \(1\) 到 \(n\) 逐一编号,每个矿 ...

  6. Python基于周立功ZCANPRO开发刷写脚本

    一.概述 1.背景 本文章主要是记录用Python基于周立功ZCANPRO开发VIN和SN码刷写工具. 2.环境搭建 Python3.8.10 32位(必须) 周立功上位机:ZCANPRO 周立功CA ...

  7. c# SerialPort HEX there is no data received

    C#窗口程序进行串口通信,按照串口通信协议,设置com口,波特率,停止位,校验位,数据位,本地虚拟串口调试ok,但是和外设调试时,发送HEX模式数据命令,没有数据返回, 所以关键问题在于HEX模式,发 ...

  8. 腾讯云EKS 上部署 eshopondapr

    腾讯云容器服务(Tencent Kubernetes Engine,TKE)基于原生 kubernetes 提供以容器为核心的.高度可扩展的高性能容器管理服务.腾讯云容器服务完全兼容原生 kubern ...

  9. Proxmox6.2简单配置

    刻录: 使用rufus+GPT+DD方式写入U盘 一.更换国内源: 1)删除企业源 mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/so ...

  10. 4 zookeeper集群和基本命令

    4 zookeeper集群和基本命令 集群思路:先搞定一台服务器,再克隆出两台,形成集群! 1 安装zookeeper 我们的zookeeper是安装在/opt目录下 2 配置服务器编号 在/opt/ ...