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 指定档案名(压缩文件名),其后必须是压缩文件名