Linux常用命令

原文地址

原文链接

前言

过于简单的命令就一笔带过了,一年也用不到一次的,比如挂载这种内容也不会记录,这里就回忆一下常用的命令结构

基本命令

命令符号

& 后台执行,&& 前一条执行成功,执行下一条,| 管道符,|| 前一条执行失败,执行下一条,> 标准输出重定向复写,>> 标准输出重定向追加,2> 错误输出重定向复写,2>> 错误输出重定向追加,&> 标准/错误输出重定向复写,&>> 标准/错误输出重定向追加

命令正则

linux 命令中大部分正则参数默认不支持 + 和 ? 以及 {}

通配符

* 任意数量字符,? 任意一个字符,[] 单字符匹配

rm log.03*; rm log.032?; rm log.032[0-3]; rm log.032[^4-9];

cd

cd; cd -; cd ~; cd ../dir; cd /home/website;

pwd

pwd; whoami;

ls

默认文件名排序 -t 时间倒序 -S 文件大小倒序

ll -ha; ll -tr; ll -Sr; ll /home/website;

mkdir

-p 递归创建 -m 自定义权限

mkdir -p /home/website/tmp; mkdir -m 711 test;

rmdir

-p 递归删除,需要保证递归类中只有递归项一个文件,否则上层递归项因非空不能删除,总之比较鸡肋的命令

rmdir -p test1/test2; rmdir test1/test2;

touch

touch跟参数可以修改文件访问时间、状态修改时间,默认为当前时间,详细

touch /root; touch tmp.txt;

ln

参数一为源文件,参数二位目标文件,-s 软连接,-f 强制,默认硬连接

软连接指向文件,硬链接指向实际的inode,inode存数据基本信息实际信息存在指向的block块中,硬链接不会建立新的 inode 信息,硬链接不能跨文件系统,硬链接只能指向文件

ln result/1.txt 1h.txt;  ln -s result/1.txt  1s.txt

cp

参数一为源文件,参数二位目标文件,-a 保留源文件属性(-p)、递归(-r)、源文件软链接则目标文件软链接,否则复制源文件(-p),-i 覆盖询问

当目标文件/结尾时候不改名,当文件名结尾时候改名,类似命令同理

cp 1.txt ./tmp/1rename.txt; cp 1.txt ./tmp/;  cp -a result resultcopy

rm

-f 强制删除,不询问 -r 删除包含所有的文件/文件夹

rm -rf /root/tmpneeddelte;

mv

-f 强制覆盖,-i 询问,自动递归不需要命令

mv resultcopy/ resultcc

env

环境变量

env; echo $HOME;

which

获取命令所在的绝对路径,如果在 PATH 包含的目录中,有多个目录都包含某命令的可执行文件,那么会执行先搜索到的可执行文件。

which rm;

添加PATH

echo $PATH; PATH=$PATH:/root/tmp;
vim /etc/environment
#PATH="/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin:/root:tmp"

ssh

这里介绍下windows上传文件到linux的命令

#passwd
scp -P 22 ./your_file.txt user@192.168.1.1:/home/dir
#ssh
scp -i your_ssh_path -P 22 ./your_file.txt user@192.168.1.1:/home/dir

打包压缩

tar包

-c 打包,-f 指定包名,-v 显示过程,-x 解包,-t 看包,-C 解包位置

#打包
tar -cvf test.tar ./resultcc/
#看包
tar -tf test.tar
#解包
tar -xvf test.tar
tar -xvf test.tar -C /tmp

zip包

zip压缩,-r 压缩目录,-v 显示过程,-u 添加压缩文件,-d 删除部分压缩文件

#压缩
zip -r test.zip ./resultcc/
#增压
zip -u test.zip ./3.txt
#减压
zip -d test.zip resultcc/1.txt

unzip解压,-t 测试解压,-d 指定目录

#测试解压
unzip -t test.zip
#解压部分
unzip test.zip 3.txt
unzip -d ./tmp test.zip

gz包

#压缩获得test.tar.gz
gzip test.tar
#打包压缩
tar -zcvf test.tar.gz ./resultcc/
#解压缩拆包
tar -zxvf test.tar.gz -C /tmp

bz2包

#打包压缩
tar -jcvf test.tar.bz2 ./resultcc/
#解压缩拆包
tar -jxvf test.tar.bz2 -C /tmp

文本编辑器

多窗口

vim -O 1.txt 2.txt

ctrl + ww 切换窗口

:vs2.txt、:vs/home/website/test/2.txt vim内添加多窗口

命令模式

i 光标前输入,I 光标行首输入,o 光标下行输入,O 光标上行输入,a 光标后输入,A 光标处行尾输入

/[正则表达式] 光标向前检索,?[正则表达式] 光标向后检索,n 检索框后跳,N 检索框前跳

x 删除光标字符 dd 删除光标行到剪贴板 ndd 删除光标n行到剪贴板 dw 删除光标单词到剪贴板

yy 复制光标行到剪贴板 nyy 复制光标n行到剪贴板 dw 复制光标单词到剪贴板

p 行,粘贴到光标下行 词,粘贴到光标后 P 行,粘贴到光标上行,词,粘贴到光标前

^ 光标到达行首,$ 光标到大行尾,gg 光标到开头,G光标到文尾,nG 到达第n行

u 撤销 ctrl + r 反撤销

ZZ 保存退出

编辑模式

:wq、:wq!、:q、:q!、:w、:w!

:![linux命令] vim内执行命令,:r!命令 将执行命令的结果写入vim

:n 到达第n行,:set nu 显示行号,:set nonu 取消行号

:n1,n2s/a1/a2/g n1行到n2行所有a1用a2替换,:%s/a1/a2/g 全文替换,:n1,n2d 删除n1到n2的内容

:1,5s/^/#/g 井号注释,:1,5/^#//g 取消井号注释,:1,5s/^g 添加双斜杠注释

文本处理

正则

#IP地址正则
^(2(5[0-5]|[0-4]\d)|\d|[1-9]\d|1\d{2})(\.(2(5[0-5]|5[0-4]\d)|\d|[1-9]\d|1\d{2})){3}$
#匹配包含换行符的所有字符
[\s\S]
[\w\W]
#使用[.\n]的方式是不行的在[]中.默认就是普通的.不再是匹配任意除了换行符的字符,所以如果是匹配Java中所有注释可以使用
/\*\*[\s\S]*\*/

重定向

输入重定向

< 后跟文件,将指定文件作为命令的输入设备,<< 后跟分界符,从标准输入设备(键盘)中读入,直到遇到分界符才停止

echo << 0
> aa
> bb
> 0
aa
bb
输出重定向

> 后跟文件,标准输出复写到文件,>> 后跟文件,标准输出追加到文件

2> 后跟文件,错误输出复写到文件,2>> 后跟文件,错误输出追加到文件

&> 后跟文件,标准/错误输出复写到文件,&>> 后跟文件,标准/错误输出追加到文件

> [文件] 2>&1 标准/错误输出复写到文件,>> [文件] 2>&1 标准/错误输出追加到文件

#标准输出
ls 1.txt > stdout.txt
#错误输出
ls notexist.txt 2> error.txt
#标准/错误输出
ls 1.txt &>> all.txt
ls notexist.txt &>> all.txt
ls 1.txt >> all.txt 2>&1
ls notexist.txt >> all.txt 2>&1
#分开输出
ls 1.txt > stdout.txt 2> error.txt
ls notexist.txt > stdout.txt 2> error.txt

cat

打印文件全部内容,或者将两个文件连接,cat 1.txt,cat 1.txt >> 2.txt,cat 1.txt > 2.txt

more

分页显示文本文件的内容,-n n=单次显示的行数,+n n=开始行数

#从第10行开始每页显示5行
more +10 -5 1.txt

交互模式:q/Q 退出,v 进入编辑模式,enter 下一行,space 下一页,= 显示当前行

less

分页显示文本文件的内容,比起more,less还可以向前看,默认情况下到达文尾不会退出,less和vim一样的交互包括滚动,退出,跳文首尾,检索

-N 显示/不显示每行行数,+n n=开始行数

less +50 -N 1.txt

交互模式:q/Q 退出,v 进入编辑模式,enter 下一行,space 下一页,-N 显示/不显示每行行数,大部分交互和vim一样

head

显示指定文件前若干行的文件内容,-n 显示前n行

#两种命令效果一样
head -n 5 1.txt; head -5 1.txt

tail

查看文件末尾的数据,-n 显示后n行,-f follow文件新增

#两种命令效果一样
tail -n 5 1.txt; tail -5 1.txt
tail -f 1.txt;

grep

从文件中找到包含指定信息的那些行,-c 仅列出满足条件的行数,-l 仅列出匹配的文件名,-i 忽略大小写,-n 列出行号,-r 递归目录检索

grep -n ^bb 3.txt
grep -n bb *
grep -nr /root/test

sed

根据脚本命令来处理文本文件中的数据,每次仅读取一行内容,根据规则匹配并修改数据存到缓冲区,输出结果,-i 同时修改源文件,-f 文件格式脚本命令

匹配替换脚本命令
sed '1,5s/aa/zz/g' 3.txt; echo "abcdefg" | sed 's/ab/zz/g'
echo "1,5s/aa/zz/g" >> command.txt && sed -f command.txt 3.txt
删除脚本命令
sed '2,3d' 3.txt; sed '3,$d' 3.txt;
插入脚本命令
#第一行下行写入zzzz,每一行下行写入zzzz,最后一行下行写入zzzzz
sed '1azzzz' 3.txt; sed 'azzzz' 3.txt; sed '$zzzz' 3.txt
#第一行上行写入zzzz,每一行上行写入zzzz
sed '1izzzz' 3.txt; sed 'izzzz' 3.txt
直接替换脚本命令
sed '3clalalalaa' 3.txt
复合命令
#用分号聚合是有坑的,如果写成1iqqqqq;3d的话,会被认为是在第一行前插入“qqqqq;3d”,使用管道符会比较稳
sed '1,5s/aa/zz/g;3d;1iqqqqq' 3.txt
sed '1,5s/aa/zz/g' 3.txt | sed '1iqqqqqq' | sed '3d'

awk

根据匹配处理文件内容并且输出,读入行,如果行满足单引号//中的正则表达,则执行后面的{}内的命令

-F 指定分隔符,默认空格,-f 文件格式脚本命令, 0 行数据, 0 行数据, 0行数据,n 行分隔符分割后的第n个变量,所有行开始前命令BEGIN,所有行结束后命令END

#空白行输出black line
awk '/^$/ {print "blank line"}' 3.txt
#输出每行第一个分割量
awk '{print $1}' 4.txt
#复合命令 每行后面加110输出
awk '{$3=$3+"110"; print $0}' 3.txt
echo '{$3=$3" 110"; print $0}' > command.txt && awk -F : -f command.txt 4.txt
#开始和结束
awk 'BEGIN {print "awk start"} {$3=$3+"110"; print $0} END{print "awk end"}' 4.txt

find

find /root/ -name "*.txt"

sort

默认分隔符为空格

ps aux | sort -rk 4
#冒号为分隔符倒序排列第三列
sort -r -t : -k 3 4.txt

软件包

yum

#未安装
yum list; yum list nginx; yum search nginx; yum info nginx
#安装
yum -y install; yum -y update; yum -y update nginx; yum remove nginx

用户

#用户
useradd zhangsan; passwd zhangsan; userdel zhangsan
#组
groupadd group1; groupdel group1
#切换权限
su -root; su root; sudo systemctl restart nginx

权限

#文件/文件夹权限
chgrp group1 test.log; chown -R zhangsan /home/gono/; chown zhangsan test.log; chown 755 test.log
#获取默认权限
umask

系统

ps

查看系统中所有运行进程的详细信息,u 显示归属用户和内存占用,-e 显示所有,a 显示终端所有进程,x 显示没有控制端的进程,-l 长格式显示,-f 拓展显示输出

#查看系统中所有进程,按照内存占用逆序
ps aux; ps aux | sort -rk 3 
#查看系统所有进程,并且看到父进程和pid以及优先级
ps -ef

top

动态地持续监听进程地运行状态,-d 指定更新秒数默认3秒

交互模式:? 交互帮助,P cpu使用率排序,M 内存占有率排序

load average:1min,5min,15min内的平均负载,一般不能超过核心数量

id:空闲cpu占比,wa/hi/si/st:各种状态cpu占比

mem:内存总容量kb

lsof

#端口号/程序名/PID互查
lsof -i | grep 10032
lsof -i:1264

kill

kill -s TERM 18627
kill -9 18627

原文地址

原文链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值