ls
参数:
-a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r 将文件以相反次序显示(原定依英文字母次序)
-h 文件大小超过1000字节以k为单位显示或M..为单位显示
-t 将文件依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 若目录下有文件,则以下之文件亦皆依序列出
举例:
#显示ctime时间,并按ctime排序最近的排在最前面。ctime为修改文件属性时间
ls -lct
#显示mtime时间,并按mtime排序最近的排在最前面。mtime为修改文件内容时间
ls -lt
#按文件大小排序显示
ls -lS
touch
创建文件、设置文件的时间(你懂的)
用ls看到的默认是mtime
参数:
-d 同时修改atime和mtime
-a 修改文件读取访问时间(atime)
-m 修改文件修改时间(mtime)
举例:
#修改文件atime和mtime(其余参数也一样)
[root@server7-128 ~]# ll 4444
-rw-r--r-- 1 root root 0 7月 31 16:02 4444
[root@server7-128 ~]# touch -d "20440911" 4444
[root@server7-128 ~]# ll 4444
-rw-r--r-- 1 root root 0 9月 11 2044 4444
stat
查看文件或目录的属性信息如:时间、存储信息等
ctime :表示最近修改文件属性的时间(修改权限,访问文件,修改文件内容都会发生变化)
mtime :表示最近修改文件内容时间
atime :表示最近访问文件的时间
效果:
[root@server7-128 ~]# cat stat.txt
File: ‘4444’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 25247053 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2044-09-11 00:00:00.000000000 +0800
Modify: 2044-09-11 00:00:00.000000000 +0800
Change: 2018-08-11 06:11:08.022203649 +0800
Birth: -
****思考:如何偷偷修改文件不被发现是啥时候修改的文件?
同时要能修改c、m、atime时间,只有用 能读 能修改 的命令如:vim 文件名
步骤:
date -s "2000-09-11 00:00:00" #先修改系统的时间
vim 4444 #修改文件属性
结果:
输入:stat 4444
Access: 2000-09-11 00:00:07.601143253 +0800
Modify: 2000-09-11 00:00:07.601143253 +0800
Change: 2000-09-11 00:00:07.608143384 +0800
uniq (主要用于统计重复次数)
重复行数统计 唯一的,独特的,经常和 sort一起使用
参数:
-c:统计每行重复的次数;
-u:只显示没有重复的行;
-d : 只显示重复过的行;
sort (排序显示)
排序 放在比较靠后,必须等待信息处理到,比较整齐的时候。
参数:
-f: 忽略字符大小写;
-n: 以数值大小进行排序 ; 不加 n 默认 按照数字排列方式,排序
-r: 降序排序; 配合:字母排序,数字排序
-u: 移除重复的行,具有相同内容的行只保留一个; ##除此外一般不会对输出信息作出改动
#-R: 随机排序;
-t: 指定排序依据的 分割符,不指定则默认以 “空格” 为分割符
-k: 以第几列为依据。
语法 : sort -t 分隔符 -n 指定以那一列进行数值大小排序
#将 /etc/passwd 的信息, 按照 UID 的大小排序
cat /etc/passwd | sort -t: -k3 -n
## 倒序。
cat /etc/passwd | sort -t: -k3 -n -r
wc
输出信息统计
wc [options] FILE
参数:
-l 统计总共多少行
-w 显示单词数
-c 显示字节数
tr (类似sed)
简易的替换工具 ,tr无法修改源文件,sed可以修改源文件
tr [a-z] [A-Z] /etc/passwd #将小写字母依次替换为大写字母
echo "123456" | tr '135' 'djv' #/将字符串中1替换为d 1->d,3->j,5->v 单个字符对应替换,而不是整体去替换,一定要清楚
df -h | tr '%' ' ' #%替换为空格
df -h | tr -d '%' ##匹配到的%字符,删除。
ifconfig 与 ip a 、ifup 、ifdown
#开启ens33网卡
ifup ens33
#关闭ens33网卡
ifdown ens33
#显示当前开启的网卡信息(仅显示开启的网卡)
ifconfig
#显示ens33网卡信息
ifconfig ens33
#临时设置ens33 IP地址,永久生效需修改/etc/sysconfig/network-scripts/ifcfg-ens33 配置文件 (红帽7版本)
ifconfig ens33 192.168.100.2
#显示所有网卡信息(包含没开启的网卡)
ip a
which
搜索命令文件所在路径 + 命令的别名记录
[root@server1 dir1]# which ls
alias ls='ls --color=auto' #命令的别名记录。
/bin/ls #命令文件所在位置
whereis
命令的帮助文档所在路径 只能针对命令操作。 不能搜索文件/目录
[root@server1 dir1]# whereis ls #查看ls的帮助文件位置
ls: /bin/ls
/usr/share/man/man1p/ls.1p.gz /usr/share/man/man1/ls.1.gz
alias
取别名: 使用自定义字符,代替系统的“某一命令”或者“命令组合”
#查看当前能用的别名
alias
#设置新记录 用ll代替ls -l(临时生效,需永久生效需写在开机自动加载的shell脚本里,比如写在/etc/profile,等等不一一列举)
alias "ll" = "ls -l"
#unalias 删除别名。
unalias ll
locate
文件查找;通过数据库查找,速度比find快
@@注意:新建文件后需用 updatedb 更新数据库,才能查到
##默认数据库文件在/var/lib/mlocate/mlocate.db
#查找家目录下以.sh结尾的文件
locate ~/*.sh
#更新数据库
updatedb
find 与xargs
文件查找,通过遍历实际目录查找,速度慢,耗资源多
find 查找路径 参数 动作 {} \;
{}\;需要对结果引用时才加,不需要可以不加
参数
-name按照文件名查找文件
-inum 指定文件的id(多用于删除特殊文件名文件,通过ls -i得到文件id,然后通过find删除)
-iname按照文件名忽略大小写查找
-a 逻辑参数类似&&
-o 逻辑或 ||
-perm按照文件权限来查找文件
-size按照文件大小来查找
-type按照文件类型来查找
-user|-nouser属主|没有uid
-group|-nogroup属组|没有gid
-mtime+n按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime-n按文件访问时间来查
-ctimen按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-regex正则表达式
.*任意多个字符
[0-9]任意一个数字
动作:
-exec:对匹配的文件执行该参数所给出的shell命令。
-ok:和-exec的作用相同,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
-delete:删除文件
-ls:列出文件
-print:打印
======xargs
多用于将多行转成一行数据用空格分割
参数
-d# :以#号作为分割符(也可用其他符号),默认是以回车做分割多列
-n2 :将分割数据每行输出2列
例如:
echo "a#b#c#d#e#f" | xargs -d# -n2
结果:
a b
c d
e f
=====find与xargs结合用法
#只查找当前目录下(一级目录,不递归查找)所有文件和目录,并且每行输出三个文件或目录
find . -maxdepth 1 -name "*" | xargs -n3
tar
压缩打包
参数:
-c create 产生打包 (必选)
-x 解包
-t 查看tar文件目录
-z 以gzip命令进行压缩
-v 显示打包的详细过程
-f filename 指定打包后的文件名 (必选)
#压缩并打包显示过程 (尽量相对路劲打包)
tar -czvf dir.tzr.gz dir1 #tar 参数 打包文件名 打包的目录
# 解包并显示过程
tar -xzvf dir.tar.gz
history
历史记录
#命令查看记录,就是看的缓存中的命令记录
history
# 清除缓存中的命令历史记录。
history -c
将缓存中记录的最新的命令,立刻追加同步到 .bash_history 文件中。
history -a
#修改历史记录容量
vim /etc/profile 修改里面的 HISTSIZE=1000 变量值即可。
》》原理:登录时自动加载.bash_history文件内容到内存,退出登
录时自动将内存中的历史记录保存到.bash_history文件,如果
用-c立刻清空内存记录,再用-a保存到日志文件里,日志文件里
会没有记录的,可以逃过管理员的检查。后期会写一个用户监控脚
本,让其无法修改日志
dd
#创建一个自定义大小的mp4文件
#if:源,of:目标 bs:块大小 count:块个数
dd if=/dev/zero of=123.mp4 bs=500M count=1
date
时间与日期函数
#设置系统时间(后面接着会讲与硬件时间区别)
date -s "2020-12-02 10:40:23"
#显示年月日
date +%F
结果:2018-08-11
#显示年-月-日 时:分:秒,+号必须写,其余的可以根据自己需要删减
date "+%Y-%m-%d %H:%M:%S"
结果:2018-08-11 16:45:12
#显示5天后时间 (两个都一样效果)
date -d '5days' +%F
date +%F --date='5days'
结果:2018-08-16
#显示5天前时间(两个都一样效果)
date -d '5days ago' +%F
date +%F --date='5days ago'
结果:2018-08-06
#根据以日期为文件名创建文件(``和$()效果一样)
touch `date -d '6days ago' +%F`.date
touch $(date -d '6days ago' +%F).ssssss
结果(ls查看):2018-08-05.date 2018-08-05.ssssss
NTP 时钟服务器
用校准时间
date #软件时钟【系统时钟】(设置系统时钟后需要更新到硬件时钟,
#重启后才会生效)
hwclock #硬件时钟。(系统启动时以硬件时钟更新系统时间)
#安装服务
yum install ntpdate
#以阿里时钟服务器更新系统时钟(也可以直接写服务器ip)
ntpdate ntp1.aliyun.com
#将系统时钟调整为与目前的硬件时钟一致;
hwclock --hctosys
#将硬件时钟调整为与目前的系统时钟一致;
hwclock --systohc