Linux命令基本用法

1.用户相关命令

1.账号管理

命令 作用
useradd 添加用户
passwd 设置密码
usermod 修改用户
userdel 删除用户
su 切换用户

例:

bash 复制代码
[root@localhost ~]# useradd aaa
[root@localhost ~]# su aaa
[aaa@localhost root]$ su root
密码:
[root@localhost ~]# passwd aaa
更改用户 aaa 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# usermod
用法:usermod [选项] 登录

选项:
  -c, --comment 注释            GECOS 字段的新值
  -d, --home HOME_DIR           用户的新主目录
  -e, --expiredate EXPIRE_DATE  设定帐户过期的日期为 EXPIRE_DATE
  -f, --inactive INACTIVE       过期 INACTIVE 天数后,设定密码为失效状态
  -g, --gid GROUP               强制使用 GROUP 为新主组
  -G, --groups GROUPS           新的附加组列表 GROUPS
  -a, --append GROUP            将用户追加至上边 -G 中提到的附加组中,
                                并不从其它组中删除此用户
  -h, --help                    显示此帮助信息并推出
  -l, --login LOGIN             新的登录名称
  -L, --lock                    锁定用户帐号
  -m, --move-home               将家目录内容移至新位置 (仅于 -d 一起使用)
  -o, --non-unique              允许使用重复的(非唯一的) UID
  -p, --password PASSWORD       将加密过的密码 (PASSWORD) 设为新密码
  -R, --root CHROOT_DIR         chroot 到的目录
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -s, --shell SHELL             该用户帐号的新登录 shell
  -u, --uid UID                 用户帐号的新 UID
  -U, --unlock                  解锁用户帐号
  -v, --add-subuids FIRST-LAST  add range of subordinate uids
  -V, --del-subuids FIRST-LAST  remove range of subordinate uids
  -w, --add-subgids FIRST-LAST  add range of subordinate gids
  -W, --del-subgids FIRST-LAST  remove range of subordinate gids
  -Z, --selinux-user  SEUSER       用户账户的新 SELinux 用户映射

[root@localhost ~]# usermod -l ljb aaa
usermod: user aaa is currently used by process 3142
[root@localhost ~]# exit
[aaa@localhost root]$ exit
[root@localhost ~]# exit
[aaa@localhost root]$ exit
[root@localhost ~]# exit
[aaa@localhost root]$ exit
[root@localhost ~]# 登出

此时已全部退出需重新连接

bash 复制代码
[root@localhost ~]# usermod -l ljb aaa
[root@localhost ~]# su aaa
su: user aaa does not exist
[root@localhost ~]# su ljb
[ljb@localhost root]$ 
[ljb@localhost root]$ su root
密码:
[root@localhost ~]# userdel
用法:userdel [选项] 登录

选项:
  -f, --force                   force some actions that would fail otherwise
                                e.g. removal of user still logged in
                                or files, even if not owned by the user
  -h, --help                    显示此帮助信息并推出
  -r, --remove                  删除主目录和邮件池
  -R, --root CHROOT_DIR         chroot 到的目录
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -Z, --selinux-user            为用户删除所有的 SELinux 用户映射

[root@localhost ~]# userdel -r -f ljb
userdel: user ljb is currently used by process 3616
[root@localhost ~]# su ljb
su: user ljb does not exist

2.用户组

命令 作用
groupadd 添加用户组
groupmod 修改用户组
groups 查询用户所属组
groupdel 删除用户组
gpasswd 添加删除组成员
newgrp 改变有效组

例:

bash 复制代码
[root@localhost ~]# groupadd kaifa
[root@localhost ~]# groupmod
用法:groupmod [选项] 组

选项:
  -g, --gid GID                 将组 ID 改为 GID
  -h, --help                    显示此帮助信息并推出
  -n, --new-name NEW_GROUP      改名为 NEW_GROUP
  -o, --non-unique              允许使用重复的 GID
  -p, --password PASSWORD       将密码更改为(加密过的) PASSWORD
  -R, --root CHROOT_DIR         chroot 到的目录
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files

[root@localhost ~]# groupmod -n kaifazu kaifa
[root@localhost ~]# groups itcast
itcast : itcast wheel

[root@localhost ~]# groupdel kaifazu
[root@localhost ~]# groupadd kaifa
[root@localhost ~]# useradd user1
[root@localhost ~]# useradd user2
[root@localhost ~]# useradd user3
[root@localhost ~]# gpasswd
用法:gpasswd [选项] 组

选项:
  -a, --add USER                向组 GROUP 中添加用户 USER
  -d, --delete USER             从组 GROUP 中添加或删除用户
  -h, --help                    显示此帮助信息并推出
  -Q, --root CHROOT_DIR         要 chroot 进的目录
  -r, --delete-password         remove the GROUP's password
  -R, --restrict                向其成员限制访问组 GROUP
  -M, --members USER,...        设置组 GROUP 的成员列表
  -A, --administrators ADMIN,...        设置组的管理员列表
除非使用 -A 或 -M 选项,不能结合使用这些选项。
[root@localhost ~]# gpasswd -a user1 kaifa
正在将用户"user1"加入到"kaifa"组中
[root@localhost ~]# gpasswd -a user2 kaifa
正在将用户"user2"加入到"kaifa"组中
[root@localhost ~]# gpasswd -a user3 kaifa
正在将用户"user3"加入到"kaifa"组中
[root@localhost ~]# grep 'kaifa' /etc/group
kaifa:x:1002:user1,user2,user3

2.系统管理相关命令

日期管理

date

-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号

-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号

-u:显示GMT

--help:在线帮助

--version:显示版本信息

bash 复制代码
[root@localhost ~]# date
2023年 08月 21日 星期一 15:23:45 CST
[root@localhost ~]# date -d "2020-12-12 11:11:11"
2020年 12月 12日 星期六 11:11:11 CST
[root@localhost ~]# date --help

显示用户

logname--help--version

bash 复制代码
[root@localhost ~]# logname
root

切换用户

su user

id命令

id -g--help--version用户名称

sudo命令

sudo参数选项 提高普通用户的操作权限

bash 复制代码
[itcast@localhost root]$ id
uid=1000(itcast) gid=1000(itcast) 组=1000(itcast),10(wheel) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[itcast@localhost root]$ sudo ls
[sudo] itcast 的密码:
anaconda-ks.cfg       公共  视频  文档  音乐
initial-setup-ks.cfg  模板  图片  下载  桌面

3.进程项命令

top的命令

top-d delayqcSsinb 实时显示process的动态

top 实时显示所有的进程信息

top -c 实时显示所有的进程信息(显示完整命令)

top -p PID 实时显示指定进程的信息

结束监控快捷键:q

ps命令

psoptions--help 查看进程信息(无法实时监控,只能获取当前时刻的进程信息)

ps 显示当前正在运行的进程信息

ps -A 显示系统中生源地进程信息

ps -ef 显示系统中生源地进程信息(完整信息)

ps -u 用户名 显示指定用户的进程信息

kill命令

kill-s\<信息名称或编号\>程序 中断执行中的程序

kill-l\<信息编号\>

kill 进程 PID 杀死指定进程

kill -9 进程PID 彻底杀死指定进程

kill -9 $(ps -ef|grep 用户名) 杀死指定用户所有进程

killall -u用户名 杀死指定用户所有进程

4.关机和重启命令

shutdown命令

shutdown -t seconds-rkhncfFtimemessage 关机

shutdown 不同版本有所差异

shutdown -h now 立马关机

shutdown +1 "警告信息" 一分钟再关机,并出现警告信息

shutdown -r +1 "警告信息" 一分钟再重启,并出现警告信息

shutdown -c 取消当前关机操作

reboot -n-w-d-f-i 重启

reboot 立马重启

5.系统管理的其他命令

who命令

who -husfVuser 显示当前登录系统的用户

timedatectl命令

timedatectl 校正服务器时间,时区

timedatectl status 显示系统的当前时间和日期

timedatectl list-timezones 看查所有可用的时区

timedatectl set-timezone"Asia/Shanghai" 设置本地时区

timedatectl set-ntp false 禁用时间同步

timedatectl set-time "2023-8-24 20:58:00" 设置时间

timedatectl set-ntp true启用时间同步

clear命令

clear 清除屏幕

6.目录管理

ls命令

ls 参数选项 目录名称 列出目录里的内容

ls 显示不隐藏的文件与文件夹

ls -l 显示不隐藏的文件与文件夹的详细信息

ls -al 显示所有文件与文件夹的详细信息

pwd命令

pwd -P 查看当前所在目录

cd命令

cd相对路径或绝对路径 切换目录

cd 路径 切换目录

mkdir命令

mkdir -p 文件夹的名字 创建目录

mkdir 文件夹名 创建目录

mkdir -p aaa/bbb 创建多级目录

rmdir命令

rmdir -p 文件夹名 删除空的目录

rmdir 文件名 删除目录

rmdir -p bbb/ccc 删除ccc,如果删除完bbb是空的bbb也一起删除

rm命令

rm选项 文件/目录 删除文件或者目录

rm 文件路径 删除文件

rm -r 目录路径 删除目录和目录里面所有的内容

cp命令

cp 选项 数据源 目的地 文件复制

cp aaa/a.txt ccc 将aaa文件夹中的a.txt文件拷贝到ccc文件中

cp -r aaa/*ccc 将aaa文件夹中所有内容拷贝到ccc文件夹中

mv命令

mv 选项 数据源 目的地 改名/移动文件或文件夹

mv 数据源 目的地改名/移动

附:Linux文件基本属性

7.更改属主和属组

chgrp命令

chgrp 选项参数所属群组文件或目录... 更改属组

chgrp 选项参数--reference=\<参考文件或目录\>--version文件或目录...

chgrp -v root aaa 将aaa的属组改为root

chown命令

chown 属主名 文件名 更改属主

chown 参数选项 属主名 : 属组名 文件名 更改属主和属组

chown root aaa 将aaa的属主改为roo

chown root:root bbb 将bbb的属主和属组改为root

chown -R root:root aaa 将aaa文件夹和里面所有的属主和属组改为root

8.更改权限

chmod命令

作用:修改属主,属组,其他用户的权限

修改方式:数字方式,符号方式

数字权限

chmod 参数选项 数字权限 文件或目录

符号权限:

chmod 参数选项 符号权限 文件或目录

user 属主权限 --> u

group 属组权限 --> g

others 其他权限 --> o

全部身份 --> a

9.文件管理

touch命令

touch 参数选项 文件名 如果文件不存在就创建文件,如果存在就修改时间属性

touch a.txt 不存在就创建,存在就修改时间属性

touch a{1..10).txt (两个点) 批量创建空文件

star a.txt 查看文件的详细信息

vi/vim编辑器

vi:

只能是编辑文本内容,不能对字体,段落进行排版

不支持鼠标操作

没有菜单

只有命令

vim:

是从vi发展出来的一个文本编辑器

代码补全,编译及错误跳转等方便编程的功能特别丰富

vi/vim三种模式

打开和新建文件

vim 文件名 如果文件已经存在,会直接打开该文件 / 如果文件不存在,打开一个临时文件,在保存且退出后,就会新建一个文件

进入编辑模式

进入末行模式保存文件

:q 当vim进入文件没有对文件内容做任何操作可以按"q"退出

:q! 当vim进入文件对文件内容有操作但不想保存退出

:wq 正常保存退出

:wq! 强行保存退出

10.文件查看

|--------------|---------------|
| 命令 | 功能 |
| cat 文件名 | 看查小文件内容 |
| less -N 文件名 | 分屏显示大文件内容 |
| head -n 文件名 | 看查文件的前一部分 |
| tail -n 文件名 | 看查文件的最后一部分 |
| grep 关键字 文件名 | 根据关键字搜索文本文件内容 |

cat命令

cat 参数选项 文件 查看小型文件

cat a.txt 查看a.txt的内容

cat -n a.txt 查看a.txt的内容(加入行号)

less命令

less a.txt 看查a.txt的内容

less -N a.txt 看查a.txt的内容(加入行号)

注:q键退出

tail命令

tail 参数选项 文件 查看文件的最后部分

tali -3 big.txt 显示文件最后3行

tail -f big.txt 动态显示最后10行

tail -4f big.txt 动态显示最后4行

tail -n +2 big.txt 显示文件a.txt的内容,从第2行至文件末尾

tail -c 45 big.txt 显示最后一些字符

head命令

head 参数选项 文件 查看文件的前一部分

grep命令

grep 参数选项 关键字 文件 根据关键词,搜索文本文件内容

grep 关键字 small.txt 把包含关键字的行展示出来

grep -n 关键字 small.txt 把包含关键字的行展示出来且加上行号

grep -i 关键字 small.txt 把包含关键字的行展示出来,搜索时忽略大小写

grep -v 关键字 small.txt 把不包含关键字的行展示出来

ps -ef | grep 关键字 查找指定的进程信息,包含grep进程

ps -ef | grep 关键字 | grep -v "grep" 查找指定的进程信息,不包含grep进程

ps -ef|grep -c sshd 查找进程个数

vim定位行

vim 文件名+行数 查看文件并定位到具体行数

vim异常处理

如果vim异常退出,在磁盘上可能会保存有交换文件

删除 .swp文件(rm -r -f .xxx.swp)

echo命令

echo 字符串 展示文本

echo 字符串 > 文件名 将字符串写到文件中(覆盖文件中内容)

echo 字符串 >> 文件名 将字符串写到文件中(不覆盖文件中内容)

cat 不存在的目录 &>> error.log 将命令的失败结构追加error.log文件的后面

11.awk语法

AWK是一种处理文本文件的语言,是一个强大的文本分析工具

过滤和切割

计算

软连接

因为某些文件和目录的路径很深,所以需要增加软连接(快捷方式)

ln -s 目标文件路径 快捷方式路径

find命令(查找)

fing 参数选项 <指定目录> <指定条件> <指定内容> 在指定目录下查找文件

12.压缩命令

gzip命令

gzip 参数选项 文件 压缩文件

gzip a.txt 压缩文件

gzip * 压缩当前目录下所有文件

gzip dv* 解压文件并列出详细信息

gunzip命令

gzip 参数选项 文件 解压文件

gunzip 压缩文件 解压

tar命令

tar必要参数 选择参数 文件 打包,压缩和解压(文件/文件夹)

注意 :tar本身不具有压缩功能,他是调用压缩功能实现的

tar -cvf 打包文件名 文件名 打包文件并指定打包之后的文件名(仅打包不压缩)

tar -zcvf 压缩文件名 文件名/文件夹名 压缩文件或者文件夹并指定压缩文件名(打包压缩)

tar -ztvf 压缩文件名 看查压缩文件中有哪些文件

tar -zxvf 压缩文件名 压缩

zip文件

zip 必要参数 选择参数 文件 压缩

注意:zip是个使用广泛的压缩文件,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件

zip -q -r 压缩文件名 文件/文件夹 压缩

unzip命令

unzip 必要参数 选择参数 文件 解压

注意:解压".zip"扩展名的压缩文件

unzip -l 压缩文件名 查看这个压缩文件中有多少内容

unzip -d 指定文件夹 压缩文件 解压

bzip2命令

bzip2 参数选项 文件 压缩

注意 :使用新的压缩算法,压缩后的文件比原来的要小 ,但是花费的时间边长

bzip2 a.txt 压缩

bunzip2命令

bunzip2 参数选项 文件 解压

bunzip2 -v a.bz2 解压并显示详细信息

13.网络管理

ifconfig命令

ifconfig 参数选项 显示或者配置网络设备的命令

ifconfig 显示激活的网卡信息

ifconfig ens37 down 关闭网卡

ifconfig ens37 up 启动网卡

ifconfig ens37 192.168.23.199 配置ip地址

ifconfig ens37 192.168.23.133 netmask 255.255.255.0 配置ip地址和子网掩码

ping命令

ping 参数选项 检测是否与主机连通

ping www.baidu.com 检测是否与百度连通

ping -c 2 www.baidu.com 指定接收包的次数

netstat命令

netstat 参数选项 显示网络状态

netstat -a 显示详细的连接状况

netstat -i 显示网卡列表

14.磁盘管理

lsblk命令

lsblk 参数选项 列出硬盘的使用情况

理解为:list block的英文缩写

lsblk 列出硬盘的使用情况

lsblk -f 显示系统信息

df命令

df 参数选项 显示目前在Linux系统上,硬盘的使用情况

df 显示整个硬盘使用情况

df 文件夹 显示文件夹使用情况

df -total 显示所有的信息

df -h 将结果变成KB,MB,GB形式展示,利于阅读

mount命令

为u盘分配一个挂载点叫挂载

解除文件夹与优盘的关系叫卸载

mount 参数选项 目录 用于挂载Linux系统外的设备

注意:"挂载点"的目录需要以下几个需求

目录事先存在,可以用mkdir命令新建目录

挂载点目录不可被其他进程使用到

挂载点下原有文件将被隐藏

mkdir 文件夹 创建文件夹(也是创建一个挂载点)

mount -t auto/dev/cdrom 文件夹 开始挂载

umount 文件夹 卸载

yum

在linux中,如果我们想要查找,安装,下载或者卸载另外的软件,就需要yum来进行操作

yum -y install tree 安装tree

tree 执行tree,展示当前目录结构

yum remove tree 移除tree

yum list tom* 找出以tom为开头的软件名称

更改yum源

yum install -y wget 安装下载工具wget

wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 下载阿里云的Centos-7.repo文件

yum clean all 清理之前的缓存,并重新加载yum

yum makecache 建立一个缓存文件

yum search tomcat 查找软件,验证阿里云的yum源是否可以正常使用

yum与rpm的区别

rpm只能安装已经下载到本地机器上的rpm包

yum能在线下载并安装rpm包,能更新系统,且还能自动处理包与包之间的依赖问题,这是rpm工具所不具备的

15.shell

1.shell概述

在计算机科学中,shell就是一个命令解释器

shell是位于操作系统和应用程序之间的,是他们二者最主要的接口

shell负责把应用程序的输入命令信息解释给操作系统,将操作系统指令处理后的结构解释给应用程序

shell就是在操作系统和应用程序之间的一个命令翻译工具

shell的使用方式

手工方式

手工敲击键盘,直接输入命令,按Enter后

执行命令,显示命令执行的结果

重点:逐行输入命令,逐行进行确认执行

脚本方式

我们把手工执行的命令,写到一个文件中,然后运行这个文件,达到执行命令的效果

这个文件就叫做脚本文件

2.编写第一个shell脚本

新建一个文件后缀名为sh

书写内容

执行

3.shell注释

单行注释

多行注释

注:字符大多用!

3.shell变量

1.普通变量

方式一

变量名=变量值 变量必须是一个整体,中间没有特殊字符

方式二

变量名='变量值' 单引号中的内容,原样赋值

方式三

变量名="变量值" 如果双引号里面有其他变量,会把变量的结果拼接,然后赋值

命令变量

方式一

变量名=`命令` 注意:`是反引号

方式二

变量名=$(命令)

执行流程:1.执行`或者$()范围内的命令 2.将命令执行后的结果,赋值给变量

2.使用变量

方式一

$变量名 非标准写法,图省事

方式二

"$变量名" 非标准写法,图省事

方式三

${变量名} 在双引号里面要使用变量的值

方式四

"${变量名}" 标准使用方式

3.只读变量

readonly 变量名

4.删除变量

unset 变量名

4.shell数组

定义数组

数组名={值1 值2 ... 值n} arr={1 2 3 4 5}

给数组的元素赋值

数组名索引=值 arr0=1

获取元素

{数组名\[下标\]} {arr0}

获取长度

{#数组名\[\*\]} {#arr\*}

{#数组名\[@\]} {#arr@}

例:

5.shell算数运算符

|---------|--------|-----------------|
| 运算符 | 说明 | 举例 |
| + | 加法 | expr a + b |
| - | 减法 | expr a - b |
| * | 乘法 | expr a \\\* b |
| / | 除法 | expr a / b |
| % | 取余 | expr a % b |
| = | 赋值 | a=$b 将把变量b的值赋给a |
| ++ / -- | 自增,自减 | ((a++)) |

注意点:

1.原生的bash不支持简单的数学运算。可以通过其他命令实现 .expr

2.表达式和运算符之间要有空格

3.完整的表达式要被反引号包含

例: `expr 2 + 2`

6.字符串运算符

运算符 说明 举例
= 检测两个字符串是否相等,相等返回true $a = $b
!= 检测两个字符串是否不相等,不相等返回true $a != $b
-z 检测字符串长度是否为0,为0返回true -z $a
-n 检测字符串长度是否不为0,不为0返回true -n "$a"
$ 检测字符串是否为空,不为空返回true $a

注:方括号内前后都要有空格

7.关系运算符

关系运算符只支持数字,不支持字符串,除非字符串的值是数字

运算符 说明 举例
-eq (equals) 检测两个数是否相等,相等返回true $a -eq $b
-ne (not equals) 检测两个数是否不相等,不相等返回true $a -ne $b
-gt (greater than) 检测左边的数是否大于右边的,如果是,则返回true $a -ge $b
-lt (less than) 检测左边的数是否小于右边的,如果是,则返回true $a -lt $b
-ge (greater equals) 检测左边的数是否大于等于右边的,如果是,则返回true $a -ge $b
-le (less equals) 检测左边的数是否小于等于右边的,如果是,则返回true $a -le $b

8.shell布尔运算符

运算符 说明 举例
! 取反运算 !false 返回true
-o (or) 或运算,有一个表达式为true则返回true $a -lt 20 -o $b -gt 100
-a (and) 与运算,两个表达式都为true才返回true $a -lt 20 -a $b -gt 100

9.shell逻辑运算符

运算符 说明 举例
&& 逻辑的AND \[ true \&\& true ] 返回true
|| 逻辑的OR \[ false || false ] 返回false

10.shell判断语句

11.shell选择语句

12.shell循环语句

for循环

while循环

13.shell函数

相关推荐
码农小白AI6 小时前
AI报告审核加速融入自动化实验室:IACheck破解智能设备时代报告管理新挑战
运维·人工智能·自动化
utf8mb4安全女神6 小时前
克隆的虚拟机怎么更改ip地址
运维
赵民勇6 小时前
fuse-overlayfs命令详解
linux·容器
tedcloud1236 小时前
DeepSeek-TUI部署教程:打造CLI AI助手环境
服务器·人工智能·word·excel·dreamweaver
sulikey6 小时前
个人Linux操作系统学习笔记6 - 操作系统与进程初识
linux·笔记·学习·操作系统·进程
无情的西瓜皮7 小时前
MCP协议实战:用Python从零搭建一个AI Agent工具服务器(保姆级教程)
服务器·人工智能·python·mcp
万能的知了7 小时前
服务器托管 vs 云主机 vs 裸金属:一个决策故事
运维·服务器·云计算
杨云龙UP7 小时前
Oracle RAC / ODA 生产环境指定 PDB 启动 SOP
linux·运维·数据库·oracle
Shingmc38 小时前
【Linux】多路转接之select
linux·网络
luweis8 小时前
企智孪生 ETA(3.3 认知算法层:ETA 的思维内核 3.4 基础架构:算力与弹性)【浙江联保网络 卢伟舜】
大数据·运维·线性代数·ai·矩阵·学习方法