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 delay][q][c][S][s][i][n][b] 实时显示process的动态

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

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

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

结束监控快捷键:q

ps命令

ps[options][--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][-rkhncfF]time[message] 关机

shutdown 不同版本有所差异

shutdown -h now 立马关机

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

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

shutdown -c 取消当前关机操作

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

reboot 立马重启

5.系统管理的其他命令

who命令

who -[husfV][user] 显示当前登录系统的用户

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}

给数组的元素赋值

数组名[索引]=值 arr[0]=1

获取元素

${数组名[下标]} ${arr[0]}

获取长度

${#数组名[*]} ${#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函数

相关推荐
光芒再现dev11 分钟前
已解决,部署GPTSoVITS报错‘AsyncRequest‘ object has no attribute ‘_json_response_data‘
运维·python·gpt·语言模型·自然语言处理
AndyFrank24 分钟前
mac crontab 不能使用问题简记
linux·运维·macos
筱源源40 分钟前
Kafka-linux环境部署
linux·kafka
EricWang13581 小时前
[OS] 项目三-2-proc.c: exit(int status)
服务器·c语言·前端
成都古河云1 小时前
智慧场馆:安全、节能与智能化管理的未来
大数据·运维·人工智能·安全·智慧城市
算法与编程之美1 小时前
文件的写入与读取
linux·运维·服务器
xianwu5432 小时前
反向代理模块
linux·开发语言·网络·git
Amelio_Ming2 小时前
Permissions 0755 for ‘/etc/ssh/ssh_host_rsa_key‘ are too open.问题解决
linux·运维·ssh
心灵彼岸-诗和远方2 小时前
Devops业务价值流:软件研发最佳实践
运维·产品经理·devops
JuiceFS2 小时前
好未来:多云环境下基于 JuiceFS 建设低运维模型仓库
运维·云原生