Linux命令

Linux命令

 次点击
690 分钟阅读

Linux基础

Linux目录结构

Linux的目录结构是一个树形结构

Windows系统可以有很多盘符,但Linux没有盘符这个概念,只有一个根目录/,所有文件都在根目录下面

路径描述方式

Linux系统中,路径之间的层级关系使用/表示,windows系统中使用\表示

 /usr/local/hello.txt
 # 注意,开头的/表示根目录,后续的/表示层级关系

课后练习

 # 在根目录下有一个文件夹test,文件夹内有一个文件hello.txt
 /test/hello.txt
 # 在根目录下有一个文件hello.txt
 /hello.txt
 # 在根目录下有一个文件夹hello,在hello文件夹内还有一个文件夹world,world文件夹内有一个文件test.txt
 /hello/world/test.txt

当前工作目录

当前登录用户的HOME目录为当前工作目录。

Linux命令基础

什么是命令、命令行

命令行:即Linux终端(Terminal)。是一种 命令提示符界面,以纯字符的形式操作系统,可以使用各种字符化命令对系统发出操作指令

命令:即Linux程序。一个命令就是一个Linux的程序,命令没有图形化界面,可以在命令行(终端)中提供字符化的反馈。

Linux命令基础格式

 command [-options] [parameter]
 # command:命令本身
 # -options:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节
 # parameter:[可选,非必填]命令的参数,多数用于命令的指向目标等
 # 语法中的[]代表可选的意思
 ​
 # 示例
 ls -l /home/hello 
 # ls是命令本身,-l是选项,/home/hello是参数,意思是以列表的形式显示/home/hello中的内容
 cp -r test1 test2
 # cp本身是命令,-r是选项,test1和test2是参数,意思是复制文件夹test1成为test2

相对路径和绝对路径

绝对路径以根目录为起点,路径描述以/开头

相对路径以当前目录为起点,路径描述无需/开头

特殊路径符:.表示当前目录、..表示上一级目录、~表示HOME目录

Linux命令

ls命令

ls [-a -l -h] [linux路径]
# -a表示all,即列出全部文件
# -l表示以列表的形式展示内容并展示更多信息
# -h表示以易于阅读的形式列出文件大小

cd切换工作目录

cd [linux路径]
# cd命令无需选项,只有参数,表示要切换到哪个路径下面
# cd命令直接执行,不写参数,表示回到用户的HOME目录

pwd查看当前工作目录

pwd
# pwd命令,无参数,无选项,直接输入pwd即可

mkdir创建目录命令

mkdir [-p] linux路径
# 参数必填,表示linux路径,即要创建文件夹的路径,相对路径或绝对路径都可
# -p选项可选,表示自动创建不存在的父目录,适用于连续创建多层级的目录
# 注意:创建文件夹需要修改权限,请确保操作均在HOME目录内,不要在HOME目录外操作,涉及到权限问题,HOME外无法创建成功

touch创建文件

touch linux路径
# touch命令无选项,参数必填,表示要创建的文件的路径,相对、绝对等都可以

cat查看文件

cat linux路径
# cat命令无选项,参数必填,表示被查看的文件的路径

more查看文件

不同:cat命令将内容全部展现出来,more支持翻页,如果内容过多可以一页一页的查看

more linux路径
# 没有选项,参数必填
# 在查看的过程中,使用空格进行翻页,使用q退出查看

cp复制文件

cp [-r] 参数1 参数2
# -r参数可选,用于复制文件夹使用,表示递归
# 参数1填写linux路径 表示被复制的文件或文件夹
# 参数2填写linux路径 表示要复制去的地方

mv移动文件

mv 参数1 参数2
# 参数1 linux路径 表示要被移动的文件或文件夹
# 参数2 linux路径 表示要移动去的地方 如果目标不存在则进行改名 确保目标存在

rm删除文件

rm [-r -f] 参数1 参数2 ... 参数N
# -r选项用于删除文件夹
# -f表示强制删除
# 参数1等等表示要删除的文件夹或者文件 按照空格隔开

rm支持通配符*来做模糊匹配

test*表示匹配任何以test开头的内容

*test表示匹配任何以test结尾的内容

*test*表示匹配任何包含test的内容

rm是一个非常危险的命令,特别是处于root用户的时候,请谨慎使用

which查找命令文件

which 要查找的命令
# 无选项,参数必填,填入想要查找到的命令运行后得到该命令所在的位置

find查找文件

# 按文件名查找文件
find 起始路径 -name "被查找文件名"
# 按文件名在指定起始路径中查找文件
# find命令也可以使用通配符*进行模糊查找

# 按文件大小查找文件
find 起始路径 -size +|-n[kMG]
# +、-代表大于、小于
# n代表大小数字
# k代表kb、M代表MB、G代表GB

# 示例
# 查找小于10kb的文件
find / -size -10k
# 查找大于100MB的文件
find / -size +100M
# 查找大于1G的文件
find / -size +1G

grep过滤

grep [-n] 关键字 文件路径
# 选项-n 表示在结果中显示匹配的行号
# 参数关键字必填,表示过滤的关键字,带有空格或者其他特殊符号建议使用""将关键字包起来
# 参数文件路径必填,表示要过滤内容的文件路径,可作为内容输入端口
# grep命令可以从文件中通过关键字过滤行

wc数量统计

wc [-c -m -l -w] 文件路径
# 选项-c统计bytes数量
# 选项-m统计字符数量
# 选项-l统计行数
# 选项-w统计单词数量
# 参数文件路径必填

|管道符

管道符的含义是将管道符左边命令的结果作为右边命令的输入

echo输出

echo "输出内容"
# 参数必填,表示输出的内容,复杂内容可用""包起来

>和>>重定向符

>表示将左侧命令的结果,覆盖写入符号右侧指定的文件中

>>表示将左侧命令的结果,追加写入符号右侧指定的文件中

tail查看

使用tail命令可以查看文件尾部内容,跟踪文件最新更改

tail [-f -num] 文件路径
# 参数必填,表示被追踪的文件路径
# 选项-f表示持续跟踪
# 选项-num表示查看尾部多少行,默认10行

vi编辑器

vi是命令行下编辑文本文件的绝佳选择

vimvi的加强版本

vi 文件路径
vim 文件路径
# 如果文件路径表示文件不存在,那么此命令用于编辑新文件
# 如果文件路径表示文件存在,那么此命令用于编辑已有文件

vi的三种工作模式

  1. 命令模式(Command mode)

    命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。此模式下,不能自由进行文本编辑

  2. 输入模式(Insert mode)

    也就是所谓的编辑模式、插入模式。此模式下,可以对文件内容进行自由编辑

  3. 底线命令模式(Last line mode)

    :开始,通常用于文件的保存、退出等等

命令模式快捷键

模式

命令

描述

命令模式

i

在当前光标位置进入输入模式

命令模式

a

在当前光标位置之后进入输入模式

命令模式

I

在当前行的开头进入输入模式

命令模式

A

在当前行的结尾进入输入模式

命令模式

o

在当前光标下一行进入输入模式

命令模式

O

在当前光标上一行进入输入模式

输入模式

esc

回到命令模式

命令模式

上,k键

向上移动光标

命令模式

下,j键

向下移动光标

命令模式

左,h键

向左移动光标

命令模式

右,l键

向右移动光标

命令模式

数字0

移动光标到当前行的开头

命令模式

$

移动光标到当前行的结尾

命令模式

PgUp

向上翻页

命令模式

PgDn

向下翻页

命令模式

/

进入搜索模式

命令模式

n

向下继续搜索

命令模式

N

向上继续搜索

命令模式

dd

删除光标所在行的内容

命令模式

ndd

n是数字,表示删除当前光标向下n行

命令模式

yy

复制当前行

命令模式

nyy

n是数字,复制当前行和下面的n行

命令模式

p

粘贴复制的内容

命令模式

u

撤销修改

命令模式

ctrl+r

反向撤销修改

命令模式

gg

跳到首行

命令模式

G

跳到行尾

命令模式

dG

从当前行开始,向下全部删除

命令模式

dgg

从当前行开始,向上全部删除

命令模式

d$

从当前光标开始,删除到本行的结尾

命令模式

d0

从当前贯标开始,删除到本行的开头

底线命令模式

:wq

保存并退出

底线命令模式

:q

仅退出

底线命令模式

:q!

强制退出

底线命令模式

:w

仅保存

底线命令模式

:set nu

显示行号

底线命令模式

:set paste

设置粘贴模式

linux用户

root用户

linux系统中,拥有最大权限的用户名为root(超级管理员)

root用户拥有最大的系统操作权限,而普通用户在许多地方的权限都是受限的

普通用户的权限,一般在HOME目录是不受限的,一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限

su切换用户

 su [-] 用户名
 # 选项-表示是否在切换用户后加载环境变量,建议带上
 # 参数表示要切换到的用户,也可以省略,省略后表示切换到root用户
 # 切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键ctrl+d

使用普通用户切换到其他用户时需要输入密码

使用root用户切换到其他用户是不需要输入密码,可以直接切换

sudo临时授权

当我们得知root密码时,可以通过su命令切换到root以获得最大权限,但是我们不建议长期使用root用户,避免带来系统破坏

我们可以使用sudo命令为普通的命令授权,临时以root命令执行

sudo 其他命令
# 在其他命令前带上sudo命令,即可为这一条命令临时赋予root权限
# 但不是所有用户都有权利使用sudo命令,我们需要为普通用户配置sudo认证

为普通用户配置sudo认证

  1. 切换到root用户,执行visudo命令,会自动通过vi编辑器打开/etc/sudoers

  2. 在文件的最后添加用户名 ALL=(ALL) NOPASSWORD:ALL

    NOPASSWORD表示使用sudo命令时无需输入密码

  3. 切换回普通用户即可

用户、用户组

linux系统中可以配置多个用户、用户组,且用户可以加入到多个用户组中

linux系统中关于权限的管控有两个级别:针对用户的权限控制和针对用户组的权限控制。比如针对某文件,可以控制用户的权限,也可以控制用户组的权限

用户组管理

groupadd 用户组名	# 创建用户组
groupdel 用户组名	# 删除用户组

用户管理

# 创建用户
useradd [-g -d] 用户名
# 选项-g表示指定用户的组,不指定则默认创建同名组并加入,-g指定的组需要已存在,如已存在同名组,则必须使用-g
# 选项-d表示指定用户的HOME路径,不指定则默认在/home/用户名

# 删除用户
userdel [-r] 用户名
# 选项-r表示删除用户的HOME目录,不使用-r删除时保留HOME目录

# 查看用户所在组
id 用户名
# 参数用户名表示被查看的用户,如果不提供则查看自身

# 修改用户所属组
usermod -aG 用户组 用户名
# 参数必填,将指定的用户添加到指定的用户组中

# 查看用户
getent passed
# 可以查看系统中有哪些用户
# 结果中共有7份信息,分别为:
# 用户名:密码(x):用户ID:组ID:描述信息:HOME目录:执行终端(默认bash)

# 查看用户组
getent group
# 可以查看系统中有哪些用户组
# 结果中共有3份信息,分别为:
# 组名称:组认证(X):组ID

权限控制

rwx

r表示读权限

w表示写权限

x表示执行权限

针对文件、文件夹的不同,rwx的含义有细微的差别

  • r针对文件可以查看文件内容,针对文件夹可以查看文件夹内容(例如ls

  • w针对文件表示可以修改此文件,针对文件夹表示可以在文件夹内进行创建、删除、改名等操作

  • x针对文件表示可以将文件作为程序执行,针对文件夹表示可以更改工作目录到此文件夹,例如cd

权限的数字序号

权限可以用3位数字来表示,第一位表示用户权限,第二位表示用户组权限,第三位表示其他用户权限

数字的细节如下:r记为4w记为2x记为1

数字序号

代表权限

0

无任何权限,即---

1

仅有x权限,即--x

2

仅有w权限,即-w-

3

w权限和x权限,即-wx

4

仅有r权限,即r--

5

r权限和x权限,即r-x

6

r权限和w权限,即rw-

7

有全部权限,即rwx

chmod修改权限

我们可以使用chmod命令修改文件、文件夹的权限信息

注意:只有文件、文件夹的所属用户或root用户可以修改

chmod [-R] 权限 文件或文件夹
# 选项-R表示对文件夹内的全部内容应用同样的操作

chmod u=rwx,g=rx,o=x a.txt
# 将文件权限修改为rwxr-x--x
# 其中u代表user所属用户权限,g代表group所属用户组权限,o代表other其他用户权限

chown修改权限

使用chown命令可以修改文件、文件夹所属的用户和用户组

普通用户无法修改所属为其他用户或用户组,所以此命令只适用于root用户执行

chown [-R] [用户][:][用户组] 文件或文件夹
# 选项-R表示对文件夹内的所有内容应用相同规则
# 用户选项修改所属用户
# 用户组选项修改所属用户组
# :用于分隔用户和用户组

chown root a.txt # 将a.txt的所属用户修改为root
chown :root a.txt # 将a.txt的所属用户组修改为root

linux实用

实用小技巧

  1. 强制停止:Ctrl + c

  2. 退出或登出:Ctrl + d

  3. 查看历史命令:history

  4. 历史命令搜索:Ctrl + r

  5. 光标跳到命令开头:Ctrl + a

  6. 光标跳到命令结尾:Ctrl + e

  7. 光标向左跳一个单词:Ctrl + 左箭头

  8. 光标向右跳一个单词:Ctrl + 右箭头

  9. 清屏:Ctrl + lclear命令

软件安装

yum

yumRPM包软件管理器,用于自动化安装配置linux软件,并可以自动解决依赖问题

yum [-y] [install | remove | search] 软件名称
# 选项-y表示自动确认,无需手动确认安装或卸载过程
# install:安装	remove:卸载	search:搜索

yum命令需要root权限,且需要联网

apt命令-扩展

apt [-y] [install | remove | search] 软件名称
# 使用方法与yum一致

systemctl命令

linux中很多软件均支持使用systemctl命令控制:启动、停止、开机自启等

能够被systemctl命令控制的软件一般也称之为服务

systemctl start | stop | status | enable | disable 服务名

系统的内置服务较多,比如:

  • NetworkManager主网络服务

  • network副网络服务

  • firewalld防火墙服务

  • sshdssh服务

软链接

在系统中创建软连接可以将文件、文件夹链接到其他位置,类似于快捷方式

ln -s 参数1 参数2
# -s表示创建软链接
# 参数1表示被链接的文件或文件夹
# 参数2表示要链接去的目的地

日期、时区

date查看时间

date [-d] [+格式化字符串]
# -d按照给定的字符串显示日期,一般用于日期计算
# 格式化字符串:通过特定的字符串标记来控制显示的日期格式
# 示例
date -d "+1 year +2 day" +"%Y-%m-%d %H:%M:%S"

格式化字符串

含义

%Y

%y

年的后两位数字

%m

月份

%d

%H

小时

%M

分钟

%S

%s

时间戳

修改linux时区

使用root权限,执行如下命令,将linux时区东八区时区

rm -f /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

IP地址和主机名

IP地址

每一台联网的电脑都会有一个IP地址用于和其他电脑进行通讯

IP地址使用ifconfig命令查看本机ip地址

主机名

每一台电脑除了对外联络地址(ip地址)之外,也可以有一个名字,称之为主机名

hostname	# 查看主机名
hostnamectl set-hostname 主机名	# 修改主机名

虚拟机配置固定IP

当前我们虚拟机的Linux系统,其IP地址都是通过DHCP获取的

DHCP:动态获取IP地址,即每次重启设备后都会获取一次,可能会导致IP地址频繁变更

  1. VMware中配置网络

  2. 输入命令sudo ^Cm /etc/sysconfig/network-scripts/ifcfg-ens33

  3. 将文件中的BOOTPROTO="DHCP"设置为BOOTPROTO="static"

  4. 向文件尾部追加以下内容:

    IPADDR="IP地址"
    NETMASK="子网掩码"
    GATEWAY="网关"
    DNS1="DNS服务器"
  5. 重启网络服务systemctl restart network

网络传输

ping命令

可以通过ping命令检查指定的网络服务器是否是可联通的状态

ping [-c num] ip或主机名
# 选项-c表示检查的次数,不使用则无限次持续检查
# 参数ip或主机名表示被检查的服务器的IP地址或主机名

wget命令

wget是非交互式的下载器,可以在命令行内下载网络文件

wget [-b] url
# 选项-b表示后台下载,会将日志写入到当前工作目录的wget-log文件中
# 参数url表示下载链接

curl命令

curl可以发送http网络请求,可用于下载文件、获取信息等

curl [-O] url
# 选项-O表示用于下载文件,当url式下载链接时,可以使用此选项保存文件
# 参数url表示要发起请求的网络地址

端口

端口是设备与外界通讯交流的出入口,可以分为物理端口和虚拟端口两类

sudo yum -y install nmap	# 安装nmap
nmap ip地址	# 对指定IP地址所开放的端口进行嗅探
netstat -anp | grep 端口号	#查看端口占用情况

端口的划分:

  • 公认端口:1~1023,用于系统内置或常用知名软件绑定

  • 注册端口:1024~49151,用于松散绑定使用(用户自定义)

  • 动态端口:49152~65535,用户临时使用(多用于出口)

进程管理

程序运行在操作系统中,是被操作系统所管理的,为管理运行的程序,每一个程序运行时,便被操作系统注册为系统中的一个进程。并会为每一个进程都分配一个独有的:进程ID(进程号)

查看进程

ps [-e -f]
# 选项-e显示出所有进程
# 选项-f以完全格式化的形式展示信息

关闭进程

kill [-9] 进程ID
# 选项-9表示强制关闭进程,不使用此选项会向进程发送信号要求其关闭,但是否关闭看进程自身的处理机制

主机状态监控

查看系统资源占用

可以通过top命令查看CPU、内存使用情况,类似于Windows的任务管理器。默认每5秒刷新一次,按q或使用Ctrl + c退出

top命令内容详解

top [-p] [-d] [-c] [-n] [-b] [-i] [-u]
# 选项-p表示只显示某个进程的信息
# 选项-d表示设置刷新时间,默认5s
# 选项-c表示显示产生进程的完整命令,默认是进程名
# 选项-n表示指定刷新次数
# 选项-b表示以非交互式全屏模式运行
# 选项-i表示不显示任何闲置或无用进程
# 选项-u表示查找特定用户启动的进程

  • 第一行

    top:命令名称 08:24:44:当前系统时间 ip 57 min:启动了57分钟 3 users:三个用户登录 load:1、5、15分钟负载

  • 第二行

    Tasks:236个进程 1 running:1个子进程在运行 235 sleeping:235个进程睡眠 0 stopped:0个停止进程 0 zombie:0个僵尸进程

  • 第三行

    %Cpu(s)CPU使用率 us:用户CPU使用率 sy:系统CPU使用率 ni:高优先级进程占用CPU时间百分比 id:空闲CPUwaIO等待CPU占用率 hiCPU硬件中断率 siCPU软件中断率 st:强制等待CPU占用率

  • 第四、五行

    Kid Mem:物理内存 Kib Swap:虚拟内存(交换空间) total:总量 free:空闲 used:使用 buff/cachebuffcache占用

  • PID:进程id

  • USER:进程所属用户

  • PR:进程优先级,越小越高

  • NI:负值表示高优先级,正值表示低优先级

  • VIRT:进程使用的虚拟内存 单位kb

  • RES:进程使用的物理内存 单位kb

  • SHR:进程使用的共享内存 单位kb

  • S:进程状态(S:休眠 R:运行 Z:僵死状态 N:负数优先级 I:空闲状态)

  • %CPU:进程占用CPU率

  • %MEM:进程占用内存率

  • TIME+:进程使用CPU时间总计,单位10毫秒

  • COMMAND:进程的命令或名称或程序文件路径

磁盘使用信息监控

df [-h]
# 选项-h表示以更加人性化的单位显示
iostat [-x] [num] [num2]
# 选项-x表示显示更多信息
# 选项num表示刷新间隔
# 选项num2表示刷新次数

网络状态监控

sar [-n] [DEV] [num1] [num2]
# 选项-n表示查看网络	DEV表示查看网络接口
# 选项num1表示刷新间隔	num2表示查看次数

环境变量

环境变量是操作系统中在运行的时候记录一些关键性信息,用于辅助系统运行。环境变量是一种KV型结构

PATH

我们无论工作目录是什么,都能执行/usr/bin/cc这个程序,这个就是借助环境变量中PATH这个项目的值实现的

$符号

linux系统中,$符号被用于取变量的值

自行设置环境变量

临时设置:export 变量名 = 变量值

永久生效:针对当前用户生效配置在当前用户的~/.bashrc文件中,针对所有用户生效配置在系统的/etc/profile文件中

上传、下载

 sudo yum -y install lrzsz
 # 下载
 sz 文件名

压缩、解压

压缩

linux常用的两种压缩格式为:

  • .tar,称之为tarball归档文件,即简单的将文件组装到一个.tar文件内,并没有太多文件体积的减少,仅仅是简单的封装

  • .gz,也常见为.tar,.gzgzip格式压缩文件,即使用gzip压缩算法将文件压缩到一个文件内,可以极大的减少压缩或的体积

 tar [-c -v -x -f -z -C] 参数1 参数2 ... 参数n
 # -c 创建压缩文件,用于压缩模式
 # -v 显示压缩、解压过程,用于查看进度
 # -x 解压模式
 # -f 要创建的文件或要解压的文件,-f选项必须在所有选项中位置处于最后一个
 # -z gzip模式,不使用-z就是普通的tarball模式
 # -C 选择解压的目的地,用于解压模式
 ​
 # 常用组合
 tar -cvf test.tar 1.txt 2.txt 3.txt
 # 将1.txt 2.txt 3.txt压缩到test.tar文件内
 tar -zcvf test.tar.gz
  • -z选项如果使用的话,一般处于选项位第一个

  • -f选项,必须在选项位的最后一个


© 本文著作权归作者所有,未经许可不得转载使用。