文章目录
- Linux命令语法
- 核心命令ls和cd
- mkdir
- touch
- CP命令
- MV命令
- 帮助文档
- Linux开关机命令
- Linux命令行常用快捷键
- Linux环境变量
- vim
- 重定向符号
- Cat命令
- TAC命令
- 管道符
- grep命令
- more 命令和less命令
- head命令和tail命令
- wc命令
- TR命令
- Find命令
- xargs命令
- FIle命令
- tar命令
由于我在学习Linux命令的时候一直想找篇既有命令表格又有执行截图的文章找不到,无奈只能自己写了,参照B站视频P22到P43 点击查看视频
Linux命令语法
命令 | 空格 | 参数(可写不写) | 空格 | 文件,文件夹(可写可不写) |
---|---|---|---|---|
ls列出文件夹中所有内容 | /opt 根目录下的opt文件夹 | |||
ls | -a all显示出所有文件以及隐藏文件夹 | /opt | ||
ls | -a | 如果不写则输出一个点,当前文件夹的内容 |
命令 | 作用 |
---|---|
whoami | 当前用户名 |
hostname | 主机名 |
pwd | 打印当前文件绝对路径 |
命令运行截图
Linux系统常用文件夹的作用
核心命令ls和cd
cd
几个特殊的目录
符号 | 含义 |
---|---|
. | 当前的工作目录 |
. . | 上一级目录 |
- | 上一次的工作目录 |
~ | 当前系统登录 |
. 当前的工作目录
. . 上一级的工作目录
- 上一次的工作目录
- - 当前系统登录的用户家目录
ls命令
list 列出文件内容
ls语法
ls可选参数 可选文件对象
-a all的意思,显示出所有文件内容,以及隐藏的
-l 详细的输出文件夹中内容
-h 以人类可阅读的格式,输出文件大小
- -full- -time 以完整时间格式输出
-t 根据最后修改的时间排序文件
-F 在不同的文件结尾,输出不同的特殊符号,
以/结尾的就是文件夹
以*结尾的就是可执行文件
以@结尾的文件就是软链接,快捷方式
普通文件类型,结尾什么都没有
-d 显示文件夹本身内容,不输出其中的内容
-r reverse 逆转排序
-S 根据文件大小排序默认从大到小
-i 显示出文件的inode信息(文件的身份证号,存储了文件的元信息,文件的大小,位置,权限等等)
注意,以下指令有部分因为拼接后运行出来更加直观,所以很多都有多个参数,请自行辨别
ls,ls -a和ls -l的运行截图
ls -lh的运行截图
因为-h参数必须是显示详细文件内容的界面才能使用,所以使用组合参数-lh
ls -lh --full-time
ls -lh --full-time -t
ls -lF
ls -d
ls -li
mkdir
mkdir 文件名 创建文件夹
mkdir {文件1,文件2,文件3} 创建多个文件夹
mkdir -p 一连串的文件名比如./test/class/student 强行在指定目录下创建文件夹,如果路径不存在则自动创建路径所需文件夹,官方用于递归创建文件夹
mkdir testcui{1…100} 创建testcui1到testcui100的文件夹
touch
1.创建普通文件,在linux下文件的后缀名仅仅是一个名字而已,通过touch创建的都是普通文件
2.修改文件时间为当前时间
-c --no-create 不创建任何文件
-t STAMP 使用[[CC]YY]MMDDhhmm[.ss]格式代替当前的时间
-r --reference=文件 使用指定文件的时间属性代替当前文件时间
CP命令
用法: c
cp选项]… [-T] 源文件 目标文件
或: cp [选项]… 源文件… 目录
或: cp [选项]… -t 目录 源文件…
将源文件复制至目标文件,或将多个源文件复制至目标目录。
-r 递归式复制目录,即复制目录下的所有层级的子目录及文件-p复制的时候保持属性不变
-d 复制的时候保持软连接(快捷方式)
-a 等于-pdr
-p 等于–preserve=模式,所有权,时间戳,复制文件时保持源文件的权限、时间属性
-i, – interactive 覆盖前询问提示;
cp 需要拷贝的文件名 新的文件名
复制文件放入其他文件夹中但是不改名
复制多个文件到其他文件夹
只需要将文件名用空格隔开即可
cp test1 test2 …/test98
复制整个文件夹
想要复制整个文件夹必须加上-r参数
cp -r test100 test101
拷贝之后的文件和原文件属性相同
cp -p test1 testplusplus
拷贝软链接
拷贝软链接时候,保持连接属性不变 -d参数
CP -d link_luffy link_ luffy3
拷贝时发生覆盖
用 -i参数,会在顾盖前进行提示,输入y表示确认
MV命令
MV案例
RM
rm命令就是remove的含义,删除一个或者多 个文件,这是Linux系统重要命令
-f,–force 强制删除。忽略不存在的文件,不提示确认
-i 在删除前需要确认
-I 在删除超过三个文件或者递归删除前要求确认。
-d, --dir 删除空目录
-r,-R,–recursive 递归删除目录及其内容
-V,–verbose 详细显示进行的步骤
– help 显示此帮助信息并退出
–version 显示版本信息并退出
案例
1.删除普通文件,就是默认添加了-i参数,询问是否删除
rm chaoge.txt ,删除前会提问,是否要删除
2.一次性删除多个文件
rm chaoge. txt.2 chaoge. txt.3 #删除多个文件,写入多个名字,空格分割就好
3.删除文件夹,必须给rm添加-r参数才行,默认rm只能删除文件类型
rm -r mjj #删除mjj文件夹, 以及里面的内容
4.-d参数,只能用于删除空文件夹
rm -d ilovelinux/
5.强制删除文件,且不提示
rm -f mjj* #强制删除以mj j开头的文件,文件夹无法删除
6.强制删除所有的文件和文件夹
rm -rf -/*
7. -v参数,显示删除的过程
[root@luffycity opt]# rm -rfv ./* #强制性删除当前目录所有内容,且显示过程
帮助文档
man+命令
命令 --help
Linux开关机命令
shutdown 重启
语法: shutdown -r参数 -r -reboot Reboot the machine
shutdown -r 10 # 十分钟后重启
shutdown -r 0 #立即重启
shutdown -r now # 立即重启
reboot 立即重启
关机
语法: shutdown -h --halt 停止的含义
shutdown -h 10 # 十分钟之后关机
shutdown -h 0 # 立即关机
shutdown -h now # 立即关机
Linux命令行常用快捷键
ctrl + c cancel取消当前操作
ctrl + l 清空屏幕内容
ctrl + d 退出当前用户
ctrl + a 光标移动到行首
ctrl + e 移动到行尾
ctrl + u 删除光标到行首的内容
Linux环境变量
echo $PATH 显示lInux系统环境变量所在文件夹
vim
安装vim用 yum install vim -y # 通过yum软件管理工具,安装命令vim,且默认是yes
当vim打开不存在的文件的时候,默认会创建文件
#语法是
vim 文件名 # 打开文件
2.输入字母i,进入编辑模式,代表insert输入字母o,在光标下一行开始编辑
3.写完代码之后,按下esc,退出编辑模式
4.此时输入冒号,进入底线命令模式,然后输入
: wq!强制写入文件内容且退出vim, write quit !强制性的:q!不保存直接退出
5.注意输入的冒号得是英文输入法的状态
vim提供的上下左右
h 向左
j 向下
k 向上
l 向右
移动光标的快捷键
w 移动到下一个单词
b 移动到上一个单词
数字0移动到行首
字符$移动到行尾
按下g 移动到文章开头
按下G 移动到文章结尾
按下 H 移动到屏幕的开头
按下L 移动到屏幕的结尾
按下 M 移动到屏幕的中间
命令模式的查找
向下查找 / 你要找的内容 按n寻找下一个单词
向上查找 ? 你要找的内容,按n寻找下一个单词
命令行模式下的复制,黏贴和删除
输入yy 复制光标所在行
输入 3yy复制三行内容
输入p 打印粘贴的内容
输入dd 删除光标当前行
输入D 删除光标当前位置到行尾的内容
输入x 删除光标当前字符,包括当前字符,向后删除
输入X 删除光标前的字符不包括当前字符,向前删除
输入u 取消上一步的动作
快捷操作
输入大写C 删除光标所在位置,到行尾的内容,且进入编辑模式
输入o 在当前光标的下一行开始编辑
输入大写的O 在光标的上一行开始编辑
输入A 快速进入行尾,且进入编辑模式
输入ZZ 快速保存退出
批量快捷操作
快捷删除:
1.输入ctrl +v进入可视块模式
2.用上下左右命令选择,选择你想操作的块,
3.选中块后,输入d 删除块内容
快捷插入多行
1.选中块后,输入大写的I,进行写代码,
2.按下ESC两次,会自动生成多行代码
重定向符号
符号 | 解释 |
---|---|
重定向的意思是,将数据传到其他地方 | |
> | 输出覆盖重定向 |
>> | 输出追加重定向 |
<或<< | 标准输入重定向 |
案例
1.读取文件内容,且写入到另一个文件中,覆盖写入文件内容
cat douyin.txt > kuaishou.txt
2.追加写入文件内容
cat douyin.txt >> kuaishou.txt
3. 重定向写入符
cat douyin.txt #把文件中的数据发送给cat去读取
4. 将文本内容拆分成多行
xargs命令
xargs -n 4 < shuzi.txt # 将内容以每行四个的方式显示
5. 重定向追加写入符 <<
可以结合cat命令使用
cat >> gushi.txt << EOF
Cat命令
功能 | 说明 |
---|---|
查看文件内容 | cat file.txt |
多个文件合并 | cat file.txt file2.txt >file3.txt |
非交互式编辑或追加内容 | cat >>file.txt << EOF 欢迎来到路飞学城 EOF |
清空文件内容 | cat/dev/null > file.txt [/dev/null是linux系统的黑洞文件 |
用法: cat[选项][文件]...
将[文件]或标准输入组合输出到标准输出。
清空文件内容,慎用
>文件名
一A, --show-all 等价于-vET
-b, --number-nonblank 对非空输出行编号
-e 等价于-vE
-E, --show-ends 在每行结束处显示$
-n, --number 对输出的所有行编号
-s, --squeeze-blank 不输出多行空行
-t 与-vT等价
-T, --show-tabs 将跳格字符显示为^I
-u (被忽略)
-v, --show-nonprinting 使用^和M-引用,除了LFD 和 TAB之外--help显示此帮助信息并退出
--version 输出版本信息并退出
如果[文件]缺省,或者[文件]为-,则读取标准输入。
案例
1.查看文本内容,以及功能参数
cat gushi.txt
2.对非空行进行编号
cat -b gushi.txt
3.对所有行显示行号
cat -n gushi.txt
4.对每行结尾处加上$符号
cat -n -E gushi.txt
5. 不输出多行空行
cat -s gushi.txt
\前后对比可以明显看出只输出一个空行
6.合并文件内荣写到新的文件中
cat douyin.txt gush
i.txt > ./抖音和古诗的文本内容.txt
下图为两个文件的内容
下图为合并过程及其结果
7.非交互式写入
cat >> 路飞.txt << EOF
8.cat直接清空文件的方法
1.直接清空文件,但是留下了一个空行
echo > gushi.txt
2. 直接清空,不留下任何东西
> gushi.txt
3.利用cat读取一个黑洞文件,然后清空其他文本
cat /dev/null > douyin2.txt
TAC命令
与cat命令查看文件结果相反
管道符
管道符语法
对字符串命令进行过滤
grep命令
过滤字符串命令
more 命令和less命令
分屏查看文本内容的命令
more 文件名 #分屏显示文件内容
enter回车 是下一行
空格 是向下滚动一个屏大小
= 显示当前行号
q 是退出more
head命令和tail命令
head
head 命令用于查看文件开头的n行
语法
head -5 文件名
head 文件名 # head默认显示10行
-c 参数,指定字符数量,显示字符数
head -c 5 文件名 # 输出整个文件中的五个字符
tail
tail默认从后向前看10行,也可以指定行数
语法
tail 文件名 # 显示默认后10行
tail -2 # 显示后两行
-f 实时刷新文件内容变化
wc命令
统计文件的行
- vim(set nu)
- cat -n
- wc -l
1.wc命令,统计文件内有多少行,有一个回车,是一个空行
[root@localhost opt]# wc -l doupo.txt
32 doupo.txt
[root@localhost opt]# ll
2. wc -w 统计文件内的单词数
[root@localhost opt]# wc -w hehe.txt
9 hehe.txt
[root@localhost opt]#
[root@localhost opt]#
[root@localhost opt]# vim hehe.txt
[root@localhost opt]#
[root@localhost opt]# cat hehe.txt
yu chao 王秉诚 王仁刚 赵阳阳
yejingyang
chenliangliang
李 文杰 刘永飞 张鑫
[root@localhost opt]#
[root@localhost opt]# wc -w hehe.txt
11 hehe.txt
TR命令
使用语法及参数说明
1、使用语法
用法:tr [OPTION]… SET1 [SET2]
用法:tr [参数选项] 字符集1 [字符集2]
字符集1:指定要转换或删除的原字符集。当执行转换操作时,必须使用参数“字符集2”指定转换的目标字符集。但执行删除操作时,不需要参数“字符集2”;
字符集2:指定要转换成的目标字符集。
2、参数说明
-c, --complement:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换
-d, --delete:删除指令字符
-s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符
-t, --truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等
–help:显示程序用法信息
–version:显示程序本身的版本信息
3、字符集合
\NNN 八进制值的字符 NNN (1 to 3 为八进制值的字符)
\ 反斜杠
\a Ctrl-G 铃声
\b Ctrl-H 退格符
\f Ctrl-L 走行换页
\n Ctrl-J 新行
\r Ctrl-M 回车
\t Ctrl-I tab键
\v Ctrl-X 水平制表符
CHAR1-CHAR2 :字符范围从 CHAR1 到 CHAR2 的指定,范围的指定以 ASCII 码的次序为基础,只能由小到大,不能由大到小。
[CHAR*] :这是 SET2 专用的设定,功能是重复指定的字符到与 SET1 相同长度为止
[CHAR*REPEAT] :这也是 SET2 专用的设定,功能是重复指定的字符到设定的 REPEAT 次数为止(REPEAT 的数字采 8 进位制计算,以 0 为开始)
[:alnum:] :所有字母字符与数字
[:alpha:] :所有字母字符
[:blank:] :所有水平空格
[:cntrl:] :所有控制字符
[:digit:] :所有数字
[:graph:] :所有可打印的字符(不包含空格符)
[:lower:] :所有小写字母
[:print:] :所有可打印的字符(包含空格符)
[:punct:] :所有标点字符
[:space:] :所有水平与垂直空格符
[:upper:] :所有大写字母
[:xdigit:] :所有 16 进位制的数字
[=CHAR=] :所有符合指定的字符(等号里的 CHAR,代表你可自订的字符)
实例
1.将文件file中出现的”abc”替换为”xyz”
cat file | tr “abc” “xyz” > new_file
【注意】这里,凡是在file中出现的”a”字母,都替换成”x”字母,”b”字母替换为”y”字母,”c”字母替换为”z”字母。而不是将字符串”abc”替换为字符串”xyz”。
2、使用tr命令“统一”字母大小写(小写 –> 大写)
cat file | tr [a-z] [A-Z] > new_file
(大写 –> 小写) cat file | tr [A-Z] [a-z] > new_file
3、把文件中的数字0-9替换为a-j
cat file | tr [0-9] [a-j] > new_file
4、删除文件file中出现的”Snail”字符
cat file | tr -d “Snail” > new_file
【注意】这里,凡是在file文件中出现的’S’,’n’,’a’,’i’,’l’字符都会被删除!而不是紧紧删除出现的”Snail”字符串。
5、删除文件file中出现的换行’\n’、制表’\t’字符
cat file | tr -d “\n\t” > new_file
不可见字符都得用转义字符来表示的,这个都是统一的。
6、删除“连续着的”重复字母,只保留第一个
cat file | tr -s [a-zA-Z] > new_file
7、删除空行
cat file | tr -s “\n” > new_file
8、删除Windows文件“造成”的’^M’字符
cat file | tr -d “\r” > new_file
或者 cat file | tr -s “\r” “\n” > new_file
【注意】这里-s后面是两个参数”\r”和”\n”,用后者替换前者
9、用空格符\040替换制表符\011
cat file | tr -s “\011” “\040” > new_file
10、把路径变量中的冒号”:”,替换成换行符”\n”
echo $PATH | tr -s “:” “\n”
Find命令
此章内容转自https://blog.csdn.net/zhangshaohuas/article/details/109009600
1.find命令作用
find命令用来在指定目录下查找文件。
2. find命令选项基本格式
find 目录 -选项 动作[-print -exec -ok …]
3. 常用选项:
-a:and 必须满足两个条件才显示
-o:or 只要满足一个条件就显示
-name:按照文件名查找文件
-iname:按照文件名查找文件(忽略大小写)
-type:根据文件类型进行搜索
-perm:按照文件权限来查找文件
-user 按照文件属主来查找文件。
-group 按照文件所属的组来查找文件。
-fprint 文件名:将匹配的文件输出到文件。
-newer file1 ! newer file2 查找更改时间比文件file1新但比文件file2旧的文件
4. 常用动作:
-print 默认动作,将匹配的文件输出到标准输出
-exec 对匹配的文件执行该参数所给出的命令。相应命令的形式为 'command' { } \;,注意{ }和\;之间的空格。
-ok 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
-delete 将匹配到的文件删除
5. 根据文件名进行匹配
5.1 列出当前目录及子目录下所有文件和文件夹
[root@host-134 ~]# find .
.
./.bash_logout
./.bash_profile
./.bashrc
./.cshrc
./.tcshrc
./anaconda-ks.cfg
./.bash_history
./.mysql_history
./zuoye
./zuoye/lnmp.sh
./zuoye/system.sh
./nginx-1.18.0
./nginx-1.18.0/auto
./nginx-1.18.0/auto/cc
./nginx-1.18.0/auto/cc/acc
./nginx-1.18.0/auto/cc/bcc
5.2 在/home目录下查找以.txt结尾的文件名
find /home/ -name "*.txt"
5.3 同上,但忽略大小写
find /home -iname "*.txt"
5.4 查找 /home/ 下所有以.txt或.pdf结尾的文件
find /home/ -name "*.txt" -o -name "*.pdf"
5.5 查找 /home/ 下所有以a开头和以.txt结尾的文件
find /home/ -name "*.txt" -a -name "a*"
5.6 搜索/home目录下txt结尾的文件,并将输出到指定文件中(re.txt)
[root@localhost home]# find /home/ -type f -name "*.txt" -fprint /tmp/re.txt
[root@localhost home]# cat /tmp/re.txt
/home/a.txt
/home/b.txt
6. 根据文件类型进行搜索
type 类型参数
类型参数列
f 普通文件
l 符号连接(软连接)
d 目录
b 块设备
s 套接字
6.1
[root@host-136 ~]# find /home/ -type f
/home/frank/.bash_logout
/home/frank/.bash_profile
/home/frank/.bashrc
6.2
[root@host-136 ~]# find /usr/bin/ -type l
/usr/bin/bashbug
/usr/bin/lastb
/usr/bin/sh
/usr/bin/geqn
/usr/bin/ex
/usr/bin/lz4cat
/usr/bin/gneqn
/usr/bin/gnroff
6.3
[root@host-136 ~]# find /usr/local/ -type d
/usr/local/
/usr/local/bin
/usr/local/etc
/usr/local/games
/usr/local/include
/usr/local/lib
/usr/local/lib64
/usr/local/libexec
/usr/local/sbin
6.4
[root@host-134 ~]# find /dev/ -type b
/dev/dm-1
/dev/dm-0
/dev/sda2
/dev/sda1
/dev/sda
/dev/sr0
6.6
[root@localhost home]# find /var/lib/ -type s
/var/lib/mysql/mysql.sock
7. 基于目录深度搜索
7.1 向下最大深度限制为3
[root@host-136 ~]# find /usr/local/ -maxdepth 3 -type d
/usr/local/
/usr/local/bin
/usr/local/etc
/usr/local/games
/usr/local/include
/usr/local/lib
/usr/local/lib64
/usr/local/libexec
/usr/local/sbin
/usr/local/share
/usr/local/share/applications
/usr/local/share/info
/usr/local/share/man
/usr/local/share/man/man1
/usr/local/share/man/man1x
7.2 搜索出深度距离当前目录至少2个子目录的所有文件
[root@host-136 ~]# find /usr/local/ -mindepth 2 -type f
/usr/local/sbin/mail.py
8. 根据文件时间戳进行搜索
8.1 UNIX/Linux文件系统每个文件都有三种时间戳:
访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。
修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间
变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。
8.2 stat 命令查看:
[root@host-136 ~]# stat /etc/passwd
File: ‘/etc/passwd’
Size: 950 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 33818061 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:passwd_file_t:s0
Access: 2021-01-06 09:17:36.122732027 +0800
Modify: 2021-01-06 09:17:36.114732083 +0800
Change: 2021-01-06 09:17:36.115732076 +0800
Birth: -
8.3 搜索最近七天内被访问过的所有文件
[root@host-136 ~]# find /etc/ -type f -atime -7
/etc/fstab
/etc/crypttab
/etc/resolv.conf
/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
/etc/pki/ca-trust/ca-legacy.conf
/etc/pki/ca-trust/extracted/java/cacerts
/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
/etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem
/etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem
8.4 搜索超过七天内(7天外)被访问过的所有文件
[root@host-136 ~]# find /etc -type f -atime +7
/etc/sasl2/smtpd.conf
/etc/ethertypes
/etc/makedumpfile.conf.sample
/etc/postfix/access
/etc/postfix/canonical
/etc/postfix/generic
/etc/postfix/header_checks
/etc/postfix/relocated
/etc/postfix/transport
/etc/postfix/virtual
9. 根据文件大小进行匹配
用法
find . -type f -size 文件大小单元
1
文件大小单元:
b —— 块(512字节)
c —— 字节
w —— 字(2字节)
k —— 千字节
M —— 兆字节
G —— 吉字节
搜索大于10KB的文件
[root@host-136 ~]# find /etc/ -type f -size +10k
/etc/ssh/moduli
/etc/postfix/access
/etc/postfix/canonical
/etc/postfix/header_checks
/etc/postfix/main.cf
/etc/postfix/transport
/etc/postfix/virtual
搜索小于10KB的文件
[root@host-136 ~]# find /etc/ -type f -size -10k
/etc/man_db.conf
/etc/sudo-ldap.conf
/etc/sudo.conf
/etc/sudoers
/etc/e2fsck.conf
/etc/mke2fs.conf
/etc/vconsole.conf
/etc/locale.conf
搜索等于10KB的文件
[root@host-136 ~]# find /etc/ -type f -size 10k
/etc/dbus-1/system.d/org.freedesktop.systemd1.conf
/etc/dbus-1/system.d/org.freedesktop.NetworkManager.conf
/etc/selinux/targeted/active/modules/100/accountsd/hll
/etc/selinux/targeted/active/modules/100/acct/hll
/etc/selinux/targeted/active/modules/100/aiccu/hll
/etc/selinux/targeted/active/modules/100/alsa/hll
/etc/selinux/targeted/active/modules/100/arpwatch/hll
搜索大于10G的日志文件,并删除
[root@host-136 ~]# find /var/log -type f -name "*.log" -size +10G -delete
10. 根据文件权限/所有权进行匹配
指定目录下搜索出权限为644的文件
[root@host-136 ~]# find / -type f -perm 644
/usr/libexec/sudo/libsudo_util.so.0.0.0
/usr/libexec/sudo/sudo_noexec.so
/usr/libexec/sudo/sudoers.so
/usr/libexec/sudo/system_group.so
找出指定目录下权限不是644的txt文件
[root@host-136 ~]# find / -type f -name "*.txt" ! -perm 644
/usr/lib/firmware/ivtv-firmware-license-end-user.txt
/usr/lib/firmware/ivtv-firmware-license-oemihvisv.txt
/usr/share/licenses/shadow-utils-4.6/gpl-2.0.txt
/usr/share/licenses/shadow-utils-4.6/shadow-bsd.txt
找出/home目录用户frank拥有的所有文件
[root@host-136 ~]# find /home/ -type f -user frank
/home/frank/.bash_logout
/home/frank/.bash_profile
/home/frank/.bashrc
找出/home目录用户组frank拥有的所有文件
[root@host-136 ~]# find /home/ -type f -group frank
/home/frank/.bash_logout
/home/frank/.bash_profile
/home/frank/.bashrc
11. 借助-exec选项与其他命令结合使用
找出/tmp目录下所有root的文件,并把所有权更改为用户frank
find /tmp/ -type f -user root -exec chown frank {} \;
使用占位符{}来表示find到的文件名
找出家目录下所有的.sh文件并删除
[root@localhost home]# find $HOME -name "*.sh" -ok rm {} \;
< rm ... /root/install_lnmp.sh > ? y
-ok和-exec行为一样,不过它会给出提示,是否执行相应的操作。
查找/home目录下所有.txt文件并把他们拼接到all.txt文件中
find /home/ -type f -name "*.txt" -exec cat {} \;>all.txt
查找/home目录下所有.txt文件并把他们复制到/opt/backup文件中
find /home/ -type f -name "*.txt" -exec cp {} /opt/backup/ \;
在/var/log目录中查找更改时间在5日以前的文件并删除它们:
find /var/log -type f -mtime +5 -exec rm {} \;
xargs命令
xargs又称管道命令,构造参数等。
是给命令传递参数的一个过滤器,也
是组合多个命令的一个工具它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。
简单的说就是把其他命令的给它的数据,传递给它后面的命令作为参数
-d 为输入指定一个定制的分割符,默认分隔符是空格-i用代替传递的数据
-I string 用string来代替传递的数据-n[数字]设置每次传递几行数据-n选项限制单个命令行的参数个数
-t 显示执行详情
-p 交互模式
-Pn 允许的最大线程数量为n
-s[大小]设置传递参数的最大字节数(小于131072字节)-x大于-S设置的最大长度结束xargs命令执行
-0,--null项用null分隔,而不是空白,禁用引号和反斜杠处理
FIle命令
通过file指令,我们得以辨识该文件的类型。
显示文件类型
file install.log
install.log: UTF-8 Unicode text
file -b install.log <== 不显示文件名称
UTF-8 Unicode text
file -i install.log <== 显示MIME类别。
install.log: text/plain; charset=utf-8
显示符号链接的文件类型
ls -l /var/mail
lrwxrwxrwx 1 root root 10 08-13 00:11 /var/mail -> spool/mail
file /var/mail
/var/mail: symbolic link to `spool/mail’
tar命令
语法:tar(选项) (参数)
-A, --catenate, --concatenate
新增文件到已存在的存档
-c,--create
建立新的存档
-C, --directory=DIR
将 tar 的工作目录从当前目录改为指定目录。该选项对顺序敏感,即影响其后的所有选项
-d, --diff, --compare
对比档案与文件系统的差异
--delete
从档案中删除制定的文件
-f, --file=ARCHIVE
指定存档文件
-j, --bzip2
通过 bzip2 命令压缩或解压缩档案
-k, --keep-old-files
还原档案时,保留当前目录下的原有文件不被覆盖
-l, --check-links
如果不是所有链接都被转储,则打印一条消息
-m, --touch
还原文件时,不变更文件的更改时间
-N, --newer, --after-date=DATE
只将较指定日期更新的文件保存到档案中
-O, --to-stdout
将提取的文件名和目录名打印到标准输出
-p, --preserve-permissions, --same-permissions
提取文件时保留文件原来的权限
-P, --absolute-names
创建存档时不移除文件名称前的 / 号
-r, --append
追加文件到档案的末尾
-t, --list
列出档案的内容
-u, --update
添加比档案中文件更新的文件到档案中
-v, --verbose
显示指令执行过程
-W, --verify
向档案写入文件后尝试验证
-x, --extract, --get
从档案提取文件
-z, --gzip, --gunzip, --ungzip
通过 gzip 命令压缩或解压档案
-Z, --compress, --uncompress
通过 compress 指令处理备份文件
--exclude=PATTERN
排除符合指定模式的文件
-?, --help
显示短选项的概要信息并退出
--usage
显示可用选项列表并退出
--version
显示版本和版权信息并退出
样例
常用示例
打包
(1)将目录 /home/stud/wang 打包成 lvlv.tgz,同时使用 gzip 进行压缩。
tar –czvf lvlv.tgz /home/stud/wang
(2)将目录 /home/stud/wang 打包成 lvlv.tbz2,同时使用 bzip2 进行压缩。
tar –cjvf lvlv.tgz2 /home/stud/wang
(3)将指定目录下的目录或文件进行打包。
tar –czvf wang.tar.gz -C /home/stud/ wang
解包
(1)将档案 lvlv.tgz 还原为原目录,同时使用 gzip 进行解压缩。
tar -xzvf lvlv.tgz
(2)将档案 lvlv.tbz2 还原为原目录,同时使用 bzip2 进行解压缩。
tar -xjvf lvlv.tbz2
(3)将 lvlv.tgz 解包到指定目录,同时使用 gzip 进行解压缩。
tar -xzvf lvlv.tgz -C DIR
查看
(1)只查看档案的文件列表,不进行解包。
tar -tzvf wang.tar.gz