常用的Linux命令
权限处理
-rw-r--r--
:
文件类型(-文件 d目录 l软连接)
u(user)所有者
g(group)所属组
o(other)其他人
r 读取权限 read w 写入权限 write x 执行权限 excute
所有者,当前登陆用户所拥有的权限 所属组,当前登陆用户所在的用户组的拥有的权限 其他,非当前用户,用户组,即其他用户所拥有的权限
chmod命令
change mode, 修改权限
修改权限:
使用数字代表权限修改文件的权限:
r
4
w
2
x
1
如果要设置如下权限,则可以使用如下命令rwxr-xr-x
:
权限对文件的作用
读取:cat、more、head、tail 写入:vi、echo,不包含删除权限 执行:可执行
注: echo 111 >> test.txts echo也是一个写入操作
权限对目录的作用
读:可以查看目录下的文件 (ls) 写: 具有修改目录结构的权限 (touch rm mv cp) 执行:可以进入目录(cd)
文件目录基本操作
ls 浏览目录子文件
命令英文原意:list
pwd 展示当前所在的路径
命令英文原意:print working directory
cd 切换目录
命令英文原意:change directory
mkdir 创建目录
命令英文原意:make directory
rmdir 删除空目录
命令英文原意:remove directory
rm 删除文件或者目录
英文原意,remove
mv 移动文件和目录
文件拷贝
cp 拷贝文件或者目录
英文原译, copy
文件压缩解压
tar
英文原译:tape archive
文件内容读取
cat 连接文件并打印到标准输出设备上
命令英文原意:concatenate and display files
more 分页显示文件内容
less 分页显示文件内容
head 显示文件前几行的内容
tail 显示文件后几行的内容
搜索命令
命令搜索 whereis
用于搜索命令所在的路径以及帮助文档所在的位置,不能搜索用户自己创建的文件等信息
不能看到shell命令(自带的命令,比如cd命令),只能看到外部安装的命令(环境变量中的命令)
-b
:只查找可执行文件-m
:只查找帮助文件
命令搜索 which
与whereis命令相同,不能看到shell命令,但是还可以看到命令文件的所在位置。
文件搜索:locate
locate : 定位,Ubuntu下没有该命令
locate [文件名]
locate搜索数据库,搜索速度非常快
数据库文件的位置在
/var/lib/mlocate
,这个数据库中包含了所有的文件名该数据库文件每天更新一次,当我们作新建文件,或是其他等操作,系统不会主动更新数据库,需要 使用
updatedb
命令更新locate命令搜索遵循
/etc/updatedb.conf
配置文件
文件搜索 find
find [搜索范围] [搜索条件]
搜索范围:
避免大范围搜索,会非常消耗系统资源
find / -name nginx.conf
在根路径下查找名为nginx.conf的配置文件find /etc -name *.conf
在etc路径下查找名为nginx.conf的配置文件 注意,在MacOS下,如果使用通配符,需要使用单引号或者双引号包裹:find /etc -name "*.conf"
搜索条件:
时间
-mtime +10
:查找10天前修改的文件-mtime 10
:查找10天前当天修改的文件-mtime -10
:查找10天内修改的文件
类型
-atime
文件访问时间-ctime
改变文件属性-mtime
修改文件内容
根据文件名称
-name
可以使用通配符-iname
:不区分要搜索的文件名的的大小写可用的通配符
*
匹配任意内容?
匹配任意一个字符[]
匹配任意一个括号内的字符
文件大小
-size
:文件大小用小写k和大写M
所属用户
-user root
:搜索属于root用户的文件-nouser
:搜索没有所属者的文件,liunx中,每个文件都有所属者,如果没有,有可能有以下几种情况:垃圾文件、内核产生的文件(proc/,sys/)、外来文件(U盘拷入)
其他选项
-a
表示and-o
表示or
举例:
Linux三剑客
正则表达式是一套规则与方法
正则工作时以行为单位,一次处理一行文本
Linux下仅有三剑客支持正则处理,其他命令无法使用
三剑客:
grep:文本过滤工具
sed:stream editor,流编辑器,文本编辑工具
awk:Linux的文本报告生成器(格式化文本),实际是上一个指向
gawk
的软连接
正则表达式
基本的正则表达式BRE:
^
匹配开头,比如^kube
,匹配以kube开头的行
$
匹配结尾,比如service$
,匹配以service结尾的行
^$
匹配开头空,空结尾的行,也就是空行
.
匹配一个任意字符,且不可以是空行
*
匹配前一个表达式0次或者多次,等同于{0,}
,比如ab*
代表匹配a后面没有b的或者有一个或者多个b的字符串,将会匹配a
、ab
、abbb
.*
组合符,匹配所有的内容,匹配任意一个字符(.
)重复0次或者多次(*
)
^.*
组合符,匹配任意多个字符开头的行,包含空行
/*$
组合符,匹配任意多个字符结尾的行,包含空行
[abc]
匹配[]
内的任意一个字符,a
或b
或c
[^]
匹配除了^
后的任意字符,^
表示取反
\
转义字符,对特殊含义字符转义,\.
表示.
字符,但是不能匹配空行
扩展正则表达式ERE,需要使用grep -E
才可以生效:
+
匹配前一个字符1次或者多次
[ab]+
匹配a或者b出现一次或者多次
?
匹配前一个字符0次或者1次
`
`
()
表示分组过滤,被括起来的内容表示一组,一个整体
a{n,m}
匹配前一个字符a至少出现n次,最多出现m次
a{n,}
匹配前一个字符a最少出现n次
a{,m}
匹配前一个字符a最多出现m次
a{n}
匹配前一个字符a正好出现n次
grep
Gloab search REgular expression and Print out the Line. 是一个根据用户指定的模式(过滤条件)对目标文本进行匹配检查并打印匹配到的行的文本搜索工具。他的主要模式由正则表达式的元字符以及文本字符锁边写出的过滤条件。
示例:
sed
是操作、过滤、转换文本内容的强大工具,他的处理流程如下:
sed会以行为单位进行读取
读取一行数据后将数据放入sed模式空间(内存中)
对改行进行模式匹配,如果匹配失默认进行标准输出(不做修改)
如果模式匹配成功,将会根据模式编辑文本并进行标准输出
其中,匹配规则与处理规则写在{script-only-if-no-other-script}
中。处理脚本大致分为两个部分:
匹配规则
字符命令
比如:
空地址
全文匹配
单地址
指定匹配某一行,比如3
匹配第三行
n,m
匹配第n行到第m行
n,+x
匹配第n行向下的x行
n~y
步长匹配,匹配第n
,第n+y
,第n+2y
行...,通常用于匹配奇数行或者偶数行
/pattern/
正则匹配通过的行
/pattern1/,/pattern2/
匹配多个正则
模式p
print, 打印匹配行的内容,通常和 -n
一同使用
模式a 追加的文本行
append, 文本追加,在指定的行后添加一行或者多行
模式i 插入的文本行
insert, 文本插入,在指定的行前添加一行或者多行
模式d
delete, 删除匹配的行
模式s/正则/替换内容/g
匹配正则内容,然后替换内容,g代表全局替换
此外,sed支持以下几种常用的选项:
-n
取消默认的sed输出,通常与p
字符命令一通使用
-i
直接将修改结果写入文件,而不是修改内存内容
-e
多次编辑,处理之后再处理一次,该选项可以替代管道
-r
支持正则扩展
案例:
找出本机的IP地址:
awk
文本格式化:
envsubst(替换配置文件的替换项)
假设应用程序下有如下配置文件application.properties
:
此时如果我想修改数据库用户和密码,需要使用vim打开文件,然后修改值再保存重启。但是如果当前目录下有100个类似的文件,这样的操作就很繁琐了(建议使用配置中心)。
所以,可以使用envsubst
命令,统一替换所有的配置文件,步骤如下:
curl
get请求:
展示响应头信息(-i
,--include
):
只查看响应头(-I
,--head
):
如果是3开头的,则自动进行请求重定向地址(-L
,--Location
):
保存响应内容:
最后更新于
这有帮助吗?