天天看点

Linux使用手册,开发必备

linux命令帮助手册:https://man.linuxde.net/

目录

    • 一、LINUX目录
    • 二、指令
      • 1. 文件、文件夹 操作指令
        • ls
        • pwd
        • cd
        • mkdir
        • touch
        • cp
        • mv
        • rm
        • chmod
        • chown
        • chgrp
      • 2.文件内容 指令
        • vim
        • 输出重定向 > 和
        • cat
        • head
        • tail
        • less
        • wc
      • 3.其他
        • df
        • free
        • date
        • cal
        • clear 或 ctrl+L
        • 管道符 |
        • ps
        • top
        • du
        • find
        • service
        • kill
        • sudo
      • 4.网络命令
        • ping
        • netstat
        • traceroute
        • arp
        • tcpdump
      • 5.一些不常用的指令:
      • 6.给指令起别名
      • other: vim三种模式操作
    • 三、服务、防火墙、rpm、计划任务
      • 1. 服务
      • 2. 防火墙iptables
      • 3. rpm
      • 4. cron/crontab 计划任务
    • 四、shell脚本
      • 1. 脚本注释
      • 2.变量
        • 变量定义
        • 使用变量
        • 删除变量
        • 只读变量
        • 接受用户输出
      • 3.判断、条件
        • if
      • 4.运算符
        • 数学运算符
        • 关系运算符
        • 逻辑运算符
        • 字符串运算符
        • 文件测试运算符
        • 5.传递参数给shell脚本

一、LINUX目录

bin:	二进制文件
dev:	外接设备(盘,光盘)
etc:	配置文件
home:	用户的家目录(除root)
proc:	Linux运行时的进程
root:	root用户的家目录
sbin:	super binary	可执行的二进制文件(须有super权限[超管]才能执行)
tmp:	临时文件
usr:	用户自己安装的软件
var:	程序、系统日志文件
mnt:	外界设备需要挂载,挂载在该目录
           

二、指令

1. 文件、文件夹 操作指令

ls

ls	列出当前工作目录文件及文件夹
	-l	详细列表
	-a	对隐藏文件进行显示
	-lh	在l基础上,对文件大小的展示更友好
	
	
【显示结果】

第一列的第一个字母(文件类型):
	-	文件
	d	文件夹
	l	软连接
	s	套接字
第一列的其他9个字符表示权限:
	2-4位:文件所有者读、写和执行权限
	5-7位:文件所有者同组人读、写和执行权限
	8-10位:文其他人读、写和执行权限
	其中:rwx分别表示读、写、执行。例如:r--表示只有读权限,rw-表示只有读写权限,--x表示只有执行权限。
           

pwd

print working directory
打印当前工作绝对路径
           

cd

切换当前工作目录
           

mkdir

make directory
创建目录

mkdir	路径([目录/]文件夹名)
           

touch

创建文件

touch	[路径/]文件
           

cp

copy	复制。可以给文件改名。
	-r	递归复制

cp	被复制的文档	新路径+文件名
cp	-r 被复制的文件夹	新路径
           

mv

move	移动(剪切)文件或文件夹。
		重命名。

mv	需要移动的文件或文件夹路径	新位置
           

rm

移动/删除
	-f	force,无需提示(直接删除时会提示是否删除)。
	-r	递归删除
	
#可同时删除多个命令	
rm	-rf	文件名1 文件名2 文件名3

           

chmod

给文档赋权限。只有root或文档所有者才能赋权。

-------------------
1.字母模式
给谁设置:
	u	所有者身份
	g	同组用户
	o	其他人
	a	所有人(默认)
权限字母:
	r	读
	w	写
	x	执行
权限分配方式
	+	给用户新增权限
	-	删除权限
	=	将权限设置成什么(覆盖)

#给a.txt文件自己添加执行权限,同组用户添加读执行,其他增加读权限。
chmod	u+x,g+rx,o+r	a.txt

-------------------
2.数字形式
    r:	4		100(二进制)
    w:	2		010(二进制)
    x:	1		001(二进制)

#在a.txt给所有人全权限
chmod 777 a.txt
#其中第一个7表示给自己rwx权限,第二个7是给同组,第三个是给其他人。
# 7是二进制111的10进制表示。例如:5就是101(二进制),表示r读和x执行权限。
           

chown

更改文档所有者(文件属主)。

chown  用户名   文档

#更改oo目录的属主为test
chown	test	oo/

#更改文档的用户名为username,用户组为groupname
chown	-R	username:groupname	文档
           

chgrp

更改文档的所属用户组。

chgrp	-R groupname	文档

#更改oo目录的用户组为test
chgrp	test 	oo/
           

2.文件内容 指令

vim

vim		打开文件

{vim编辑器 相关在 "第二部分-指令" 最底下}
           

输出重定向 > 和

>	覆盖输出,会覆盖原先的文件内容
>>	追加输出,原文件末尾追加


#将ls -la输出写入ls.txt文件里(ls.txt可以自动新建)
ls -la > ls.txt
           

cat

查看文件(将文件打印在控制台)。
	合并文件。

#合并文件,舍弃待合并文件
cat	待合并文件1	待合并文件2	...		>	合并之后的文件路径

#合并文件,保留原文件
cat	待合并文件1	待合并文件2	...		>>	合并之后的文件路径
           

head

查看文件的前n行,不指定默认前10行

#查看文件前五行
head -5 文件路径
           

tail

查看文件末尾n行,默认10行
	-f	查看文件动态变化

#查看文件末尾10行
tail -10 文件路径

## 查看文件的动态变化
tail	-f	文件路径
           

less

查看文件,以较少的内容进行输出,按下辅助功能键查看更多


【辅助键】
数字+回车			 从输入的数字行开始展示
空格			 	  翻页
上下方向键			行移动
           

wc

统计文件内容信息(行数l、单词数w、字节数c)
	-l	line行数
	-w	words单词数
	-c	字节数
           

3.其他

df

df	查看磁盘
	-h	大小展示包含k,M,更友好
	
           

free

查看内容使用情况
	-m	内存大小单位为mb
	
【展示结果】	
buffers已经占用内存但未使用的输出内存
cacheds已经占用内存但未使用的输人内存
free真实的剩余可用内存
           

date

操作时间日期(读取,设置)


#直接输出时间日期
date
#输出当前‘年-月-日’ 2099-12-31
date +%F
date %Y-%m-%d

#输出当前“年-月-日 时:分:秒”	2099-12-31 00:00:00
date +%F%T
date "+%F %T"
date "%Y-%m-%d %H:%M:%S"

#一年前的日期时间
date -y "-1 year" "%Y-%m-%d %H:%M:%S"
#一天后的日期时间
date -d "+1 day" "%Y-%m-%d %H:%M:%S"
#十月后的日期时间
date -m "+10 month" "%Y-%m-%d %H:%M:%S"



%F:表示完成的年月日
%T:表示完成的时分秒
%Y:表示四位年份
%m:表示两位月份(带前导0)
%H:表示小时(带前导0)
%M:表示分钟(带前导0)
           

cal

操作日历。

#输出当前月份的日历
cal
cal -1

#输出上月,本月,上月日历
cal -3

#输出一年的日历
cal -y
           

clear 或 ctrl+L

清除控制台。(其实是以前的命令隐藏到最上边)

           

管道符 |

配合其他命令使用,辅助作用。
管道符前的输出是其后一个命令的输入。


#根目录下含y的文件或文件夹(grep命令用于过滤)
ls / | grep y

#统计路径下的文件及文件夹数
ls / |wc -l
ls / |wc -w
           

ps

查看服务器进程信息
	-e	列出全部进程
	-f	显示全部的列(全字段)

#查看进程名的进程信息
ps -ef|grep	进程名


【显示结果】
UID:该进程执行的用户id
PID:进程id
PPID:父进程id。如果一个程序父进程找不到,其为僵尸进程。
C:cpu的占用百分比
SYTIME:该进程启动时间
TTY:终端设备,发起该设备的设备识别符号。?为不为终端发出。
TIME:进程的执行时间
CMD:该进程的名称或对应路径
           

top

服务器进程占的资源(动态显示)。
在top展示结果可输入以下字母进行操作:
q	退出按q。
m	将结果按照内存从高到底降序排列
P	将结果按cpu使用率从高到低降序排列
1	切换是否显示。展示各个cpu信息


【显示结果】
up				开机时长
load average	分别对应1分钟,5分钟,15分钟负载情况
Mem				内存使用信息
Swap			交换分区信息

PID			进程id
PR			优先级(越大越高)
NI			用户进程空间内改变过优先级的进程占用cpu百分比
VIRT		虚拟内存
RES			常驻内存
SHR			共享内存。
S			进程状态(S睡眠,R运行)
%CPU		cpu使用百分比
%MEM		内存使用百分比
TIME+		进程的执行时间
COMMAND		进程的名称或路径
           

du

查看目录真实大小

	-s	summaries。只显示霍总大小
	-h	以高可读形式显示
	
#统计root目录真实大小	
du	-sh	/root

           

find

查找文件
	-name	根据文件名搜索
	-type	根据类型搜索。f表示文件,d表示文件夹	
	
#在路径下搜索文件(自支持模糊搜索)	
find 	搜索路径	-name	文件名
#根目录下搜索.conf后缀名文件
find / -name *.conf

#搜索/etc下所有文件
find /etc -type f
           

service

控制一些软件的服务的启动start,停止stop,重启restart

#启动httpd服务
service httpd服务 start
           

kill

杀死进程
	-9	强制
	
#杀死进程id为9999	的进程
kill	9999
#杀死进程
killall 进程名
           

sudo

输入visudo可以修改sudo配置文件。
第二列的ALL:表示 。
第二列的(ALL):谁的身份执行,all表示root
第三列表示可执行的命令,逗号分隔。

#test用户可以在任何主机上以root身份添加用户和设置密码操作(但不能修改root密码)
test	ALL=(ALL)	/usr/sbin/useradd,!/usr/bin/passwd root
#在visudo指令后的文件里添加上述语句,后,sudo执行指令就可以。
# !/usr/bin/passwd root 表示给除root其他用户都能修改密码。
           

4.网络命令

ping

查看当前主机与目标主机之间的连通性
ping	www.baidu.com
           

netstat

查看网络的连接信息

netstat -tnlp
	-t	tcp协议
	-n	将字母转化为数字
	-l	列出状态为监听的
	-p	显示进程相关信息

netstat	-an
	-a	全部协议
	-n	将字母转化为数字
           

traceroute

查找当前主机与目标主机之间所有的网关(路由器,会给沿途各个路由器发送icmp数据包)

traceroute	主机地址

#可以通过网页版的‘站长工具’可视化网页实现该功能(tool.chinaz.com)
           

arp

根据ip地址获取MAC物理地址

arp	-a			查看本地缓存mac表
	-a	全部
	

           

tcpdump

抓包,抓取数据包

#查看22端口数据包
tcpdump	port	22
#查看22端口数据包有关192.168.1.130
tcpdump	port 22 host	192.168.1.130

           

5.一些不常用的指令:

su			切换用户。su	test	切换到test用户
passwd		修改用户密码。#passwd root
hostname	操作主机名
id			查看用户基本信息
whoani		“我是谁”。显示当前用户名
ifconfig	网卡信息
reboot		重启计算机
shutdown	关机
uptime		输出计算机的持续在线时间(计算机从开机到现在运行时长)
uname		获取操作系统相关信息。uname -a 获取全部信息。
netstat -tnlp	查看网络连接状态。-t表示只列出tcp协议的连接。-n转化成ip:端口号。-l过滤出state(状态)列值为LISTEN(监听)的连接。-p显示进程pid、进程名。
man			manual。linux命令帮助手册。q退出。
           

6.给指令起别名

Linux是使用别名映射文件进行映射

使用`~/.bashrc`文件
添加别名
格式为:
	alias cls='clear'
之后注销系统,在终端输入cls就相当于clear命令

           

other: vim三种模式操作

打开编辑文件
#打开文件,进入命令模式
vim	文件路径名
#打开指定文件,并高亮显示关键词
vim	+/关键词	文件路径	
例如:vim	+/login	passwd
------------------------------------

:q				退出
:q!				强制退出,不做保存
:w				存储所写内容
:w	新路径		  将当前文档另存到新路径下
:wq				保存并退出
:x		文件没修改相当于:q,不更新文件的修改时间。文件修改了相当于:wq。
:X			文件进行加密
-------------------------------
三种模式:
1.	命令模式(打开文件默认进入的模式):只可以输入快捷键进行操作(删除行,复制行,移动光标,粘贴)
​```

光标移动的直接键盘按键(相当于快捷键)
光标移动到首行		gg
光标移动到末行		G
向上翻屏		ctrl+b		或pgUp		
向下翻屏		ctrl+f		或pgDown
光标快速移动到指定第3行		3G
光标快速向上/向下移动3行		3⬆	3⬇	
光标快速向左/向右移动3行		3⬅	3➡	

复制光标所在行				yy
复制当前光标及往下总共7行			7yy
粘贴在光标位置				p
ctrl+v	进入可视块,可使用方向键进行选择,然后yy进行复制
剪切/删除 光标所在行		dd
剪切/删除 光标所在行及下几行		6dd
撤销上次操作内容(相当于ctrl+z)		u
恢复撤销操作(相当于ctrl+y)		ctrl+r

​```
:1		光标移动到第一行
:u		撤销上次操作内容(相当于ctrl+z)

--------------
2.	编辑模式:对文件内容进行编辑
可按i或a或insert等键从从命令模式进入编辑模式。

i就表示在光标前插入
a表示在光标后插入
⬆⬇⬅➡移动光标

------------
3.	末行模式:在末行输入命令对文件进行操作(搜索,替换,保存,退出,撤销,高亮)。
输入英文冒号:即可从命令模式进入末行模式。按esc退出该模式到命令模式。


:q				退出
:q!				强制退出,不做保存
:w				存储所写内容
:w	新路径		  将当前文档另存到新路径下
:wq				保存并退出
:x		文件没修改相当于:q,不更新文件的修改时间。文件修改了相当于:wq。
:X			文件进行加密

#调用外部命令
:!外部命令
:!ls			临时查看ls结果
:!which useradd	在vim里临时查看useradd命令的文件在哪

#查找
/关键词
/sbin			文件里sbin进行高亮
#在搜索结果切换上/下一个高亮结果
N/n
#取消高亮显示(no hightlight)
:nohl

#替换
:s/搜索关键词/新内容		替换光标所在行第一个符合条件内容
:s/搜索关键词/新内容/g		替换光标所在行全部符合的
:%s/搜索关键词/新内容		替换所有行第一个符合的
:%s/搜索关键词/新内容/g		替换所有行符合的

#显示行号
:set nu		
#取消显示行号
:set nonu



#使用vim打开多个文件时
#查看已经打开的文件列表
:files
其中%a表示当前活跃文件,#表示上一个打开的文件
#切换文件,打开另一个文件
:open 文件名
#切换上一个文件
:bp
#切换下一个文件
:bn

------------------------
%表示整个文档
g表全局
           
#vim

#代码着色	开启
:syntax on
#代码着色	关闭
:syntax off

#vim自身计算器
	a. 进入编辑模式
	b. 按下ctrl+R ,输入=。光标会移动到最后一行
	c.输入需要计算的内容,回车  (输入=1+1,回车)
           
vim配置文件

1. 在~文件夹下创建自己的个人配置文件  ~/.vimrc
2. 全局配置文件	/etc/vimrc
           
vim异常退出(未使用:wq退出,直接关闭终端)
在同目录下直接删除交换文件即可。交换文件命名为	“.文件名.swap”,其中文件名为异常退出的文件名。
           

三、服务、防火墙、rpm、计划任务

1. 服务

##开机启动服务查询
chkconfig --list
##添加开机启动服务(服务必须得能正常运行)
chkconfig --add 服务名
##设置某个服务在某个级别下启动、不启动
chkconfig --level 3 服务名 开chkconfig --level 5 服务名 关

           

2. 防火墙iptables

#是否开机启动
chkconfig --list | grep iptables

#是否已经启动防火墙
service iptables status

#启动防火墙
service	iptable start
etc/init.d/iptables start
#关闭防火墙
service	iptable stop
/etc/init.d/iptables stop
#重启防火墙
service	iptable restart
/etc/init.d/iptables restart

#查看防火墙规则
	#-L表示列出规则,-n表示用ip端口显示
iptables -L -n

#设置开启防火墙规则
	#-A 	add添加
	#INPUT	进站请求
	#-p		protcol	指定协议(icmp/tcp/udp)
	#--dport	端口
	#-j		指定行为结果,允许(accept)或禁止(reject)

#允许80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#再执行保存命令,否则重启就会失效
/etc/init.d/iptables save
           

3. rpm

对Linux服务器上的软件包进行管理

#查询某个软件(关键词)
	#-q	query查询。-a	all全部
rpm -qa|grep 关键词

#卸载firefox
rpm -e firefox
#强制卸载(忽略依赖关系)
rpm -e 软件名 --nodeps

#安装
	#-i install 安装。-v显示进度条。-h以#显示进度条
rpm -ivh 软件名

           

4. cron/crontab 计划任务

#	-l list列出用户的计划任务列表
#	-e	edit编辑指定用户的计划任务列表
#	-u	指定用户,不指定当前用户
#	-r	remove删除

#编辑计划任务文件、
# 分 时 日 月 周 命令
#分0-59
#时0-23
#日1-31
#月1-12
#周0-7,0和7都表示星期天
# * 表示任意
# - 表示区间,如1-4
# / 表示每多少个。如每10分钟一次,*/10
# , 表示多个取值。如1,3,5


#每天0点0分执行reboot命令
0 0 * * * reboot

#每月1,10,22日的4:45都重启network服务
45 4 1,10,22 * * service network restart

#每天18:00到23:00之间每30分钟重启network服务
*/30 18-23 * * * service network restart
#每两分钟向RT.txt文件追加输出当前时间
*/2 * * * * date+"%F %T" >> RT.txt
           

​ 管理员用户可以在’/etc/cron.deny’文件里配置不允许哪些用户来添加计划任务(黑名单)。可以在’/etc/cron.allow’文件允许哪些用户进行创建(白名单)。白名单优先级高于黑名单,都不在黑白名单则为允许。

四、shell脚本

1. 脚本注释

​ 脚本的第一行一般为

指定当前脚本要使用的shell解释器。

#在shell中表示注释

2.变量

变量定义

  • 变量名后的等号左右不能有空格
  • 命名只能使用字母、数字和下划线,中间不能有空格和其他符号
  • 不能是关键字

使用变量

#输出变量
echo $class
#[双引号]也可以这样写(但 单引号不可以),双引号也可以转义字符
echo "$class"

#[反引号]`,当脚本中需要执行的一些指令的结果需要赋给变量时需要使用反引号
dt=`date +'%F %T'`
echo dt
#打印出了日期及时间
           

删除变量

unset 变量名
           

只读变量

a=10
readonly a
a=5
echo $a
#10
           

接受用户输出

read -p 提示信息 变量名

#--------------
#!/bin/bash
read -p '请输入:' in
echo $in

           

3.判断、条件

if

if condition
then
	command1
elif conditon2
then
	command2
else
	command3
fi	
           

4.运算符

数学运算符

expr是表示计算工具,使用它完成表达式求值

#计算2+2的值赋给val
val=`expr2 + 2`
echo `expr $a + $b`
echo `expr $a \* $b`

#使用反引号`包裹计算式
#2 + 2  的+符号两边都得有空格
# *还可以表示通配符,所以需要转义,\*

           

关系运算符

只支持数字,不支持字符,除非字符是数字

-eq	是否相等,相等为true
-ne	是否相等,不相等为true
-gt	左数是否大于右数,是为true
-lt	左数是否小于右数,是为true
-ge	左数是否>=右数,是为true
-le	左数是否<=右数,是为true
           
[10 -lt 20]			返回true
           

逻辑运算符

!		非
-o		或
-a		与	

           
[!false]			返回true

[10 -lt 20 		-a	 	20 -gt 100] 	返回false
           

字符串运算符

=	检测两个字符串是否相等,相等为true
[$a = $b] 返回false

!=	检测两个字符串是否不相等
[$a != $b]

-z	字符串长度是否为0,为0返回true
[-z $a]

-n	字符串长度是否为0,不为0返回true
[-n $a]

str	(直接写字符串)检测字符串是否为空,不为空为true
[$a]
           

文件测试运算符

-b file		检测文件是否为块设备文件,是为true
-c file		检测文件是否为字符设备文件

-d file		是否为目录
-f file		是否为普通文件(非目录和设备文件)
-r file		是否刻度
-w file		是否可写
-x file		是否可执行
-s file		文件是否为空(文件大小是否大于0)
-e file		文件是否存在
           
#!/bash/bin
filepath='/sss.txt'
if [ -d $filepath]
then
	echo  '是目录'
else
	echo '不是目录
fi
           

5.传递参数给shell脚本

#调用脚本
./test.sh a b c


#脚本内容
echo $1 $2 $3


#会输出
# a b c
           

​ 传入的a被赋值给$1,b赋值给$2,c赋值给$3

#使用例子:
if [ $1 -eq '-add' ]
then 
	command1
else
	command2
fi	
           

继续阅读