Linux最常用命令集锦

一、文件,目录

cd  /home  进入'/home'目录
cd ..  返回上一级
cd ../.. 返回上两级
cd 或者 cd ~ 进入主目录
cd - 返回上次所在目录
pwd  显示工作路径
ls 查看目录中的文件
ls -F 查看目录中的文件
ls -l 显示文件的和目录的详细资料
ls -a 显示隐藏文件
ls *[0-9]* 显示包含数字的文件名和目录名
tree 显示文件和目录的详细资料
mkdir dir1 dir2 创建'dir1和dir2'两个文件
mkdir -p  /tmp/dir1/dir2   创建一个目录树
rm -f file  删除一个叫做'file'的文件
rmdir  dir1 删除一个叫做'dir1'的目录
rm -rf  dir1  dir2 删除两个目录以及它们的内容
mv dir1 new_dir   重命名/移动一个目录
cp file1 file2 复制一个文件
cp dir/*  .   复制一个目录下的所有文件到当前目录
cp -a /dir1  .  复制一个目录到当前目录
cp -a dir1  dir2 复制一个目录
ln -s file lnk_file  创建一个指向文件或者当前目录的软连接
ln file lnk_file 创建一个指向文件或当前目录的物理连接
touch -t  1910200000 file  修改一个文件或目录的时间戳(YYMMDDHHMM)
iconv -l 列出已知的编码

二、文件搜索 find命令:
按访问时间: -atime/天, -amin/分钟 最后一次访问时间
按修改时间: -mtime/天,-mmin/分钟 最后一次修改时间
按变化时间: -ctime/天, -cmin/分钟 最后一次数据元(如权限)修改的时间
find / -type f -mtime -30 (其中 -30是30天以内,+30是30天以外)

find /temp/ -type f -mtime +2 -print  找出 2天前的文件
find /temp/ -type f -mtime +2 -print -exec rm -f {} \; 找出并删除 2天前的文件
find /temp/ -type f -mtime +7 -print | xargs rm -f  找出并删除 2天前的文件
find /ztf  -type f -ls | sort -k 7 -r -n | head -10 查找/ztf下最大的前10个文件
find /ztf -type  -size +5120M -exec  ls -lh {} \; 查找/ztf下大于5GB的文件:
find /ztf -ctime 0 -print -exec cp {} /hxg/ {} \;找出今天的所有文件并将它们拷贝到另一个目录
find /ztf -type f -name *.jpg -exec rename 'y/[A-Z]/[a-z]/' '{}' \; 查找所有的jpg文件,并修改所有的大写字母为小写字母
find /  -name file    从 '/' 开始进入根文件系统搜索文件和目录
find /  -user user1 搜索属于用户'user1'的文件和目录
find /ztf  -name \*.jpg  在目录'/ztf'中搜索以.jpg结尾的文件
find /ztf -type f -atime +2  搜索过2天内未被使用过的执行文件
find /ztf -type f -mtime -2 搜索在2天内被创建或修改过的文件
#附加:
whereis file  (只能用于查找二进制文件、源代码文件和man手册页)
which   file (会在环境变量$PATH设置的目录里查找符合条件的文件)
locate  file(查找符合条件的文档,他会去保存文档和目录名称的数据库内)

三、文本处理
awk常用内建变量
在这里插入图片描述
1.awk命令:支持很多运算符操作
(1)一个文件,格式如下:
时间            接口名           耗时
2019-10-21-11:00  http://zhangtengfei-steven.cn   0.05

求某个接口的平均耗时

awk 'BEGIN {total = 0; count = 0; print "[start] jj time count is ", total} {if($2 == "接口名"){ total = total + $3; count = count + 1; print $3, count, total, total / count;}} END {print "[end] time count is",total}'  文件路径

(2) 每行按空格或TAB分割,输出文本中的1、4项

 awk '{print $1,$4}' log.txt

(3)两个文件,如下所示,这两个文件格式都是一样的。我想首先把文件2的第五列删除,然后用文件2的第一列减去文件一的第一列,把所得的结果对应的贴到原来第五列的位置

awk 'NR==FNR{a[NR]=$1}NR!=FNR{$5=$1 - a[FNR];print}' file2 file1

注解:当NR==FNR时,是第一个文件,到了第二个文件时FNR会从0开始计数,而NR却继续在原来的基础上自增。
先把第一个文件中要使用的内容保存到一个数组中,然后在处理第二个文件时才使用。
(4)如何用awk取出来最多列数所在的哪一行行号

awk 'BEGIN{lin=0;nf=0}{if(nf < NF){lin=NR;nf=NF}}END{print "行号:"lin,"列数:"nf}' file路径

(5)求一个文件里面 ‘str’ 字符出现的次数,并替换为特定字符new_str

awk '{a=gsub(/str/,"new_sr");sum = sum + a ; print $0,a}END{print "一共出现了:"sum"次"}' 文件路径

只是简单的统计:

awk -F "" '{for(i=1;i<=NF;++i) if($i=="str") ++sum}END{print sum}'  文件路径

(6)显示出包含str1和包含str2的行的中间行

awk '/str1/,/str2/{print $0}'  文件路径
  1. 常规文本操作:
cat file (| sed/grep/awk..做一些文本限制和操作)  >  new_file   将信息写入文件
cat file1 (| sed/grep/awk..做一些文本限制和操作)  >> file2      把file1里的 内容追加到file2
grep hxg  /ztf/1.txt  在 1.txt文件中查找关键字 'hxg'
grep ^hxg /ztf/1.txt   在1.txt文件中查以'hxg'开头的词汇
grep [0-9] /ztf/1.txt  在1.txt文件中查所有包含数字的行
grep hxg /ztf/*   在 /ztf以及随后目录中搜索字符串'hxg'
sed  's/old_str/new_str/g'  file  将file中的old_str 全部替换为new_str 
sed '/^$/d' file  将file中的空白行删除
sed -e '1d' 1.txt 排除1.txt文件的第一行
sed -n '/str/p'  file  在file找 出现str字符串的行
sed -n '1,2p' file 打印file1-2行
cat -n file 显示行号查看file文件
cat  file | awk 'NR%2==1' 删除file文件中的所有偶数行 显示
paste file1 file2  合并两个文件
sort file1 file2 排序两个文件的内容
sort file1 file2 | uniq  取出两个文件并集
sort file1 file2 | uniq -u 删除交集,留下其他行
sort file1 file2 | uniq -d 取出两个文件的交集
comm -1 file1 file2  比较两个文件的内容只删除 'file1' 所包含的内容 
comm -2 file1 file2 比较两个文件的内容只删除 'file2' 所包含的内容 
comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分 

四、进程操作 PS

-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程`
au(x) 输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)

ps -u ztf    查看用户'ztf'的进程
ps -aux --sort -pcpu | less  根据 CPU 使用来升序排序,找到哪个进程占用了你的资源
ps -f -C ztf        显示一个名为ztf的进程的信息(-f 加上显示信息更全)
ps -aux | grep name  根据名字查看进程信息
top -p pid       查看程序的情况 
ps -L pid或者top -Hp pid   知道特定进程的线程

五、其他命令:

chmod   改变文件权限
chgrp  改变文件所属用户组
head  -n 20  file 取出file前20行
tail -n +10  file  取出file后10行
df 列出文件系统的整体磁盘使用量
du 评估文件系统的磁盘使用量
env  查看环境变量与常见环境变量说明
grep 分析一行信息,若匹配想找的数据则将该行取出来
sort 排序命令
uniq 排序完成但是将重复的数据仅列出一个显示
diff 文件比较工具
useradd /userdel  新增用户/ 删除用户
passwd 设置密码
groupadd/groupdel /新增用户组/删除用户组
su 切换身份
id 查看当前用户的id
who或w  查看目前登录在系统上的用户
free 查看内存使用情况
uname 查看系统与内核相关信息
uptime  查看系统启 动时间与工作负载
netstat  跟踪网络
ifconfig 查看网卡信息
ssh 远程登录linux主机
scp 远程拷贝
service 查看服务
kill -HUP PID 重启进程
killall  -9 -i vim 主要用于批量杀死web服务器进程
pkill -9 -t  终端号   按照终端号踢出用户

小常识:
管道和命令替换的区别是:
管道:管道符号"|“左边命令的输出作为右边命令的输入
命令替换:将命令替换符”``"中命令的输出作为其他命令相应位置的参数
如:

#根据进程名字进行查询某个进程的线程:
pstree -p `ps -e | grep server | awk '{print $1}'`

xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它能够将标准输入或管道中的数据转换为特定命令的命令行参数,也可以将单行或多行文本输入转换为其他格式的数据,比如单行变多行或者多行变单行。xargs的默认命令是echo,默认分隔符是空格。通过xargs的处理,换行和空白都会被替换为空格。

cat file | xarg -n3   每行3个字符输出  字符之间有空格
echo "a,b" xargs -d,    指定一个域分隔符,将特定列打散,并指定格式输出
echo "a,b" xargs -d, -n1 基于上面,每行打印一个。

猜你喜欢

转载自blog.csdn.net/weixin_43885417/article/details/102651485
今日推荐