文章目录
Linux中的路径只能使用/
路径可以使用相对路径或绝对路径,相对路径相对于当前目录。
目录操作
查看当前目录
pwd
切换目录
cd / #切换到根目录
cd /usr/local #切换到指定目录,绝对路径
cd .. #切换过到上一级目录,也可以写成 ../
cd local #切换到当前目录下的local目录,也可以写成 ./local
新建、删除目录
mkdir /usr/local/jdk #如果前面的usr、local不存在,会报错
mkdir /usr/local/jdk -p # -p 如果前面的目录不存在,会自动创建
mkdir /usr/local/jdk /usr/local/tomcat #可以同时新建多个目录,空格隔开
rm -rI /usr/local/jdk #r是递归删除里面的文件、文件夹,r、R均可,I是只询问一次
#mkdir、rm 都可以同时操作多个目录,目录之间空格隔开即可
列出子文件、子文件夹
ls #缺省目录时默认为当前目录,默认不会列出隐藏的
ls /usr/local #指定目录
ls -a #列出所有的,a即all,隐藏的文件|目录以.开头
ls -l #列出详细信息,文件尺寸默认单位Byte
ls -h #列出详细信息+友好显示,文件尺寸带有单位K、M等,方便阅读
参数可以合并写,示例
ls -a -l
ls -al
文件操作
新建、删除、下载文件
touch conf/redis.conf #新建文件。如果conf不存在,会报错
rm conf/redis.conf -I #删除文件,-I表示不询问
wget http://xxxxxx #从网上下载文件,默认保存至当前目录
查看文件内容
cat redis.conf #列出文件所有的内容
cat -n redis.conf #-n 显示行号
head -n 5 redis.conf #只列出前5行
head -5 redis.conf #可简写
tail -n 5 redis.conf #只列出最后5行
tail -5 redis.conf #可简写
tail -f xxx.log #-f可查看正在改变的文件,会把文件尾部的内容显示在屏幕上,并不断更新,常用于查看日志文件
more redis.conf #一页一页地显示。浏览过程中可用的键:
# Enter 下一行
# 空格键 下一页
# :f 显示当前行号、文件名(冒号)
# q 退出文档显示
# /字符串 往下搜索字符串
less redis.conf #也是一页一页地显示,但比more功能多。浏览过程中可用的键:
# Enter 下一行
# 空格键或PageDown 下一页
# PageUp 上一页
# :f 显示当前页面的详细信息,包括行号区间、字节数、字符数占比等
# q 退出文档显示
#/字符串 #往下搜索字符串
#?字符串 #往上搜索字符串
#more、less适合浏览长文本
查找指定文件
会返回匹配的文件的路径
#在指定目录下查找文件
find /usr/local/redis -name "redis.conf"
#不指定目录时默认在当前目录下查找
find -name "redis.conf"
#全局查找
find / -name "redis.conf"
#在当前用户的目录下找
find ~ -name "redis.conf"
#支持通配符,模糊查询,*表示0个或多个字符
find / -name "redis*"
#查找时文件名默认区分大小写,-i表示查找时文件名不区分大小写
find / -iname "redis*"
grep 检索文件内容
linux处理文本文件内容有三个常用命令,被称为linux三剑客
- grep:检索、筛选文件内容
- sed:编辑、批量修改文件内容
- awk:支持条件判断、数组、循环等功能,可控制执行流程
此处只介绍grep、sed,awk功能丰富,感兴趣的可自行学习。
#在指定文件中查找字符串,字符串默认区分大小写。字符串可引可不引
grep "bind" redis.conf
#文件可以使用通配符,实现在多个文件中查找
grep "bind" *.conf
#-n会显示在原文件中的行号
grep -n "bind" redis.conf
#-w是整行匹配,即要求目标行的内容只能是指定的串
grep -w "bind" redis.conf
#默认要区分大小写,-i是不区分大小写
grep -i "bind" redis.conf
#^指定要是行的开头
grep "^bind" redis.conf
#目标字符串可以用-E指定为正则表达式
grep -E "192.168.[0-255].[0-255]" redis.conf
#-v是匹配不包含目标字符串的行
grep -v "bind" redis.conf
awk 批量修改文件内容
#s表示是字符串操作,前一个//区间中写要匹配的串,后一个//区间写目标串
#找到匹配的行,输出到console时会用目标串替换要匹配的串
sed 's/public/private/' /usr/local/User.java
#默认只替换输出到console的内容,如果要替换文件中内容,加-i
sed -i 's/public/private/' /usr/local/User.java
#要匹配的串可以使用正则表达式,注意特殊字符要转义
sed -i 's/^\[Pp\]ulic/private/' /usr/local/User.java
#默认一行只替换第一个匹配,如果要替换一行中的所有匹配,加g
sed -i 's/^\[Pp\]ulic/private/g' /usr/local/User.java
管道
|是管道操作符,以一个命令的输出作为另一个命令的输入
ps -ef | grep tomcat #在前面的结果中进行查找
ps -ef | less #分页显示正在运行的进程
编辑文件内容
vim redis.conf #vim也可以写成vi,进入命令模式
#如果是root,vim编辑的文件不存在时会自动创建;如果是非root账户,文件不存在时需要先touch创建
#三种模式切换的快捷键
i #从命令模式切换到输入模式
esc #从输入模式回退到命令模式
: #从命令模式进入底线命令模式
#命令模式常用快捷键
r #替换当前字符
dd #删除当前行
yy #复制当前行
p #在当前行的下面粘贴出来
u #撤销
# /字符串 #往下搜索字符串,n是下一个,N是上一个
# ?字符串 #往上搜索字符串,n、N的用法和/的相反
#底线命令模式常用快捷键
:w #保存
:q #退出,单独使用时用于未修改内容的退出
:q! #强制退出,用于修改了内容但不想保存的退出
:wq #保存并退出
#当然,home、end、delete、enter之类的快捷键也可以用
输出重定向
默认输出是输出到控制台,>、>>可以重定向输出,比如重定向输出到文件中。
ls > out/ls.txt
ls >> out/ls.txt
- >、>>前面要是命令,不能是普通字符串,>会覆盖文件的原有内容,>>是追加到文件末尾
- 指定的路径中,目录必须是已存在的,不然会报错;文件可以不存在,文件不存在时会自动创建。
文件、目录共有的操作
复制、剪切
#复制文件
cp /usr/local/1.txt 1.txt #源文件路径,目录路径
cp /usr/local/1.txt 2.txt #可以指定目标文件名
cp /usr/local/1.txt /usr 复制到指定的目录下
#复制文件夹,-r 递归
cp -r /usr/local/tomcat /tomcat
cp -r /usr/local/tomcat /tomcat1 #可指定目标文件夹名
#如果存在同名的目标文件|文件夹,默认直接覆盖
#可使用-i指定存在同名目标文件|目录时要先询问是否覆盖:
cp -i /usr/local/1.txt 1.txt
cp -ir /usr/local/tomcat /tomcat
#cp是复制,mv是剪切,操作基本相同
#不同点:mv剪切文件夹时,不用加-r,会自动递归
重命名
#如果都是文件|目录,且都在同一目录下,即为重命名
mv 1.txt 2.txt
mv /usr/local/jdk1.8 /usr/local/jdk
压缩、解压
tar -czvf mall.tar.gz mall #讲文件|文件夹打包并压缩
tar -xzvf mall.tar.gz #解压,默认解压到当前目录下
tar -xzvf mall.tar.gz -C /app #-C 解压到指定目录下。可以使用绝对、相对路径,但指定目录必须要是已存在的
# 参数:
# -c 创建
# -x 解开
# -z 压缩、解压时的归档。打包并压缩生成的是.tar.gz,如果不要-z,只是打包、不压缩,生成的是.tar文件
# -v 显示过程
# -f 指定档案名(压缩文件名),其后必须是压缩文件名