Linux 文件、目录操作


 

Linux中的路径只能使用/,路径可以使用相对路径或绝对路径,相对路径相对于当前目录。

 

目录操作

切换、新建目录
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 #可以同时新建多个目录,空格隔开

 

列出子文件、子文件夹
#查看当前目录
pwd

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不存在,会报错

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 编辑文件内容
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 1.txt /usr/
cp 1.txt 2.txt /usr/document/  #同时复制多个时空格分开
cp 1.txt /usr/2.txt
 
#复制文件夹,-r 递归
cp -r /usr/local/tomcat /usr/
cp -r /usr/local/tomcat /usr/tomcat-mall

 

cp其实是 cp -i 的别名,目标路径存在同名的文件|文件夹时会询问是否覆盖。如果要覆盖大量同名的文件|文件夹,一个一个输入yes确认很麻烦,可以先取消cp别名,操作完再恢复别名

#取消cp别名
unalias cp

#cp覆盖大量同名文件|文件夹

#恢复别名
alias cp='cp -i'

 

mv是剪切,操作和cp基本相同,只是mv剪切文件夹时,不用加 -r,会自动递归。

#如果都是文件|目录,且都在同一目录下,即为重命名
mv 1.txt 2.txt
mv /usr/local/jdk /usr/local/jdk8

 

不同机器之间复制文件|文件夹

#其它机器的路径写为 用户名@ip:路径,执行时会提示输入其它机器的指定用户的密码

#本机复制到其它机器上
scp app/xxx.jar root@192.168.1.1:/usr/local/app/

#其它机器复制到本机上
scp root@192.168.1.1:/usr/local/app/xxx.jar /usr/local/app/

#其它机器复制到另一个其它机器上
scp root@192.168.1.1:/usr/local/app/xxx.jar root@192.168.1.2:/usr/local/app/xxx.jar

#复制文件夹加 -r

 

删除
#删除文件,-I表示不询问
rm -I conf/redis.conf

#删除文件夹,-r是递归,r、R均可,-I是只询问一次
rm -rI /usr/local/jdk

# -f 是强制删除

mkdir、touch、rm,这3个命令都可以同时操作多个文件|文件夹,文件|文件夹之间用空格隔开即可。

 

压缩、解压
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 指定档案名(压缩文件名),其后必须是压缩文件名
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值