目录
编辑文件
vi/vim编辑器
Ctrl+f 向下翻页
Ctrl+b 向上翻页
G 移动到文件最后一行
gg 移动到文件第一行
N+回车 N 为数字,向下移到到 N 行
/关键字 向下寻找关键字
?关键字 向上寻找关键字
\# 从光标向后查找光标所在关键词
\* 从光标向前查找光标所在关键词
n 向下重复上一次查找操作
N 与 n 相反,反向重复上一次查找操作:n1,n2s/关键字 1/关键字 2/g 从第 n1 与 n2 行之间寻找关键字 1,并将关键字 1 替换为关键字 2
:1,$s/关键字 1/关键字 2/g 从第 1 行到最后一行寻找关键字 1,并将关键字 1 替换为关键字 2
:1,$s/关键字 1/关键字 2/gc 从第 1 行到最后一行寻找关键字 1,将关键字 1 替换为关键字 2 前会提示用
户确认是否替换
dd 删除整行
ndd n 为数字,删除光标所在向下 n 行。
yy 复制光标所在行
nyy n 为数字,复制光标所在向下 n 行
p,P 小 p 将复制的数据在光标下一行粘贴,大 P 将复制的数据在光标上一行粘贴
u 撤消前一个操作
Ctrl+r 重做上一个操作
. 将会重复上一个命令
i:在当前字符的左边插入
I:在当前行首插入
a:在当前字符的右边插入
A:在当前行尾插入
o:在当前行下面插入一个新行
O:在当前行上面插入一个新行
:w 保存数据
:wq 保存退出
:q! 不保存退出
:w 文件名 相当于另存为
paste 命令
- paste file1 file2 合并两个文件或两栏的内容
- paste -d ‘+’ file1 file2 合并两个文件或两栏的内容,中间用"+"区分
sort 命令
sort file1 file2 排序两个文件的内容
sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)
sort file1 file2 | uniq -u 删除交集,留下其他的行
sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)
comm 命令
- comm -1 file1 file2 比较两个文件的内容只删除 ‘file1’ 所包含的内容
- comm -2 file1 file2 比较两个文件的内容只删除 ‘file2’ 所包含的内容
- comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分
chattr设置文件隐藏属性
chattr
- a 只能增加数据,而不能删除和修改数据(适用于日志文件)
- A 此文件(或目录)的访问时间atime将不会被修改。可避免I/O较慢的机器过度访问磁盘。
- d dump命令运行时,不进行dump备份备份操作
- S 一般文件是异步格式写入磁盘的,如果加上S这个属性时,对文件进行任何修改,将会“同步”写入磁盘中。
- s :如果这个文件被删除,它将会被完全从这个硬盘空间中删除。
- u :与s相反,如果该文件被删除了,则数据内容其实还存在磁盘中。
- c :会自动将此文件压缩,在读取的时候会自动解压缩,但是在存储的时候,将会先进行压缩后再存储。
- i :它可以让一个文件不能被删除、改名,设置连接也无法写入或添加数据。
lsattr
- -a :将隐藏属性也显示出来
- -d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名
- -R :连同子目录的数据也一并列出
命令示例
chattr +i test.txt # test.txt拥有i属性,且root不能删除
lsattr test.txt #显示文件隐藏属性
chattr -i test.txt # 移除文件隐藏属性
文件属性
ls -al --full-time
- 第一列:共10位,第1位表示文档类型,d表示目录,-表示文件,l表示链接文件,d表示可随机存取的设备,如U盘等,c表示一次性读取设备,如鼠标、键盘等。后9位,依次对应三种身份所拥有的权限,身份顺序为:owner、group、others,权限顺序为:readable、writable、excutable。
- 第二列:表示连结数
- 第三列:表示拥有者
- 第四列:表示所属群组
- 第五列:表示文档容量大小,单位字节
- 第六列:表示文档最后修改时间,注意不是文档的创建时间哦
- 第七列:表示文档名称。以点(.)开头的是隐藏文档
修改文件属性
chmod 命令
ls -lh 显示权限
chmod | ugoa | +(加入) -(除去) =(设置) | rwx | 文档路径
chmod ugo+rwx directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r,4 )、写(w,2)和执行(x,1)的权限
chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限
- u:owner,g:group,o:others,a:all
- u+x:添加owner 可执行权限,g-x:去除group 可执行权限,uo=x:设置owner和others 可执行权限
防止chmod误操作,霸道的恢复方法
执行chmod前:getfacl -R / > chmod.txt
恢复执行:setfacl --restore=chmod.txt
chown 命令(改变文件的所有者)
chown user1 file1 改变一个文件的所有人属性 chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性 chown user1:group1 file1 改变一个文件的所有人和群组属性
chgrp 命令(改变文件所属用户组)
chgrp group1 file1 改变文件的群组
查寻文件或命令的路径
whereis命令
whereis command 显示命令的路径。
which command 显示命令的路径,及使用者所定义的别名。
whatis command 显示命令功能的摘要。
find命令
find search-path -name filename -print 搜寻指定路径下某文件的路径 。
find / -name file1 从 ‘/’ 开始进入根文件系统搜索文件和目录
find / -user user1 搜索属于用户 ‘user1’ 的文件和目录find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件
find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件
whereis halt 显示一个二进制文件、源码或man的位置which halt 显示一个二进制文件或可执行文件的完整路径
find /var/mail/ -size +50M -exec rm {} \; 删除大于50M的文件:
统计.jpg文件大小
find / -name *.jpg -exec wc -c {} \;|awk '{print $1}'|awk '{a+=$1}END{print a}'
查找大写字母开头的 txt 文件:$ find /etc -name "[A-Z]*.txt" -print
查找不是 out 开头的 txt 文件:$ find . -name "out*" -prune -o -name "*.txt" -print
除 git 子目录外查找 txt 文件:$ find . -path "./git" -prune -o -name "*.txt" -print
复制文件
cp 命令(copy)
- -a :将文件的特性一起复制
- -p :连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份
- -i :若目标文件已经存在时,在覆盖时会先询问操作的进行
- -r :递归持续复制,用于目录的复制行为
- -u :目标文件与源文件有差异时才会复制
scp命令
复制文件
scp local_file remote_username@remote_ip:remote_folder 本地到远程
scp remote_username@remote_ip:remote_folder local_file 远程到本地
复制目录
scp -r local_folder remote_username@remote_ip:remote_folder
scp -r remote_username@remote_ip:remote_folder local_folder
pv(Pipe Viewer) 命令可以监测数据复制的过程,www.ivarch.com/programs/pv.shtml
当运行 rsync 命令或创建一个 tar 归档的时候。不带任何选项运行 pv 命令时,默认参数为:
- -p :进程
- -t :时间,到当前总运行时间
- -e :预计完成时间,这往往是不准确的,因为 pv 通常不知道需要移动的数据的大小
- -r :速率计数器,或吞吐量
- -b :字节计数器
比如rsync 传输: $ rsync -av /home/carla/ /media/carla/backup/|pv
创建一个 tar 归档: $ tar-czf -/file/path|(pv> backup.tgz)
使用 pv 来回显输入的内容: $ echo"typing random stuff to pipe through pv"|pv-qL 8
文件描述符
ulimit -n
ulimit -n 查看linux系统打开最大的文件描述符,默认1024
修改/etc/security/limits.conf
* soft nofile 10240
* hard nofile 10240
重启后生效
当前系统使用的打开文件符数:cat /proc/sys/fs/file-nr
5664 0 186405
其中第一个数表示当前系统已分配使用的打开文件描述符数,第二个数为分配后已释放的(目前已不再使用),第三个数等于 file-max
系统最大打开文件描述符数: /proc/sys/fs/file-max
lsof (list open files)
lsof (list open files)用于查看进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP),还可以用于找回/恢复被删除的文件。
显示所有连接:# lsof -i
只显示IPV6的连接信息:# lsof -i 6
仅显示TCP连接:# lsof -i tcp
显示指定端口的连接信息:# lsof -i :22
列由某个用户打开的进程或文件:# lsof -u root | head -5,非root:# lsof -u ^root | head
显示指定的连接信息:# lsof -i@192.168.1.100:22
显示某些状态的端口信息:# lsof -i -sTCP:LISTEN、lsof -i -sTCP:ESTABLISHED
lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr:结果是以 打开的文件描述符数量:进程号 的格式排序 。降序排序
lsof -p PID:查看进程打开的句柄
lsof 命令第一栏进程名在显示的时候,默认显示前 n 个字符,这样如果我们需要显示完整的进程名以方便过滤的话,可以使用 +c 选项。用法如下:
lsof +c 15:#最左侧的程序名最大显示 15 个字符, 如果你设置值太大, lsof 便不会采用你设置的最大值,而是使用默认最大值。
进程打开的文件描述符数量
pidof vim
3253 获得进程pid
ll /proc/3253/fd
命令
ls -lR|grep "^-"|wc -l 查看当前目录及子目录下文件数
ls -lc filename 列出文件的 ctime
ls -lu filename 列出文件的 atime
ls -l filename 列出文件的 mtime --ll默认显示的就是这个时间
nl同cat,打印行号
col:把man文件转成纯文本文件。
xmlwf:检查一下一个XML文档是否是所有的tag都是正常的。
列出当前目录下文件夹的大小
grep -v "^#" nova.conf | grep -v "^$" 排除空行又排除注释行的命令
du -h --max-depth=1
du -sm * | sort -nr :统计当前目录下文件大小,并按照大小排序
lsof |grep deleted :查看所有已打开文件并筛选出其中已删除状态的文件
删除文件
rm 命令(remove)
-f :就是force的意思,忽略不存在的文件,不会出现警告消息
-i :互动模式,在删除前会询问用户是否操作
-r :递归删除,最常用于目录删除,它是一个非常危险的参数
1、rm 路径/-xxx #加上文件路径
2、rm -- -xxx #加上--
3、rm "<>!*" #加引号
4、转义字符
5、按照i节点号删除
ls -i 查询文件节点号
find ./ -inum 1703907 -exec rm {} ;
脚本中:rm -rf ${p}/*,如果p变量没有设置,命令等同于rm -rf /,后果严重
文件压缩
tar
-c :新建打包文件
-t :查看打包文件的内容含有哪些文件名
-x :解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中
-j :通过bzip2的支持进行压缩/解压缩
-z :通过gzip的支持进行压缩/解压缩
-v :在压缩/解压缩过程中,将正在处理的文件名显示出来
-f filename :filename为要处理的文件
-C dir :指定压缩/解压缩的目录dir
压缩:tar -jcv -f filename.tar.bz2 要被处理的文件或目录名称
查询:tar -jtv -f filename.tar.bz2
解压:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
bunzip2 file1.bz2 解压一个叫做 'file1.bz2’的文件
bzip2 file1 压缩一个叫做 ‘file1’ 的文件
gunzip file1.gz 解压一个叫做 'file1.gz’的文件
gzip file1 压缩一个叫做 'file1’的文件
gzip -9 file1 最大程度压缩
rar a file1.rar test_file 创建一个叫做 ‘file1.rar’ 的包
rar a file1.rar file1 file2 dir1 同时压缩 ‘file1’, ‘file2’ 以及目录 ‘dir1’
rar x file1.rar 解压rar包
zip file1.zip file1 创建一个zip格式的压缩包
unzip file1.zip 解压一个zip格式压缩包
zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩
查看压缩属性信息
zcat -l httpd-2.4.46.tar.gz
compressed #压缩大小
uncompressed #未压缩大小
ratio #压缩比率
uncompressed_name #未压缩文件的名称
#测试压缩包的完整性
zcat -t httpd-2.4.46.tar.gz
#显示软件许可信息
# zcat -L httpd-2.4.46.tar.gz