Linux基础命令
Linux命令文档:man.linuxde.net
Linux的目录结构
/
,根目录是最顶级的目录了- Linux只有一个顶级目录:
/
- 路径描述的层次关系同样适用
/
来表示 - /home/itheima/a.txt,表示根目录下的home文件夹内有itheima文件夹,内有a.txt
ls命令
功能:列出文件夹信息
语法:ls [-l -h -a] [参数]
- 参数:被查看的文件夹,不提供参数,表示查看当前工作目录
- -l,以列表形式查看
- -h,配合-l,以更加人性化的方式显示文件大小
- -a,显示隐藏文件
隐藏文件、文件夹
在Linux中以.
开头的,均是隐藏的。
默认不显示出来,需要-a
选项才可查看到。
pwd命令
功能:展示当前工作目录
语法:pwd
cd命令
功能:切换工作目录
语法:cd [目标目录]
参数:目标目录,要切换去的地方,不提供默认切换到当前登录用户HOME目录
HOME目录
每一个用户在Linux系统中都有自己的专属工作目录,称之为HOME目录。
-
普通用户的HOME目录,默认在:
/home/用户名
-
root用户的HOME目录,在:
/root
FinalShell登陆终端后,默认的工作目录就是用户的HOME目录
相对路径、绝对路径
-
相对路径,非
/
开头的称之为相对路径相对路径表示以
当前目录
作为起点,去描述路径,如test/a.txt
,表示当前工作目录内的test文件夹内的a.txt文件 -
绝对路径,以
/
开头的称之为绝对路径绝对路径从
根
开始描述路径
特殊路径符
.
,表示当前,比如./a.txt,表示当前文件夹内的a.txt
文件..
,表示上级目录,比如../
表示上级目录,../../
表示上级的上级目录~
,表示用户的HOME目录,比如cd ~
,即可切回用户HOME目录
mkdir命令
功能:创建文件夹
语法:mkdir [-p] 参数
- 参数:被创建文件夹的路径
- 选项:-p,可选,表示创建前置路径
touch命令
功能:创建文件
语法:touch 参数
- 参数:被创建的文件路径,一个命令可以对应创建多个文件,也可以使用绝对和相对目录进行创建
cat命令
功能:
-
查看文件内容,只查看不编辑
-
可以对文件进行合并
cat 文件一 文件二 > 合并后的文件路径和文件名
语法:cat 参数
- 参数:被查看的文件路径
more命令
功能:查看文件,可以支持翻页查看
语法:more 参数
- 参数:被查看的文件路径
- 在查看过程中:
空格
键翻页q
退出查看
less命令
作用:查看文件,以较少的内容进行输出,按下辅助功能键(数字+回车、空格键+上下方向键)查看更多
语法:less 需要查看的文件路径
cp命令
功能:复制文件、文件夹
语法:cp [-r] 参数1 参数2
- 参数1,被复制的
- 参数2,要复制去的地方
- 选项:-r,可选,复制文件夹使用
- 在复制过程中可以进行重命名操作,但是尽量保持前后名称一致
- 注意:进行文件夹复制操作时需要添加选项 “ -r ”【 -r 表示递归复制】,否则目录将被忽略
示例:
- cp a.txt b.txt,复制当前目录下a.txt为b.txt
- cp a.txt test/,复制当前目录a.txt到test文件夹内
- cp -r test test2,复制文件夹test到当前文件夹内为test2存在
mv命令
功能:移动文件、文件夹
语法:mv 参数1 参数2
- 参数1:被移动的
- 参数2:要移动去的地方,参数2如果不存在,则会进行改名
rm命令
功能:删除文件、文件夹
语法:rm [-r -f] 参数...参数
- 参数:支持多个,每一个表示被删除的,空格进行分隔
- 选项:-r,删除文件夹使用
- 选项:-f,强制删除,不会给出确认提示,一般root用户会用到
rm命令很危险,一定要注意,特别是切换到root用户的时候。
which命令
功能:查看命令的程序本体文件路径
语法:which 参数
- 参数:被查看的命令
find命令
功能:搜索文件
语法1按文件名搜索:find 路径 -name 参数
- 路径,搜索的起始路径
- 参数,搜索的关键字,支持通配符*, 比如:
*
test表示搜索任意以test结尾的文件
grep命令
功能:过滤关键字
语法:grep [-n] 关键字 文件路径
- 选项-n,可选,表示在结果中显示匹配的行的行号。
- 参数,关键字,必填,表示过滤的关键字,带有空格或其它特殊符号,建议使用””将关键字包围起来
- 参数,文件路径,必填,表示要过滤内容的文件路径,可作为内容输入端口
参数文件路径,可以作为管道符的输入
wc
功能:统计
语法:wc [-c -m -l -w] 文件路径
- 选项,-c,统计bytes数量
- 选项,-m,统计字符数量
- 选项,-l,统计行数
- 选项,-w,统计单词数量,依照空格数量进行判断
- 参数,文件路径,被统计的文件,可作为内容输入端口
参数文件路径,可作为管道符的输入
管道符 |
写法:|
功能:将符号左边的结果,作为符号右边的输入
示例:
cat a.txt | grep itheima
,将cat a.txt的结果,作为grep命令的输入,用来过滤itheima
关键字
可以支持嵌套:
cat a.txt | grep itheima | grep itcast
echo命令
功能:输出内容
语法:echo 参数
- 参数:被输出的内容
`反引号
功能:被两个反引号包围的内容,会作为命令执行
示例:
- echo `pwd`,会输出当前工作目录
tail命令
功能:查看文件尾部内容
语法:tail [-f] 参数
- 参数:被查看的文件
- 选项:-f,持续跟踪文件修改
head命令
功能:查看文件头部内容
语法:head [-n] 参数
- 参数:被查看的文件
- 选项:-n,查看的行数
重定向符
功能:将符号左边的结果,输出到右边指定的文件中去
>
,表示覆盖输出>>
,表示追加输出
vi编辑器
命令模式快捷键
vim打开文件的方式:
- #vim 文件路径 —打开指定的文件
- #vim +数字 文件路径 —打开指定文件并将光标移动到指定行
- #vim +/关键词 文件路径 —打开指定的文件,并且高亮显示关键字
- #vim 文件路径1 文件路径2 文件路径3 —同时打开多个文件
切换文件的方式:
a. 如果需要指定切换文件的名称,则可以输入:“open 已经打开的文件名“
b.通过其他命令来切换上一个/下一个文件
输入:“:bn” 切换到下一个文件(back next)
输入:“:bp” 切换到上一个文件(back previous)
光标移动先按数字,再按G,先按G直接就到末尾了
末行模式
显示行号
语法:#set nu
取消:#set nonu
底线命令快捷键
实用功能
1.代码着色
显示:“:syntax on”
关闭显示:“:syntax off”
2.vim中计算器的使用
需要计算器计算公式时,可以打开vim中简易的计算器
a.进入编辑模式
b.按下“CTRL + R”,然后输入“=”,此时光标就会到最后一行
c.输入需要计算的内容,按下回车
vim扩展
1.vim的配置
vim配置有三种情况:
a.在文件打开i的时候在末行模式下输入的配置(临时的)
b.个人配置文件(~/.vimrc)
c.全局配置文件(vim自带,/etc/vimrc)
文件配置有冲突情况下,以个人配置文件优先。
①新建好个人配置文件后进入编辑
②在配置文件中进行配置
比如显示行号:set nu
在root下设置 #vim .vimrc
配置好之后,vim打开文件就会按照配置进行显示
2.异常退出
编辑文件后没有正常 :wq 退出,出现以下页面
删掉交换文件(在编辑过程中产生的临时文件)
如图中为 .passwd.swp
3.别名机制
自己创建命令(自定义命令)
例如:在windows下有cls命令进行清屏,在Linux中也可以自定义cls 清屏命令
别名机制依靠一个别名映射文件 :~/.bashrc
打开文件:#vim ~/.bashrc
新建命令要生效必须要重新登录当前用户
4.退出方式
回顾:之前的vim退出使用“:q” 和 “:wq”
此外,vim还支持 “:x” 退出
- 在文件没修改的情况下直接退出,文件修改情况下,保存并退出
- 若文件没被修改,使用“:wq”进行退出,文件的修改时间会被更新,而使用:x 不会更新修改时间
但是不能使用 :X (大写X进行退出)会把文件进行加密
命令的选项
我们学习的一系列Linux命令,它们所拥有的选项都是非常多的。
比如,简单的ls命令就有:-a -A -b -c -C -d -D -f -F -g -G -h -H -i -I -k -l -L -m -n -N -o -p -q -Q -r-R -s -S -t -T -u -U -v -w -x -X -1等选项,可以发现选项是极其多的。
课程中, 并不会将全部的选项都进行讲解,否则,一个ls命令就可能讲解2小时之久。
课程中,会对常见的选项进行讲解, 足够满足绝大多数的学习、工作场景。
查看命令的帮助
可以通过:命令 --help
查看命令的帮助手册
查看命令的详细手册
可以通过:man 命令
查看某命令的详细手册
Linux常用操作
软件安装
- CentOS系统使用:
- yum [install remove search] [-y] 软件名称
- install 安装
- remove 卸载
- search 搜索
- -y,自动确认
- yum [install remove search] [-y] 软件名称
- Ubuntu系统使用
- apt [install remove search] [-y] 软件名称
- install 安装
- remove 卸载
- search 搜索
- -y,自动确认
- apt [install remove search] [-y] 软件名称
yum 和 apt 均需要root权限
压缩解压
zip
如果你想要将文件解压到特定的目录(而不是当前目录),可以使用-d选项后跟目标目录的路径:
unzip filename.zip -d /path/to/destination
systemctl
功能:控制系统服务的启动关闭等
语法:systemctl start | stop | restart | disable | enable | status 服务名
- start,启动
- stop,停止
- status,查看状态
- disable,关闭开机自启
- enable,开启开机自启
- restart,重启
软链接
功能:创建文件、文件夹软链接(快捷方式)
语法:ln -s 参数1 参数2
- 参数1:被链接的
- 参数2:要链接去的地方(快捷方式的名称和存放位置)
日期
语法:date [-d] [+格式化字符串]
-
-d 按照给定的字符串显示日期,一般用于日期计算
-
格式化字符串:通过特定的字符串标记,来控制显示的日期格式
- %Y 年%y 年份后两位数字 (00…99)
- %m 月份 (01…12)
- %d 日 (01…31)
- %H 小时 (00…23)
- %M 分钟 (00…59)
- %S 秒 (00…60)
- %s 自 1970-01-01 00:00:00 UTC 到现在的秒数
-
date +%F 输出形式 2018-03-26
-
date -d “-1 year/month/day” “+%Y-%m%d %H:%M:%S”
示例:
-
按照2022-01-01的格式显示日期
-
按照2022-01-01 10:00:00的格式显示日期
-
-d选项日期计算
-
支持的时间标记为:
-
cal 指令
作用:用来操作日历
语法:
- cal 等价于cal -1 直接输出当前月份的日历
- cal -3 输出前一个月 本月 后一个月的日历
- cal -y 年份 输出某年全年的日历
时区
修改时区为中国时区
ntp
功能:同步时间
安装:yum install -y ntp
启动管理:systemctl start | stop | restart | status | disable | enable ntpd
手动校准时间:ntpdate -u ntp.aliyun.com
ip地址
格式:a.b.c.d
- abcd为0~255的数字
特殊IP:
- 127.0.0.1,表示本机
- 0.0.0.0
- 可以表示本机
- 也可以表示任意IP(看使用场景)
查看ip:ifconfig
hostname指令
作用:操作服务器的主机名(读取、设置)
语法:
- hostname 输出完整的主机名
- hostname -f 输出当前主机名中的FQDN(全限定域名)
id指令
作用:查看用户基本信息,不指定则默认当前用户
语法:
- #id 默认显示当前执行该命令的用户的基本信息
- #id 用户名 显示指定用户的基本信息
whoami指令
作用:显示当前登录的用户名,一般用于shell脚本
无其他参数
主机名
功能:Linux系统的名称
查看:hostname
设置:hostnamectl set-hostname 主机名
配置VMware固定IP
-
修改VMware网络,参阅PPT,图太多
-
设置Linux内部固定IP
修改文件:
/etc/sysconfig/network-scripts/ifcfg-ens33
示例文件内容:
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" # 改为static,固定IP DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="1b0011cb-0d2e-4eaa-8a11-af7d50ebc876" DEVICE="ens33" ONBOOT="yes" IPADDR="192.168.88.131" # IP地址,自己设置,要匹配网络范围 NETMASK="255.255.255.0" # 子网掩码,固定写法255.255.255.0 GATEWAY="192.168.88.2" # 网关,要和VMware中配置的一致 DNS1="192.168.88.2" # DNS1服务器,和网关一致即可
ps命令
功能:查看进程信息
语法:ps -ef
,查看全部进程信息,可以搭配grep做过滤:ps -ef | grep xxx
- -e 表示列出全部的进程
- -f 显示全部的列(显示全字段)
列的含义:
UID:当前进程执行的用户的ID
PID:进程ID
PPID:父级进程ID,如果一个进程的父级进程找不到,该程序称为僵尸进程
C:cpu的占用率
STIME:进程的启动时间
TTY:终端设备,发起该进程的设备识别符号,?表示不知道哪个终端发起的
TIME:进程的执行时间
CMD:进程对应的名称或路径
TOP指令(重点)
作用:查看服务器的进程占的资源,动态显示
语法:#top
退出:q 键
信息:
load average:展示一、五、十分钟内的负载情况
tasks:任务
mem:内存
表头信息:
PID:进程ID
USER:该进程对应的用户
PR:优先级
NI:nice 改变过优先级的进程占用cpu百分比
VIRT:虚拟内存
RES:常驻内存
SHR:共享内存
chrome运行
虚拟内存:申请500MB,实际使用320MB,虚拟内存为500MB
常驻内存:申请500MB,实际使用320MB,常驻内存为320MB
共享内存:申请500MB,实际使用320MB,进程有依赖的其他的进程开销就不能只算在该进程头上,需要扣除。
程序实际使用的内存 = 常驻内存(RES) — 共享内存(SHR)
S:表示进程的状态(S表示睡眠,R表示运行)
%CPU:cpu占用百分比
%MEN:内存占用的百分比
TIME+:执行的时间
COMMAND:进程的名称或者路径
关联快捷键
M:按内存从高到低排序
P:按CPU使用率从高到低排序
1:服务器有多个CPU时,按下”1“来切换展示各个CPU的详细信息
du -sh
作用:查看目录的真实大小
语法:du -sh 目录路径
选项含义:
-s summaries,只显示汇总的大小
-h 高可读性的形式显示
find
作用:用于查找文件(参数较多)
语法:find 路径范围 选项 选项的值
选项:
-name 按照文档名称进行搜索(支持模糊搜索)
-type 按照文档的类型查找
文档类型:”-“表示文件(在使用find时用 f 来替换),“d”表示文件夹
案例:使用find来搜索/etc下的所有文件
#find /etc -type f
service 指令(重点)
作用:用于控制一些软件的服务启动/停止/重启
语法:#service 服务名 start/stop/restart
例如:启动本机安装的apache(网站服务器软件),服务名httpd
#service httpd start
检查服务是否启动:
#ps -ef | grep httpd
kill命令
作用:杀死进程
语法:#kill 进程PID
#killall 杀死全部的进程名相关的,不需要ps辅助
语法:#killall 进程名称
ifconfig(重点)
作用:用于操作网卡相关的指令
简单语法:#ifconfig (获取网卡信息)
Eth0表示Linux中的一个网卡,eth0是其名称。Lo(loop,本地回还网卡,其IP地址一般都是127.0.0.1)也是一个网卡名称
inet addr就是网卡的IP地址
reboot 指令
作用:重启计算机
语法:#reboot 重启
2. #reboot -w 模拟重启但是不重启,只写日志但不重启(测试用)
shutdown (慎用)
作用:关机 (慎用)
语法:
- #shutdown -h now “关机提示”
CentOS7之后可以使用shutdown -c 取消关机
其他关机命令:
#init 0
#halt
#poweroff
uptime
作用:输出计算机开机的运行时间
语法:#uptime
uname
作用:获取计算机操作系统的相关信息
语法:
- #uname 获取操作系统的类型
- #uname -a all,表示获取全部的系统信息(类型,全部主机名,内核版本,发布时间,开源计划)
nmap命令
netstat命令
功能:查看端口占用,查看网络连接状态
用法:netstat -anp | grep xxx
2. #netstat -tnlp
-t 表示只列出TCP协议的连接
-n 表示将地址从字母组合转化成IP地址,将协议转化成端口号显示
-l 过滤出“state”列中值为 LIsten (监听)的连接
-p 显示发起连接的进程的PID和进程名称
man 手册
作用:manual,手册
语法:#man 命令名 (退出按q)
ping命令
测试网络是否联通
语法:ping [-c num] 参数
wget命令
curl命令
top命令
功能:查看主机运行状态
语法:top
,查看基础信息
可用选项:
交互式模式中,可用快捷键:
df命令
查看磁盘占用
free命令
作用:查看内存使用情况
语法:#free -m
参数:-m 以mb为单位进行显示
-g 以gb为单位,默认是以kb为单位
https://i-blog.csdnimg.cn/direct/4cb5d758d38b4597abd1f7582e4c100c.jpeg
iostat命令
查看CPU、磁盘的相关信息
sar命令
查看网络统计
环境变量
- 临时设置:export 变量名=变量值
- 永久设置:
- 针对用户,设置用户HOME目录内:
.bashrc
文件 - 针对全局,设置
/etc/profile
- 针对用户,设置用户HOME目录内:
PATH变量
记录了执行程序的搜索路径
可以将自定义路径加入PATH内,实现自定义命令在任意地方均可执行的效果
$符号
可以取出指定的环境变量的值
语法:$变量名
示例:
echo $PATH
,输出PATH环境变量的值
echo ${PATH}ABC
,输出PATH环境变量的值以及ABC
如果变量名和其它内容混淆在一起,可以使用${}
压缩解压
压缩
tar -zcvf 压缩包 被压缩1...被压缩2...被压缩N
- -z表示使用gzip,可以不写
zip [-r] 参数1 参数2 参数N
解压
tar -zxvf 被解压的文件 -C 要解压去的地方
- -z表示使用gzip,可以省略
- -C,可以省略,指定要解压去的地方,不写解压到当前目录
unzip [-d] 参数
su 切换用户
切换用户
语法:su [-] [用户]
chmod 修改权限
修改文件、文件夹权限
语法:chmod [-R] 权限 参数
-R:递归设置权限(当文档为文件夹的时候)
-
权限,要设置的权限,比如755,表示:
rwxr-xr-x
-
参数,被修改的文件、文件夹
-
选项-R,设置文件夹和其内部全部内容一样生效
-
当文档拥有执行权限,在终端显示颜色为绿色
-
x-----1
-
w-----2
-
r------4
Linux中,如果要删除一个文件,不是看文件有没有对应的权限,而是看文件所在的目录有没有写权限,如果有才可以删除
chown 修改所属用户/用户组
修改文件、文件夹所属用户、组
语法:chown [-R] [用户][:][用户组] 文件或文件夹
sudo root权限
普通用户查看自己的特殊权限
#sudo -l
比如:
itheima ALL=(ALL) NOPASSWD: ALL
在visudo内配置如上内容,可以让itheima用户,无需密码直接使用sudo
a. 配置sudo文件—#visudo,打开后使用方法和vim一致
b. root 表示用户名,用户组可以写成 “%组名”
ALL 表示允许登录的主机(地址白名单)
(ALL)表示以谁的身份执行,ALL表示root用户
ALL表示当前用户可以执行的命令,多个命令间用逗号分隔
用户组管理
用户管理
genenv
-
getenv group
,查看系统全部的用户组 -
getenv passwd
,查看系统全部的用户
env
查看系统全部的环境变量
语法:env
firewalld 防火墙服务
安装firewalld
sudo yum install firewalld -y # 在基于RPM的发行版上,如CentOS
启动:sudo systemctl start firewalld
停止:sudo systemctl stop firewalld
重启:sudo systemctl restart firewalld
启用开机自启:sudo systemctl enable firewalld
禁用开机自启:sudo systemctl disable firewalld
查看firewalld 状态
使用systemctl:sudo systemctl status firewalld
使用firewall-cmd:sudo firewall-cmd --state
查看开放的端口
sudo firewall-cmd --zone=public --list-ports
其他配置
允许特定IP访问:sudo firewall-cmd --permanent --zone=public --add-source=192.168.1.1
拒绝所有数据包(进入紧急状态):sudo firewall-cmd --panic-on
取消拒绝状态:sudo firewall-cmd --panic-off
查看规则的命令
#iptables -L -n
含义:
-L:表示列出规则
-n:表示将单词表达形式改成数字形式显示
添加规则之后要进行保存
#/etc/sysconfig/iptables save
执行问题
当前目录下有network文件,但执行#network restart,系统提示找不到命令。
系统认为该文件是可执行程序,会去环境变量中进行查找。
但该文件在环境变量中实际不存在
要执行当前目录下的文件正确命令为#./network restart
rpm 管理
对Linux上的软件包进行对应管理操作:查询、卸载、安装
1.查询
#rpm -qa | grep 关键词
-q 查询 query
-a all
2.卸载
#rpm -e 软件名
卸载apache,服务名为httpd,apache有其他依赖,无法直接删除
直接卸载:
#rpm -e httpd --nodeps(无视依赖,直接卸载)
3.安装
先找到软件的安装包:官网或镜像文件
以光盘文件为例,查看块状设备信息:
#lsblk (list block devices) 查看块状设备(光盘、优盘)信息
挂载点类似于windows下盘符
扩展:光盘的挂载与解挂
a.解挂操作
语法:#umount 当前设备的挂载点(路径)
此时相当于U盘在电脑上弹出了,但没有拔出来
b.挂载光盘
语法:#mount 设备的原始地址 要挂载的位置路径
设备原始地址:/dev,可根据大小确定具体name值,组成原始路径如 /dev/sr0
要挂载的位置路径:一般再 /mnt 目录下
安装软件的命令:#rpm -ivh 软件包的完整名称
-i install
-v 显示进度条
-h 以井号显示进度条
cron/crontab 计划任务
作用:24小时值守
语法:#crontab 选项
-l list,列出指定用户的计划任务列表
-e edit,编辑指定用户的计划任务列表
-u user,指定的用户名,如不指定,则表示当前用户
-r remove,删除指定用户的计划任务列表
1.列出
2.编辑计划任务
shell入门
注释是——#
shell脚本中,纯数字不用引起来,数字字母混合的或者是纯字母的,需要引起来。
变量的定义与使用
在一个脚本周期内可以发生改变的量就是变量
变量:先定义后使用
定义形如:class_name=“yunwe”
变量名的等号左右不能有空格
使用形如:echo $ classname
变量就是由2部分组成,一个是变量名(左边),另外一部分是变量的值(右边)
变量名和变量值是使用和被使用关系;
在使用变量的时候一定需要在变量名前面添加一个$符号,该要求在其他语言中也存在的(例如 php)。
变量命名同C语言:只能使用字母,数字,下划线,且数字不能做开头。
不可使用bash中的关键字
练习
- 快速删除命令行中光标前后的内容
前:ctrl + u 后:CTRL + k - 删除/temp下所有A开头的文件
#rm -f /temp/A* - 把/etc/passwd备份到/tmp目录下
#cp /etc/passwd /tmp - 查看系统中最后创建的三个用户
#tail -3 /etc/passwd - 统计当前系统中一共有多少账户
#wc -l /etc/passwd
#cat /etc/passwd | wc -l