services.msc Windows服务窗口命令
#####
ctrl+alt 释放鼠标
ip address show 网络Ip查询
ctrl + alt + f1/f2 图形与命令窗口切换
#####
Ctrl + alt + f1~f7 表示七个终端,也就是七个屏幕的含义
ssh [email protected] (远程连接命令)
touch 触摸
cd
date 时间
which 在哪
echo 打印 语法 echo "内容 " 屏幕显示 内容
cat 查看
stat 查看文件详细信息
whereis
file
*********************************************************************************************************************************************************************************************************************************************************************************************************************
Linux命令行常用快捷键方式
Ctrl+c cancel 取消当前操作
+l 清屏
+d 退出当前用户
+a 光标移到到行首
+e 光标移到到行尾
+u 删除光标到行首内容
**********************************************************************************************************************************************************************************************************************************************************************************************************************
Linux命令行:
命令+空格+参数(可写可不写)+空格+文件,文件夹(可写可不写)
基本命令用法如上:1.一般情况下Linux命令的参数,都是可选的,可写可不写,不同的参数作用也不一样 2.Linux命令之间,必须得有一个或者多个空格
whoami 我是谁 ,显示当前登录的用户
hostname 显示当期机器的主机名
pwd 显示当前的工作目录绝对路径
[root@Luffycity opt] Linux的命令提示符含义分别表示 root:登录的用户 @:占位符 Luffycity:当前机器的名字 空格 opt:当前你所在的工作目录
Linux目录结构:
/
/dev存放抽象硬件 dev boot /boot存放内核与启动文件
/lib存放系统库文件 lib bin /bin存放二进制文件(可执行命令)binary 二进制的缩写含义 只要发现目录中有bin相关的字,说明这个文件夹里面存放可执行文件
/sbin 存放特权级二进制文件 sbin usr /存放安装程序(软件默认目录)
/var 存放经常变化的文件(/var/log/ 日志存放 ) var mnt /mnt文件挂载目录(U盘,光驱)
/home 普通用户目录 home root /root特权用户目录
/etc 存放配置文件目录(/etc/nginx.conf 或者 etc/my.cnf) etc opt /opt大型软件存放目录(非强制) 如;/opt/python36 /opt/mysql /opt/redis
/sys 系统文件 srv /服务相关数据
/run 里面的东西是系统运行时需要的, 不能随便删除. 但是重启的时候应该抛弃. 下次系统运行时重新生成
/proc 内存系统文件 tmp / 临时文件夹
etc重要配置文件
/etc/sysconfig/network-scripts/ifcfg-ens33 (网卡配置文件)
/etc/profile.d用户登录后执行的脚本所在的目录
linux核心命令与文件管理:
Linux的命令参数可以简写 如 ls -l -h 等于ls -lh
cd命令 change directory的缩写 更改目录的意思
cd语法:cd 可选的参数 文件夹
几个特殊目录:
.当前的工作目录
..上一级的工作目录
-上一次的工作目录
~当前系统登录的用户家目录
.当前目录 /根目录 ./ 当前目录下的某内容
************************************************************************************************************************************************************************************************************************************************************************************************************************
【ls命令】
list 列出文件夹中的内容
ls语法:ls 可选参数 可选的的文件夹对象
-a all的意思显示所有的目录及隐藏目录 【】
-l 详细输出文件夹中内容 【】
-h 以人类可阅读的方式输出文件大小 【】
--full-time 已完整的时间格式输出 【】
-t 根据最后修改的时间排序文件
-F 在不同的文件结尾,输出不同的特殊符号
以/结尾的是文件夹 以*结尾的就是可执行文件 以@结尾的是软连接,快捷方式 普通文件类型,结尾什么都没有
-d显示文件夹本身信息,不输出其中的内容
-r reverse 逆转排序
-S 大写的S,针对文件大小进行排序,默认是从大到小
-i 显示出文件的inode信息(文件的身份证号,存储了文件的元信息,文件的大小,位置,权限等等)
pwd命令
print work directory 打印工作目录的意思
会输出当前所处的一个绝对路径
su命令
su 命令用户切换
语法:su - 用户名 # 完全的环境变量用户切换
logout 退出当前系统用户
【mkdir 】
make directory 【创建文件夹 】
语法 mkdir 文件夹名字
参数用法:
-p 递归创建文件 【】
mkdir -p /opt/lodboy-linux/yuchao/chaoge # 递归创建文件夹,绝对路径是/opt/oldboy_linux/yuchao/chaoge
绝对相对路径与touch
/opt/lodboy/alex 从根目录开始寻找,就是绝对路径写法 ,只要不是从根目录开始寻找,就是相对路径./lodboy/alex
【touch 命令】
1用法:touch{选项}...文件...
将每个文件的访问时间和修改时间改为当前时间
touch有两个作用
1.创建普通文件,在Linux下文件的后缀格式仅仅是一个名字而已,通过touch创建的文件都是普通文件
1.修改文件的时间
不存在的文件将会被创将为空文件夹,除非使用-或者-h 选项
touch {连续数字或者字母} 创建多个文件系列【】
如:touch {1..10} 或touch {a..z}
-c ,--no-create 不创建任何文件
-t STAMP 使用{{CC}YY}MMDDhhmm{.ss} 格式的时间代替当前时间
-r,reference=文件 使用指定文件的时间属性代替当前文件时间
touch -t 修改文件的时间 touch -t 2002010808 .fangfang.txt
********************************************************************************************************************************************************************************************************************************************************************************************************************************
复制加粘贴
【cp命令】
用法:cp [选项]...[-T] 源文件 目标文件
或:cp [选项]...源文件...目录
或:cp [选项]...-t 目录 源文件...
将源文件复制至目标文件,或将多个源文件复制至目标目录
-r 递归式复制目录,即复制目录下的所有层级的子目录及文件 【】
-p 复制的时候保持属性不变
-d 复制的时候保持软连接(快捷方式)
-a 等于-pdr
-p 等于--preserve=模式,所有权,时间戳,复制文件时保持源文件的权限,时间属性
-i,--interactive 覆盖前询问提示
案例
1.复制普通文件
cp命令 + 你想复制哪个文件 + 复制之后的文件名
2.复制普通文件,且改名,放入到另一个文件夹中
cp. mjj.txt ./oldboy/ #复制放入其他文件夹,保留源文件名
cp. mjj.txt ./lodboy/ mjj.txt2 # 复制文件放入其他文件夹,且改名
3.一次性复制多个文件,放入另一个文件夹中
cp mjj.exe mjj.gif ./mjj/
4.复制整个文件夹,必须加上-r参数 【】
cp -r mjj mjj2
5.复制且保持文件属性不变,-p 参数用法
cp -p chaoge.txt chaoge.txt.3
6.拷贝软连接的时候,保持连接属性不变 -d 参数
7.-i 参数的用法,覆盖文件前提示
cp -i 文件1 文件2 # 如果文件2已经存在,则会覆盖,-i会让用户进行输入y确认覆盖 备注:默认系统做了 alisa别名功能,让我们输入cp的时候,其实cp是 -i 参数
【mv命令】
mv命令就是move的缩写,作用是移动或是重命名文件
用法:mv[选项]...[-t]...源文件 目标文件
或:mv[选项]...源文件...目录
或:mv[选项]...-t 目录 源文件...
将源文件重命名为目标文件,或将源文件移动至指定目录
-f,--forcr 覆盖前不询问
-i,--interactive 覆盖前询问
案例:
1.移动文件到另一个文件夹
mv ./mjj.jj ./oldboy #把当前的mjj.jj文件 移动到oldboy文件夹中
2.移动多个文件,放到另一个文件夹中
mv luffy* ./oldboy/ #将当前目录所以以luff开头的文件,文件夹,都移动到oldboy目录下去
3.重命名用法
mv 旧的文件名 新的文件名
mv mjj.txt mjj.txxxt
4.-i参数的有用法,覆盖前询问
mv 在直接输入的时候,系统做了别名alias,其实敲的是mv -i
语法是:如果修改后的文件名,已经存在,则会询问,是否要覆盖该文件
mv mjj.txt mjj.exe #如果mjj.exe 已经存在了,则会询问是否覆盖它
5.强制性覆盖 -f
【rm命令】
mr命令就是remove 的含义,删除一个或者多个文件,这是Linux系统的重要命令
-f, --foree 强制删除,忽略不存在的文件,不提示确认
-i, 在删除前需要确认
-T 在删出超过三个文件或者递归删除前要求确认
-d, --dir 删除空目录
-r,-R -- 递归删除目录及其内容 【】
--help 显示此帮助信息并退出
--version 显示版本信息并退出
案例:
1.删除普通文件,就是默认添加了-i参数,询问是否删除
rm change.txt ,删除前会提问,是否删除
2.一次性删除多个文件
rm chaoge.txt.2 chaoge.txt.3 #删除多个文件,写入多个名字,【空格分隔】
3. 删除文件夹,必须给rm【添加-r参数】才行,默认rm只能删除文件类型
rm -r mjj #删除mjj文件夹以及里面内容
4.-d 参数,只能用于删除空文件夹
rm -d llovlinux/
5.强制删除文件,且不提示
rm -f mjj* #强制删除以及mjj开头的文件,文件夹无法删除
6.强制删除所有文件和文件夹 【】
rm -f -r ./* #一定要看清楚此命令,写的是否正确
【】
.当前目录 /根目录 ./ 当前目录下的某内容
rm -rf / * #强制性删除 根目录下所有内容,非常危险,严禁敲打,删除机器所有内容
rm -rf ./* #强制性删除,相对路径 ,当前目录下所有内容
7.-v 参数,显示删除的过程
[root@luffyycity opt]# rm -rfv ./* #强制性删除当前目录所有内容 ,且显示过程
Linux帮助命令
man 命令 --help info
语法 :
如:man ls 如 :rm --help 如:info 命令
Linux开关机命令
shutdown 重启或者关机
语法
重启
1. -r #-reboot :shutdown -r 10 或者10:30(时间)now立刻重启
关机
2.shutdown -h 10 十分钟后关机,0,now 立刻关机
3.reboot 重启 poweroff 关机 int 0 切换运行级别为0 ,0 表示关机,6表示重启 logout注销退出当前用户 exit 注销快捷键ctrl+date
************************************************************************************************************************************************************************************************************************************************************************************************************************************
Linux的环境变量
查看Linux下的PATH环境变量
执行命令 echo $PATH
echo $PATH $符号后面跟上PATH,表示输出PATH的变量
PATH (一定是大写)这个变量是由一堆目录组成,分隔符是“:“,不同于Windows的”;“
*******************************************************************************************************************************************************************************************************************************************************************************************************************************************
【 vim的使用】
vi filename 进入命令模式,
vim 使用流程:
vim 默认机器是不安装的,需要手动安装这个工具命令
yum install vim -y #通过yum软件管理工具,安装命令vim,且默认是yes,这个命令得保证机器能够上网
当vim 打开不存在的文件的时候,默认会创建文件
#语法:
1.vim 文件名 #打开文件
2.输入字母 i ,进入编辑模式,代表insert
输入字母o,在光标下一行开始编辑
3.写完代码之后,按下esc,退出编辑模式
4.此时输入冒号,进入底线命令模式,然后输入
:wq! 强制写入文件内容且退出vim,write quit ! 强制的
:q! 不报错直接退出
5.注意输入的冒号得是英文输入法的状态
vim快捷键
vim 提供的上下左右
h向左 j向下 k向上 I右 光标移到本行开头home 移到本行末尾 end
移动光标的快捷键盘
w(e)移动到下一个单词
b 移动到上一个单词
数字0移动到行首
字符$移动到行尾
ctrl + f 下一页 ctrl+b 上一页
`. 移动光标到上一次的修改行
按下gg 移动到文章的开头 G移动到文章的结尾
按下H 移动到屏幕的开头 L移动到文章的结尾 M移动到屏幕的中间
命令模式的查找 【】
向下查找 语法: /+你要找的内容,
如: /love 我要查找love相关的信息,按下n跳转到下一个单词
向上查找 ?你要找的内容, 按下n 寻找下一个单词
*或者# 查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处
:n 把光标定位到文件的第n 行。
命令模式下的复制,粘贴,删除
输入 yy 复制光标所在行
输入 4yy 复制4行内容
输入 p 打印粘贴的内容
输入 dd 删除光标当前行
输入 D 删除光标当前位置到行尾的内容
输入 x 删除光标当前字符,向后删除
输入 X 删除光标当前字符,向前删除 删除一行 dd ndd 删除一个单词 dw
输入 u 撤销上一步的动作
输入 . 重复上一次操作
快捷操作
删除光标所在位置,直到行尾内容,且进入编辑模式,输入大写C
输入o 在当前光标的下一行开始编辑
输入 A 快速进入行尾,且进入编辑模式
输入 ZZ 快捷保存退出
批量快捷操作【】
步骤:
1.输入ctrl+v 进入可是块模式
2.用上下左右命令,选择你选操作的块
3.选中块后,输入d ,删除内容
快捷插入多行
4.选中块后,输入大写的I,进行写代码
5.按下esc两次,会自动生成多行代码
行号
:set nu 显示行号
:set nonu 关闭显示行号
注释添加与删除:
1.ctrl+v 进入可视化模式
2.移动光标上移或者下移,选中多行的开头
3.选择完毕后,按下大写I键,进入"insert"模式,输入要插入的注释符,如#
4.按下esc键,选择代码已被注释
5.选择按d 即是删除注释
··········································································
替换模式
命令行下按R键进入替换模式
退出
esc
替换
:s/old/new 只替换光标所在行的第一个old string
:s/old/new/g 将本行(光标)的所有old string替换为new string g global n代表一个行号
:%s/old/new/g 将本文中所有的old string替换为new string
:1,2s/old/new/g 替换1到2行中的old string为new string
:.,2s/old/new/g .代表光标所在行 当前行到第二行的
:2,$s/old/new/g 替换2到最后一行中的old string为new string
:!command 在vim编辑器中执行一条命令(不许要退出当前的编辑,可以在编辑器中执行命令,类似退出编辑器执行命令)
保存文档
可以用:n,mw filename 命令将第n 行到第m 行的文字存放的所指定的filename 文件中。
·································································································
vim 交换文件解决方法 ??????
【重定向符号】【】
符号 解释
重定向的的意思是,“将数据传到其他地方”
> 输出覆盖重定向
>> 输出追加重定向
<或<< 标椎输入重定向
【案例】:
1.读取文件内容,且写入到另一个文件夹中,覆盖写入文件内容
cat douyin.txt > kuaishou.txt
2.追加写入文件内容
cat douyin.txt >> kuaishou.txt
3.重定向写入符
cat < douyin.txt #把文件中的数据,发送给cat命令去读取
将文本内容拆分成多行
xargs命令
xargs -n 4 < shuzi.txt #把文本内容拆成多行
4.重定向追加写入符 <<
可以结合cat命令使用
【cat命令】 (用于看内容较少的纯文本文件)
---------------------------------------------------------------------------------------------
功能 说明
查看文件内容 cat file.txt (file文档,文件)
多个文件合并 cat file.txt file.txt > file3.txt
cat >> file.txt <
EOF
清空文件内容 cat/dev/null>file.txt #/dev/null是Linux系统的黑洞文件
-----------------------------------------------------------------------------------------------
参数
用法:cat[选项] [文件] ...
将[文件]或标准输入组合输出到标准输出
清空文件内容,不留空行 慎用【】
1.> 文件名
2.直接清空文件,留下一个空行
echo > gushi .txt
3.清空文件内容
cat/dev/null>file.txt #/dev/null是Linux系统的黑洞文件
-A, --show-all 等价于-vET
-b, --number-nonblank 对非空行输出编号【】
-e 等价于 -vE
-E, --show-ends 每行结束处显示$
-n, --number 【对输出的所有行编号】
-s, --ssqueeze-blank 不输出多行空行
-t 与-vT等价
-T --show-tabs 将跳格字符显示为^I ??????????
-u 被忽略
-v, --show-nonprinting 使用^和M-引用,除了LFD和TAB之外
--help 显示此帮助信息并退出
--version 输出版本信息并退出
如果[文件]缺省,或者[文件]为,则读取标准输入
案例:
cat的功能参数用法
1.查看文本内容,以及功能参数
cat gushi.txt
2.对非空行显示行号 所有行显示行号
cat -b gushi.txt cat -n gushi.txt
3.在每行结尾加上$符
cat -n -E gushi.txt
4.减少空行数量,多个空行,减为一个
cat -s gushi.txt
tac命令
tac命令查看文件结果与cat想反
【 管道符】
Linux提供的管道符“|”将两条命令隔开,【管道符左边命令会作为管道符右边命令的输入】
常见用法:
#检查Python程序是否启动
ps -ef|grep "python"
#找到/tmp目录下的所有txt文件
#检查nginx的端口是否存活
netstat -tunlp |grep ngix
1.对字符串进行二次过滤
查看gushi.txt文本的内容,且对内容进行二次过滤,找出有关know me 的行
输入: cat gushi.txt | grep "know me"
输出: don't you know me
don't you know me by now
grep 命令
过滤字符串的命令
【more命令和less命令】
分屏查看大文本内容的命令
语法:
more 文件名 #分屏显示文件内容
参数:按下enter回车是下一行
空格是向下滚蛋一个屏幕大小
=显示当前行号
按下q是退出more
# 【head和tail】
head 命令用于查看文件开头的n行
语法
head -5 文件名 head 文件名 默认十行
-c 参数,指定字符数量,显示字符数
tail 是默认从后向前看10行,也可以指定行数 用法与head等同
-f 实时刷新文件内容变化
参数 tail -f gushi.txt
-F 不断打开文件,一般和-f 结合使用
【cut命令】
cut -在文件的每一行中提取片断
在每个文件FILE的各行中,把提取的片断显示在标注输出
语法
cut [参数] [数值区间] 文件1
-b 以字节为单位分隔
-n 取消分隔多字节字符,与-b 一起用
-c 以字符为单位
-d 自定义分隔符,默认以tab为分隔符
-f 与-d一起使用,指定显示哪个区域
N- 第N个字节,字符或者字段 直至行尾
N-M 从第N到第M(并包括M)个字节,字符或字段
-M 从第1到第M(并包括第M)个字节,字符或字段
【案例】:
1.截取每一行的第四个字符
cut -c 4 alex.txt
2.截取 4到6个字符
cut -c 4-6 alex.txt
3,截取第5和7的字符
cut -c 5,7 alex.txt
4.截取一个范围的字符,如第四个到结尾
cut -c 4- alex.txt
5.截取一个范围的字符,如开头到第6个字符
cut -c -6 alex.txt
6.指定分隔符,进行截取
cut -d ":" -f
区域范围 alex.txt
找出第三个区域的内容【】
cut -d ":" -f 3 alex.txt
找出开头到第三个区域的内容
cut -d ":" -f -3
【sort命令】
sort命令将输入的文件内容按照规则【排序】,然后输出结果
用法 : sort [选项] ...[文件]...
或 : sort [选项]...--files0-from=F
串联排序所有指定文件并将结果写到标准输出
-b,--ignore-leading-blanks 忽略前导的空白区域
-n,--numeric-sort 根据字符串数值比较 【】
-r,--reverse 逆序输出排序结果【】
-u,--unique 去重排序 配合-c,严格校验排序;不配合-c,则只输出一次排序结果 ??????????
-t,--field-separator=分隔符 使用指定的分隔符代替非空格到空格的转换【】
-k,--key=位置1[,位置2] 在位置1开始一个key,在位置2 终止(默认为行尾)
案例:
1.对文件第一个字符进行排序,默认从小到大
sort -n file.txt
2.对排序结果反转,从大到小排序
sort -n -r file.txt
3.对排序结果去重【】
sort -u file.txt
4.指定分隔符号,指定区域进行排序,从小到大【】
sort -n -t "." -k 4 ip.txt
【uniq命令】
uniq命令可以输出或者忽略文件的重复行,常与sort排序结合使用
用法: uniq [选项]...[文件]
从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出
不附件任何选项时匹配行将在首次出现处被合并
-c, --count 在每行前加上表示相应行目出现次数的前缀编号
-d, --repeated 只输出重复的行
-u, --unique 只显示出现过一次的行,注意了,uniq的只出现过一次,是针对-c统计之后的结果
案例:
1.去除连续的重复行
uniq luffy.txt
2.结合sort使用,去重更精准
sort -n luffy.txt | uniq
3.统计每一行重复次数
sort -n luffy.txt |uniq -c
4.只找出文件中重复行,且统计出现次数【】
sort -n luffy.txt |uniq -d -c
5.找出只出现过一次的行
sort -n luffy.txt | uniq -c -u
【wc 命令】
wc 命令用于统计文件的行数,单词,字节数
-c, --bytes打印字节数
-m, --chars打印字符数
-l, --lines打印行数
-L, --max-lines-length 打印最长行的长度
-w, --words 打印单词数
语法: wc [参数] [文件名]
字符串结尾有一个$符,所以 echo "chaoge" |wc -m 输出7个字符数
w命令 查询几人登录机器
【tr命令】
tr命令从标准输入中【替换】,缩减或删除字符,将结果写入到标准输出
用法:tr [选项]...SET1 [SET2]
从标准输入中替换,缩减和/或删除字符,并将结果写到标准输出
字符集1:指定要转换或删除的原字符集
当执行转换操作是,必须使用参数“字符集2”;
但执行删除操作时,不需要参数“字符集2”
字符集2:指的是要转换成的目标字符集
-c 或 --complerment;取代所以不属于第一字符集的字符
-d 或 --delete;删除所有属于第一字符集的字符
-s 或 --squeeze-repeats ;把连续重复的字符以单独一个字符表示
-t 或 --truncate-set1:先删除第一字符集较第二字符集多出的字符
案例:
1.替换标准输入中的大小写
echo "my name is alex" | tr '[a-z]' '[A-Z]'
2.使用-d 删除参数
echo "my name is alex i an 999 years old" |tr -d 'a-z'
3.把文件当做标准输入,进行字符替换
tr 'a' 'A' < alex.txt
4.把连续重复的字符以单独一个字符表示
echo "iii am aaaaaaaalllllexxxxx" | tr -s 'iaxl' 输出 i am alex
【stat命令】
用于显示文件的状态信息,stat命令的输出比ls 命令的输出信息要更加详细
语法 sata 选项 参数
-L, --dereference 跟随链接
-f. --file-system 显示文件系统状态而非文件状态
-c, --dormat=格式 使用指定输出格式代替默认值,没用一次指定格式换一行新
--printf=格式 类似 --format,但是会结束反斜杠转义符,不使用换行作输出结尾,如果您仍希望使用换行,可以在格式中加入 '\n'
-t --terse 使用简洁格式输出
******************************************************************************************************************************************************************************************************************************************************************************************
【find 命令】
find 命令用来在指导目录下查找文件,任何位于参数之前的字符串都将被视为欲查找的目录名
如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件
并且将查找到的字目录和文件全部进行显示
find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
fmd处理符号链接 要查找的路径 参数 限定条件 执行动作
find-H -L-P PATH options tests actions
语法
1.find 查找目录和文件,语法:
find 路径 -命令参数 [输出形式] 参数说明:路径--告诉find在哪儿找你要的东西
参数 解释 【】【】【】
pathname 要查找的路径
options(选项)
-maxdepth <目录层级>:设置最大目录层级
-mindepth <目录层级>:设置最小目录层级
tests(模块)
-atime 按照文件访问access(访问时间)的时间查找,单位是天
-ctime 按照文件的改变change(更改时间)状态来查找文件,单位是天
-mtime 根据文件modify(修改时间)时间查找文件(最常用)
-name 按照文件名字查找,支持*?[]通配符(最常用)
-gourp 按照文件的所属组查找
-perm 按照文件的权限查找
按照文件的大小为n个由后缀决定的数据块,其中后缀为:b 代表512位元组的区块(如果用户没有指定后缀),则默认为b;
-size n[cwbkMG] c:表示字节数;k:表示kilo bytes (1024字节);w:字(2字节);M:兆字节;G:千兆字节
-type 查找某一类型的文件;b-块设备文件;d-目录;c-字符设备文件;p-管道文件;l-符号链接文件;f-普通文件;s-socket文件
-user 按照文件属性来查找文件
-path 配合-prune参数排除指定目录
Actions模块
-prune 使用find命令不在指定的目录寻找
-delete 删除找出的文件
-exec或 -ok 对匹配的文件执行响应的shell命令
-print 对匹配的结果标准输出
OPERATORS
! 取反
-a -o 取交集,并集,作用类似&&和\
案例: 【】
1.根据名字查找
find -name "文件名" -delete (找出且删除)
Unix/linux 文件系统每个文件都有三张时间戳:
访问时间(-atime/天 ,-amin/分钟):用户最近访问时间(文件修改了,还未被读取过,则不变)
修改时间(-mtime,-mmin):文件最后一次修改时间(数据变动)
变化时间(-ctime,-cmin):文件数据元(例如权限)最后一次修改时间
备注:文件任何数据改变,change变化,无论元数据变动,或是对文件mv,cp等
文件内容被修改时,modify 和change更新
当change更新后,第一次访问该文件(cat,less),access time首次更新,之后则不会
touch -a :仅更新Access time (同时更新change为current time)
touch -m :仅更新modify time(同时更新change为current time)
2.find根据修改时间查找文件
一天以内,被访问access过的文件 一天以内,内容变化的文件 恰好在七天内被访问过的文件
find . -atime -1 find . -mtime -1 find / -maxdepth 3 -type f -atime 7
时间说明:-1 一天以内 1 恰好一天 +1 超过一天
find反向查找
find . -maxdepth 1 -type d #在当前目录下 查找最大深度为1 文件夹类型的数据
find . -maxdepth 1 ! -type d #加上感叹号,后面接条件,代表取除了文件夹以外类型
根据权限查找
find . -maxdepth 2 -perm 755 -type f #寻找权限类型是755 的文件
按照文件大小查
find . -maxdepth 2 -size +10M #寻找超过10M大小的文件
查找文件时忽略目录
find .-path "./conf.d" -prune -o -name "*.conf" -print
根据用户组匹配
使用-exec或是-ok再次处理 -ok比-exec更安全,存在用户提示确认 【】
# 找出以.txt结尾的文件后执行删除动作且确认
find /opt/luffy_boy -type f -name "*.txt" -ok rm {} \ ;
备注
-exec跟着shell命令,结尾必须以;分号结束,考虑系统差异,加上转义符\;
{}作用是替代find查阅到的结果 {}前后的有空格
#找到目录中所有.txt 文件,且将查询结果写入到all.txt文件中
find ./mydj2/ -type f - name "*.txt" -exec cat {} \; > all.txt
#把30天以前的日志,移到old文件夹中
find . -type f -mtime +30 -name "*.log" -exec cp {} old \ ;
【xargs命令 】
xargs 又称管道命令,构造参数等
是给命令传达参数的一个过滤器,也是组合多个命令的一个工具,它吧一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理
简单来说就是 把其他命令给他的数据,传递给它后面的命令作为参数
-d 为输入指定一个定制的分隔符,默认是空格
-i 用{}代替传递的数据
-I string用string来代替传递的数据-n[数字]设置每次传递几行数据
-n 选项限制单个命令行的参数个数
-t 显示执行详情
-p 交互模式
-P n 允许的最大线程数量为n
-s[大小]设置传递参数的最大字节数(小于131072字节)
-x[大小]设置的最大长度结束 xargs命令执行
-0,--null项用null分割,而不是空白,禁用引号和反斜杠处理
案例:
把多行输入变单行 xargs < mjj,xtx
-n参数限制没行输出个数 xargs -n [+个数] < mjj.txt #每行最多输出三个
自定义分割符 -d参数
echo "alex ,alex,alex,alex,alex," | xargs -d ","
alex alex alex alex alex
#定义分隔符后,限制每行参数个数
echo "alex,alex,alex,alex,alex," |xargs -d "," -n [+个数]
alex alex
alex alex
alex
-i参数的用法,用{}替换传递的数据
-I 参数用法,用string代替数字
#找到当前目录所有的.txt文件,然后拷贝到其他目录下
find . -name "*.txt" | xargs -i cp {} heihei/
find . -name "*.txt" | xargs -I data cp data heihei/
#找到当前目录所有的txt文件,然后删除
find . -name "*.txt" |xargs -i rm -rf{}
利用反斜杆转义空格,创建携带空格的文件
文件类型属性介绍
可以通过ls -F给文件结尾加上特殊标识
格式 类型
ls -l 看第一个字符
- 普通文件regular file (二进制,图片,日志,txt等)
d 文件夹类型directory
b 块设备文件,/dev/sda1,硬盘,光驱
c 设备文件,终端/dev/tty1,网络串口文件
s 套接字文件,进程间通信(socket)文件
p 管道文件pipe
l 连接文件;link类型,快捷方式 (ln命令创建)
file命令 显示文件的类型
which命令 查找PATH环境变量中的文件,Linux内置命令不在path中 如:which python
whereis命令用来定位指令的二进制程序,源代码文件和man手册页等相关文件的路径
【tar 命令】 (在Linux系统里,可以实现对多个文件进行,压缩,打包,解包)
tar 参数 你要压缩的文件名 你要压缩什么内容
语法: tar(选项)(参数)
-A 或 --catenate:新增文件到已存在的备份文件
-B 设置区块大小;
-c 或 --create:建立新的备份文件;
-C <目录>:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项【】
-d 记录文件的差别;
-x 或--extract或get;从备份文件中还原文件;
-t 或--list:列出备份文件的内容
-z 或者--gzip或--ungzip:通过gzip指令处理备份文件
-Z 或者--compress或--uncompress,通过compress指令处理备份文件
-f <备份文件>或--file=<备份文件>:指定备份文件;注意 f 必须放最后 【】
-v 或--verbose:显示指令执行过程
-r 添加文件到已经压缩的文件
-u 添加改变了和现有的文件到已经存在的压缩文件
-j 支持bzip2解压文件
-l 文件系统边界设置
-k 保留原有文件不覆盖
-m 保留文件不被覆盖
-w 确认压缩文件的正确性
-p或--same-permissions;用原来的文件权限还原文件
-P或--absolute-names:文件名使用绝对名称,不移除文件名称前的“/”;不建议使用
-N<日期格式> 或--newer=<日期时间>;只将较指定日期更新的文件保存到备份文件里
--exclude=<范本样式>:排除符合范本样式的文件
-h --dereference 跟踪符号链接,将它们所指向的文件档并输出
案例:
仅打包,不压缩
#tar 参数 包裹文件名 需要打包的文件
tar -cvf alltmp.tar ./*
打包后且用gzip命令压缩,节省磁盘空间
tar -zcvf alltmp.tar ./*
【注】
*f参数必须写在最后,后面紧跟压缩文件名
*tar命令仅打包,习惯用。tar作为后缀
*tar命令加上z参数,文件以。tar.gz表示
列出tar包内的文件
#根据tar包文件后缀,决定是否添加z参数,调用gzip
tar -ztvf alltmp2.tar.gz
拆开tar包
tar -xf alltmp.tar
拆开tar压缩包
tar -zxvf ../alltmp2.tar.gz ./
拆除tar包中部分文件
#正常解压命令,单独加上你要拆除的文件名,指定路径
#先看下tar包中有什么内容,再指定文件解压
tar -ztcf ../alltmp2.tar.gz
tar -zxvf ../alltmp2.tar.gz ./alltmp.tar ./kaixin
指定目录解tar包
#注意--exclude 跟着文件名或是文件夹,不得加斜杠,排除多个文件夹,就写多个--exclude
tar -zxvf ../alltmp2.tar.gz --exclude date
打包链接文件
-h 参数能够保证,打包的不仅仅是个快捷方式,而是找到源文件 tar -hzcf test_link2 ./h.txt
打包/etc下所有普通文件 【 ????????】
tar -zcvf etc.tar.tgz ~find /etc -type f~
tar-tzvf etc.tgz
【gzip】
gzip (选项)(参数)
-a或--ascii:使用ASCII文字模式
-c或--stdout或--to-stoudt 把解压后的文件输出到标准输出设备
-d或--decompress或uncompress;解开压缩文件
-f或--force:强行压缩文件,不理会文件名或硬连接是否存在以及该文件是否为符号连接
-h 在线帮助
-l或--list;列出压缩文件的相关信息
-L或--license:列出版本与版权信息
-n或--name:压缩文件时,不保存原来的文件名称及时间戳记
-N或--name:压缩文件时,保存原来的文件名称及时间戳记
-q或--quiet,不显示警告信息;
-r或--recursive;递归处理,将指定目录下的所有文件及子目录一并处理
-s或<压缩字尾字符串>或----suffix<压缩字尾字符串>;更改压缩字尾字符串
-t或--test;测试压缩文件是否正确无误
-v或--verbose显示指令执行过程
-V或--version;显示版本信息
-<压缩效率>:压缩效率是 一个介于1-9 的数值,预设值为6,指定越大的数值压缩效率就会越高
--best:此参数的效果和指定“-9”的参数相同
--fast:此参数的效果和指定“-1”参数相同
案例:
#zip无法压缩文件夹,必须先tar对文件夹打包后,才可以gzip压缩
gzip *. html #gzip 压缩,解压都会删除源文件
列出压缩文件中的信息
gzip -1 *.gz #不解压缩显示压缩文件内信息,以及压缩率
解压缩且显示过程
gzip -dv *.gz
压缩保留源文件
#-c参数
gzip -c alltmp.tar > alltmp.tar.gz
gzip 套件提供了许多方便的工具命令,可以直接操作压缩文件内容
*zcat ,直接读取压缩文件内容
*zgrep
*zless
*zdiff
【zip命令】
zip命令是一个应用广泛的跨平台压缩工具,压缩文件的后缀为zip文件,还可以压缩文件夹
语法:
zip 压缩文件名 要压缩的内容
-A 自动解压文件
-c 给压缩文件加注释
-d 删除文件夹
-f 修复损坏文件
-k 兼容DOS
-m 压缩完毕后,删除源文件
-q 运行时不显示信息处理信息
-r 处理指定目录和指定目录下的使用子目录
-v 显示信息的处理信息
-x "文件列表"压缩时排除文件列表中指定的文件
-y 保留符号链接
-b<目录>指定压缩到的目录
-i<格式>匹配格式进行压缩
-L 显示版权信息
-t<日期>指定压缩文件的日期
-<压缩率>指定压缩率
案例:
#压缩当期目录下所有内容为alltmp.zip文件
zip alltmp.zip ./*
压缩多个文件夹
zip -r data.zip ./data ./data2
【unzip命令用于解压】
参数
-1:显示压缩文件内所包含的文件
-d<目录>指定文件解压缩后要储存的目录
案例:
#查看压缩文件内容
unzip -1 data.zip
解压缩文件内容
unzip date .zip
【date命令】
date命令用于显示当前系统时间,或者修改系统时间
语法: date 参数 时间格式
参数
-d,--date=STRING
显示有STRING指定的时间,而不是当前时间
-s --set=STRING 根据string设置时间
-u.--utc,--universal 显示或设置全球时间(格林威治时间)
时间格式 ???
shred命令
用法:shred[选项]...文件...
多次覆盖文件,使得即使是昂贵的硬件探测仪器也难以将数据复原
-u ,--remove 覆盖后截断并删除文件
shred heihei.txt 随机覆盖文件内容,不删除源文件
案例:
彻底粉碎且删除文件
shred -u heihei.txt