工作中经常用到的Linux命令整理

文章只是整理了自己后台开发中经常使用的命令和一些参数,遇到问题可以快速的定位到需要使用的命令,再根据自己的应用情况man 命令查询具体参数的意思。

基本命令和快捷键

  • 基本命令
命令 简单说明
cd 1、cd 具体目录,如cd /tmp
2、cd - 返回之前进入的目录
pwd 打印当前目录
ls 查看当前目录的文件信息,如ls -hl
touch touch 文件名,如touch test.txt,如果test.txt文件不存在则创建,存在则将文件的修改时间改为当前时间(针对读取实时文件的程序会使用)
cp 拷贝文件,如cp test.txt test2.txt ,拷贝test.txt到test2.txt
rm 删除文件,如rm test2.txt ,删除文件test2.txt
mv 重命名文件或将文件拷贝到某一目录,如mv test.txt test2.txt ,将文件test.txt重命名为test2.txt
cat 查看文件,如cat test2.txt,查看文件test2.txt
nl 显示文件行号,如nl test2.txt,显示文件test2.txt 的行号
diff 比较文件差异,如diff test.txt test2.txt,显示文件test.txt与test2.txt 的差异
mkdir -p 递归创建目录(父目录不存在则创建),如mkdir -p a/b/c,会创建a目录再创建b目录再创建c目录
basename 返回去除目录的文件名,如basename /tmp/test.txt ,会返回去除/tmp后的test.txt
dirname 返回文件目录,如dirname /tmp/test.txt,会返回/tmp目录
head 查看文件前几行内容,如head -n 1 test.txt,查看文件test.txt前一行内容
tail 查看文件后几行内容,如tail -n 1 test.txt,会返回文件test.txt最后一行的内容,此外tail一般都是通过-f查询实时日志
命令首字母+tab 命令补全
命令首字母+tab+tab 显示所有命令
history 查询历史命令,通过!历史命令编号,可以执行历史命令
find 文件查找,find 查找目录 -name 文件名称,如find /tmp -name ‘test.txt’ -ls,查找/tmp目录下的test.txt文件
echo 输出变量,如TEST=“ABC” echo ${TEST}
ln ln -s test.txt testlink,为test.txt建立快捷方式testlink
wc 统计文件行数,如wc -l test.txt ,统计test.txt的行数
stat 查看文件属性,如stat test.txt ,查看test.txt的属性
scp 远程拷贝XXX.XXX.XXX.XXX的/tmp/test.csv文件到本地/home/test.csv:scp -P 端口 [email protected]:/tmp/test.csv /home/test.csv
  • 常用快捷键
快捷键 简单说明
Ctrl+A 命令行移动光标至行头
Ctrl+E 命令行移动光标至行尾
Ctrl+U 删除此处至开始所有内容
Ctrl+K 删除此处至末尾所有内容
Ctrl+C 终止当前进程

文件相关

  • grep
    以文件test.txt做示例,文件内容如下:
    在这里插入图片描述
    1、查询包含"abc"的所有行并显示行号(-n 表示显示行号):grep -n ‘abc’ test.txt
    在这里插入图片描述
    2、查询包含"abc"的前2行并显示行号:grep -n ‘abc’ test.txt|head -n 2
    在这里插入图片描述
    3、查询包含"abc"的后2行并显示行号:grep -n ‘abc’ test.txt|tail -n 2
    在这里插入图片描述
    4、查询不包含"abc"的行并显示行号(-v 表示未匹配):grep -n -v ‘abc’ test.txt
    在这里插入图片描述
    5、查询包含"def"当前行的后2行并显示行号(-A 表示后几行):grep -n ‘def’ -A 2 test.txt
    在这里插入图片描述
    6、查询包含"def"当前行的前2行并显示行号(-B 表示前几行):grep -n ‘def’ -B 2 test.txt
    在这里插入图片描述
  • sed
    命令格式:sed [-ni] [动作]
    动作格式:行号+操作
    常用操作:
    (1)新增:a
    (2)插入:i
    (3)取代:c
    (4)打印:p
    (5)替换:s
    还是以grep命令使用的文件为例
    在这里插入图片描述
    1、在第一行后插入"hello world"(1a表示第一行后):sed ‘1a hello world’ test.txt
    在这里插入图片描述
    2、在第一行前插入"hello world"(1i表示第一行前):sed ‘1i hello world’ test.txt
    在这里插入图片描述
    如果引用变量要用双引号"1i ${HELLOWORLD}":sed “1i ${HELLOWORLD}” test.txt
    在这里插入图片描述
    3、取代第一行的数据为"hello world"(1c表示取代第一行):sed ‘1c hello world’ test.txt
    在这里插入图片描述
    4、每行行首添加"hello world" (^表示行首,s表示替换):sed ‘s/^/hello world /g’ test.txt
    在这里插入图片描述
    5、每行行尾添加"hello world" ($表示行尾,s表示替换):sed ‘s/$/hello world /g’ test.txt
    在这里插入图片描述
    6、替换每行所有的"abc"为"hello world" :sed ‘s/abc/hello world /g’ test.txt
    在这里插入图片描述
    关于”g“的说明:加g替换每行所有匹配的字符,不加则替换每行第一个匹配的字符,如第二行有两个abc则只替换一个abc,如修改文件test.txt第二行为两个abc
    在这里插入图片描述
    7、提取文件的某几行(3,5p表示打印3~5行,注意加-n才会将sed处理的行列出来,否则都显示) :sed -n ‘3,5p’ test.txt
    在这里插入图片描述
    8、替换每行所有的"abc"为"hello world"并且直接修改文件(-i表示直接修改文件) :sed -i’s/abc/hello world /g’ test.txt
    在这里插入图片描述
  • awk
    主要功能:把文件逐行读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理
    命令格式:awk [-F field-separator] ‘commands’ input-file(s)
    写个简单例子,以下面文件为例
    在这里插入图片描述
    1、打印第一列($i,i表示分隔符分开后的列序号,0表示所有列):awk ‘{print $1}’ test.txt
    在这里插入图片描述
    2、提取第一列为’hello’的行:cat test.txt |awk ‘$1==“hello” {print $0}’|nl
    在这里插入图片描述
  • iconv
    文件编码格式转换:将gbk.csv转为utf8.csv
    iconv -f gbk -t utf-8 gbk.csv -o utf8.csv
  • tar
    将test目录打包(-c创建): tar -cvf test.tar test/
    在这里插入图片描述
    将test.tar解包(-x解压,-C指定目录):tar -xvf test.tar -C /home
    在这里插入图片描述
    或者进入某一目录后解压tar -xvf test.tar

系统相关

命令 简单说明
top 查看当前系统的进程运行情况
free 查看内存使用情况,如free -g,-g以G为单位显示内存
df 查看磁盘使用情况,如df -hl
du 查看当前目录磁盘使用情况,如du -sh ./
crontab 查看系统的定时任务,如crontab -l
uname uname -m,查看系统64或32位
cat /etc/issue 查看操作系统版本

进程相关

命令 简单说明
ps 查询进程ps -aux
netstat 查看进程占用端口,netstat -nap
nohup 后台运行进程(终端关闭也不挂起),如nohup ./test>/dev/null &
kill kill -s 9 进程id,强制结束进程

进程崩溃定位(后面写makefile文件时会写示例)
(1)通过产生的core文件定位,gdb 进程文件名 core文件
bt或where定位到行
(2)addr2line,通过/var/log/messages
XXXXX[8751]: segfault at 40 ip0000000000499262sp 00007f670318db90 error 4 in
其中的ip后面的地址是程序出错处的地址
addr2line -e 进程文件名 0000000000499262 -f

网络相关

  • tcpdump(用于抓包)&wireshark(用于分析包)

    • tcpdump抓包示例
      tcpdump -c 20 -i eth2 tcp port 8080 and host 10.244.153.136 -w ./test.pcap
      (1)-c表示抓包个数
      (2)-i 表示指定网卡
      (3)port表示指定TCP端口
      (4)host表示指定主机
      注意事项:
      使用tcpdump进行抓包,然后用wireshark进行分析的时候,出现了”Packet size limited
      during capture”
      原因:
      在Linux下进行抓包的时候没有设定截取包的长度,于是tcpdump默认采用了长度为68或96字节来进行抓包,导致一些数据稍多的包内容显示不全面。
      解决方法:在tcpdump命令后加上-s0参数,则可以抓取任意长度的数据包
      tcpdump -s0 -i eth4 tcp -w ./test.pcap
    • wireshark的一些常用过滤规则:
      1、过滤目的地址为192.168.130.120端口为6088:ip.dst == 192.168.130.120 and tcp.port == 6088
      2、http and ip.src == 10.201.172.164
      3、url过滤:http.request.uri contains “getResult”
      4、过滤POST请求http.request.method==POST
  • curl&Fiddler

    • 传递普通参数
      curl “http://127.0.0.1:6000/getResult?dateTime=201507&type=month”
      web接口地址注意引号否则传递参数会出错
      1、?连接作用
      2、&不同参数的间隔符
      3、如果参数存在空格,可以用+或者%20代替
    • 传递JSON参数
      curl -H “Content-Type: application/json” -X POST --data ‘{“dateTime”:“201507”,“type”:0}’ http://127.0.0.1:6000/updateResult
    • 传递xml参数(一般用于测试webservices)
      curl -H “Content-Type: application/x-www-form-urlencoded;charset=UTF-8” --data @test.xml http://127.0.0.1:6000/test?wsdl
      –data @test.xml表示输入的xml文件

猜你喜欢

转载自blog.csdn.net/weixin_43628270/article/details/107705793