linux必会命令
Posted 飞翔的代码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux必会命令相关的知识,希望对你有一定的参考价值。
所有程序员都应该自己动手使用Linux,如果开发在Windows上,开发环境所需的其他服务应该要搭在虚拟机上,目的是熟悉Linux系统,平时避免不了要接触服务器
本文介绍一些常用必会的命令或软件,以及终端和VIM快捷键
必会命令
man
查看命令帮助文档
// 查看ls的帮助文档
man ls
// 查看文档第1页
man 1 ls
ll
列出当前目录或指定目录下的文件和目录,有些环境(如docker容器)中并没有这个命令,用ls -l
代替
root@today2:/usr/local/docker/nginx-lua# ll
total 32
drwxr-xr-x 6 root root 4096 May 29 14:44 ./
drwxr-xr-x 57 root root 4096 May 24 10:35 ../
drwxr-xr-x 2 root root 4096 May 29 14:24 build/
-rw-r--r-- 1 root root 428 Sep 18 2020 docker-compose.yml
drwxr-xr-x 2 root root 4096 Dec 31 18:32 log/
-rw-r--r-- 1 root root 2780 May 29 14:43 nginx.conf
drwxr-xr-x 3 root root 4096 Dec 31 18:33 waf/
drwxr-xr-x 2 root root 4096 Aug 10 2020 wwwroot/
root@today2:/usr/local/docker/nginx-lua# ll -h
total 32K
drwxr-xr-x 6 root root 4.0K May 29 14:44 ./
drwxr-xr-x 57 root root 4.0K May 24 10:35 ../
drwxr-xr-x 2 root root 4.0K May 29 14:24 build/
-rw-r--r-- 1 root root 428 Sep 18 2020 docker-compose.yml
drwxr-xr-x 2 root root 4.0K Dec 31 18:32 log/
-rw-r--r-- 1 root root 2.8K May 29 14:43 nginx.conf
drwxr-xr-x 3 root root 4.0K Dec 31 18:33 waf/
drwxr-xr-x 2 root root 4.0K Aug 10 2020 wwwroot/
root@today2:/usr/local/docker/nginx-lua#
ll -h
大小以便于人类阅读的方式显示
cd
切换目录
cp
复制文件或目录
cp a.txt b.txt
# 复制目录时需要添加-r,表示递归的意思
cp -r dir1 dir2
mv
移动文件或目录,常用来修改文件或目录名
mv a.txt b.txt
mv dir1 dir2
scp
跨服务器复制文件,可将文件从当前服务器复制到另一个服务器上
scp a.txt root@192.168.3.4:/home/xxx/a.txt
按回车后需要输入目标服务器root账号的密码,如果是pem证书可在scp命令后面紧跟-i xxx.pem
,如果不想每次都输入密码,可以设置目标服务器免密登录
mkdir
创建目录
mkdir a
mkdir -p a/b/c
rm
删除文件和目录
rm a.txt
rm dir1
rm -rf dir2
添加-rf时需要非常仔细查看命令是否正确,有时候因为一个不起眼的空格可能就变成rm -rf / dir2
或者要删除的目录是变量,但是很不幸变量没有正确赋值,大家都知道rm -rf
的威力
df
查看硬盘剩余
df
df -h
du
查看硬盘使用情况
// 查看当前目录
du -h
// 查看当前目录,只查看一级
du -d 1 -h
// 查看/dir2这个目录,只查看二级
du -d 2 /dir2 -h
find
查找文件或目录
// 在根目录下查找xxx这个文件名目录
find / -name xxx
// 限定只查找目录
find / -name xxx -type d
ps
查看进程,常用来查找进程ID或查看程序启动时的命令参数
// 查看tomcat进程
ps -ef | grep tomcat
netstat
查看网络情况,常用来查找指定端口,或判断端口是否在监听
// 查看8080端口
netstat -anp | grep 8080
cat
查看文件内容
// 查看a.txt中包含xxx的行
cat a.txt | grep xxx
// -n 显示行号
cat -n a.txt | grep xxx
tail
从文件尾部查看,常用来查看日志文件
// 从a.log末尾查看1000行,-f是监听文件变化,文件发生变化后立即更新到屏幕
tail -n 1000 -f a.log
nc
监听指定端口,并可以向连接方发送文本内容
nc -l 12345
nc -lk 12345
-k是在客户端断开连接后服务端不会关闭程序,客户端可以重连
cut
分隔字符串,和程序中split类型
// 将1.5以.分割,取第一部分,得到1
echo '1.5' | cut -d '.' -f1
// 得到5
echo '1.5' | cut -d '.' -f2
head
读取文件指定行数
// 读取第一行
head -1 xxx.txt
// 读取前3行
head -3 xxx.txt
sed
以行为单位进行查找、替换、新增和删除操作,这个命令比较复杂,常用于替换文件中的指定内容,以下列举一些常用的用法
// 替换掉test.txt中每行的第一个green为red
sed 's/green/red/' test.txt
// 将test.txt中第3行的第一个blue替换成red
sed '3s/blue/red/' test.txt
// 将test.txt中第3-9行中每行的第一个blue替换成red
sed '3,9s/blue/red/' test.txt
// 将test.txt中第3-9行中每行的所有blue替换成red,并且不区分大小写,g是global的意思,i是ignore case的意思
sed '3,9s/blue/red/gi' test.txt
// 正则,从test.txt中将每行的sea is xxx替换成sea is xxxblue
sed 's/sea is \(.*\)/sea is \1blue/' test.txt
sed命令格式非常多,在此不一一列举,学会这个命令可以干很多自动化的事
awk
awk是一种程序语言,支持变量、运算符、流程控制等程序语法,用于处理复杂的数据,生成格式化的报表
结合数据库来解释原理:将一行当做一条记录,一行中以一个或多个空格或Tab隔开的当做字段,字段之间的分隔符可以通过-F指定,如awk -F:
指定使用:
来作为字段分隔符
使用NR==指定行号,$指定列,如awk 'NR==3'
表示行号=3的才满足条件,
1表示第一列,$NF表示最后一列
假设test.txt的内容如下:
Flower is red
Grass is green
The sky is blue
The sea is blue
Grass is Green
Flower is RED
Green green green
red red red
aaa
对test.txt操作列举一些用法
// 打印所有行的第1列
awk '{print $1}' test.txt
// 打印test.txt中第三行,$0表示一整行
awk 'NR==3{print $0}' test.txt
// 打印test.txt中第三行的第1列
awk 'NR==3{print $1}' test.txt
// 打印第1和第2列,在前面添加指定字符串,输出结果a:Flower b:is
awk '{print "a:"$1," b:"$2}' test.txt
// 从test.txt中读取第一行第1列赋值给变量a,第二行第1列赋值给变量b,再拼接起来
awk 'NR==1{a=$1}NR==2{b=$1; print a"-"b}' test.txt
awk的用法还有非常多,熟练之后可以计算CPU使用率等等很多实用功能
echo
输出内容,可以输出内容到文件或管道
// 清空a.log的内容,一般用来清空大文件,直接rm文件可能并不能立即释放文件占用的空间,但是清空内容再删除就可以
echo '' > a.log
// 替换a.txt中的内容为abc
echo 'abc' > a.txt
// 向a.txt末尾追加一行abc
echo 'abc' >> a.txt
默认echo是换行的,添加-n表示不换行,-e表示输出的内容中支持转义符,如\t和\b
wc
统计行数,也可以统计字数和字节数,常用于配合ps -ef检测进程是否存在
// 统计test.txt有多少行
wc -l test.txt
// 统计test.txt中有多少个单词/字
wc -w test.txt
// 统计test.txt有多少字节
wc -c test.txt
// 查看docker进程并统计结果的行数
ps -ef | grep docker | wc -l
watch
监视命令的结果,相当于每隔一段时间执行一次被监视的命令,将不同的地方显示出来,通常用于需要不断的执行某个命令查看结果,使用watch命令就省去不断的执行命令了
// 每隔1秒刷新一次ls -l命令的结果,如果目录下文件发生了变化,就会立即显示出来
watch -n1 ls -l
top
查看系统当前的状态,如CPU使用情况、内存使用情况等,进入top后按1可查看所有CPU核心的使用情况
-d 设置刷新频繁,单位秒
curl
访问远程资源,如某个网址并保存为指定文件,常用来测试指定URL能否访问,以及得到响应的结果
curl http://ahydd.com
// 访问网站并将响应结果保存到文件
curl http://ahydd.com -o ahydd.html
curl命令的参数很多,以下列举常用的参数
-X 指定请求方式
curl -XPOST http://ahydd.com
-o 将结果保存到文件
curl http://ahydd.com -o ahydd.html
-H 指定请求头
curl -H 'token:xxx' -H 'a:yyy' http://ahydd.com
-b 携带cookie
curl -b 'a=123' http://ahydd.com
-c 将返回的cookie写入本地文件
curl -c xxx.txt http://ahydd.com
-d 请求内容
curl -d 'a=123&b=456' -XPOST http://ahydd.com
curl -d 'a=123' -d 'b=456' -XPOST http://ahydd.com
-e 指定referer
curl -e 'http://baidu.com' http://ahydd.com
-k 跳过SSL检查,不检查服务端的SSL证书是否有效
curl -k https://ahydd.com
-u 认证
curl -u 'username' http://ahydd.com
-u 'username:password'
,如果只写username不写password,在执行命令的时候需要输入密码,建议只写username,这样在history里就不会暴露密码
curl命令还有很多参数,以上是常用的
wget
下载远程文件到本地,一般只用于下载文件,如果docker容器中没有curl也可以用wget指定wget -q -O -
来代替curl
wget http://ahydd.com -O ahydd.html
-q 安静模式,不会在终端显示下载进度
-O 输出到指定文件,-O -
表示输出到终端,不指定-O
下载后的文件名和远程的文件名一致
--header 指定请求头,如--header="version: v1" --header="token: xxx"
tar
压缩和解压文件,参数很多,只列举最常用的两个
-czvf 压缩文件
tar -czvf xxx.tar.gz dir1 dir2 file1 file2
-xzvf 解压文件
tar -xzvf xxx.tar.gz
// 解压到指定目录
tar -xzvf xxx.tar.gz -C xxx
记住-c是压缩,-x是解压,-z是zip
以上是关于linux必会命令的主要内容,如果未能解决你的问题,请参考以下文章