Linux命令详解(4)

在linux命令详解(1)
linux命令详解(2)
linux命令详解(3)
基础上添加一些新的指令,后续可以查阅Linux命令详解(5)
备注:快捷查看指令 ctrl+f 进行搜索会直接定位到需要的知识点和命令讲解,后续的会比前面的更详细以及对之前的内容修改和更新补充[以后续更新的为最新](如有不正确的地方欢迎各位小伙伴在评论区提意见,小编会及时修改)

基本指令操作

# 查看远端Linux的ip地址ip a  或者  ip addr
# 清屏clear
# 查看当前系统时间date
#关机poweroff  或者  init 0
#重启reboot  或者  init 6
#修改主机名hostnamectl set-hostname 新名字
#列出指定文件夹下的内容ls
语法:ls [参数] 路径
注意:参数可选
参数介绍:-a 列出指定路径下的内容,包含隐藏文件-l 列出指定路径下内容的详细信息[例如:权限,时间,所属组,所属用户]-h 以人类可阅读的方式列出文件夹大小[一般与 -l 参数连用]--full-time 以完整的时间格式输出 [不能与其他参数连用]-t 根据最后一次修改的时间排序 展示内容[由新到旧]-F 在不同的文件结尾 输出不同的特殊符号以 / 结尾的就是文件夹以 * 结尾的就是可执行文件以 @ 结尾的就是软连接(快捷方式)普通文件,结尾什么都没有以. 开头的是隐藏文件-d 显示文件夹本身信息(不输出文件夹内部信息)-r 逆转排序-S 针对文件大小进行排序 (默认是从大到小)-Sr 从小到大排序-i 显示出文件的 inode信息[文件的元数据(文件大小,位置,权限,文件的唯一标识)]
常见的用法-- 查看指定目录下的信息ls -l 路径 或者 ll 路径-- 查看指定目录下的所有信息(包含隐藏文件)ls -la 路径案例1:列出根目录下所有内容的详细信息ls -a -l /参数可以合并:ls -la /案例2:列出 /opt下所有内容的详细信息ls -la /opt
-- 查看当前用户whoami
-- 查看当前主机名hostname
-- 查看当前命令行所在工作目录的绝对路径(print work directory)pwd
-- 用户切换su - 用户名
-- 创建用户sudo useradd -m 用户名  [创建普通用户]sudo passwd 用户名  [设置普通用户密码]
注意:root账户切换普通用户,直接切换即可普通用户切换 root 用户 需要输入密码
-- 退出当前用户 [切换到另外一个用户]logout或者exit

注意:

1.一般情况下,linux的命令参数都是可选的 不同的参数作用不一样

2.linux命令之间,必须有一个或多个空格

路径表述

# windows系统下路径表述
|-C盘|- 文件夹|-文件夹|-文件|-a.txt|-文件|-文件|-文件夹
|-D盘
|-F盘
# Linux系统下路径表述
---- 一切皆文件
/ 根目录
/|-文件夹|-文件夹|-文件|-文件|-文件|-文件夹
#linux系统中路径表述
1. 绝对路径(以 / 开头)/文件/文件夹/文件
2. 相对路径./       当前目录下../    上一层目录下
例如:/opt/a.txt 绝对路径./a.txt 当前目录下的 a.txt文件../a.txt 上一层目录下的a.txt文件
说明|-/opt/abc/a.txt|-/opt/a.txt
此时我们处于abc文件夹下 ../a.txt --------> /opt/a.txt

目录说明

/boot 存放的是内核与启动文件
/dev 存放的硬件(设备)相关信息的文件
/etc 存放系统的配置文件/etc/sysconfig/network-scripts/ifcfg-ens33:设置网络环境,例如动态、静态ip 设置是否支持远程连接....../etc/resolv.conf:设置DNS域名解析例如: 张三---手机号www.baidu.com-----275.168.220.8/etc/hostname : 设置主机名/etc/motd : 设置开机显示案例:vim /etc/motd/etc/os-release:查看发行版 版本号
/home 普通用户的主目录
/media 可卸载存储介质挂载点
/mnt mount文件系统临时挂载点
/opt 应用程序包
/proc: 系统内存的映射目录,提供内核与进程信息/proc/meminfo:系统内存信息/proc/cpuinfo:关于处理器的信息 例如 类型,厂家,型号,性能等/proc/loadavg:系统负载信息 uptime结果/proc/mounts:已加载的文件系统列表
/root 特权用户(管理员)目录
/run 存放的是组件运行时所需要的文件[文件夹]
/srv 存放服务相关的数据
/sys 虚拟文件系统,记录核心系统的硬件信息
/tmp 存放临时文件
/usr 存放用户应用程序
/var 存放运行时内容会发生变化的文件 例如 日志/var/log:记录系统及软件运行信息/var/log/messages:系统级别日志文件/var/log/secure:用户登录信息的日志文件/var/log/dmesg:记录硬件信息加载情况(日志文件)

date指令简介

# 查看日期 date '+参数'
# 查看服务器的时间
案例:
[root@bai /]# date
2023年 10月 23日 星期一 11:38:48 CST
# 日期说明一个日期包含: 年 月 日 星期 小时 分钟 秒 毫秒 纳秒 时区
# 日期查看参数说明%F 只显示当前年月日(2023-10-23)%X 只显示当前时间的时分秒(17时50分20秒)%c 直接显示日期与时间(年月日 星期 时分秒)%x 直接显示日期(年月日)%T 显示时分秒 HH:MM:SS [24小时进制]%r 显示时分秒 [12小时进制]
# 提取日期属性%Y 完整的年份(四位的年份)(2023 2020)%y 年份的末两位(2023--->23 2020 ---> 20)%m 月份%d 日(月份中的日)%H 小时(24进制的小时)%M 分钟(00 ~ 59)%S: 秒%p: 显示本地 AM PM
# 其他日期属性%Z 显示时区%w 一周中的第几天(0 ~ 6) 注意 星期日 0%a 星期几(简写,比如 星期一显示一)%A 星期几(全称)%b 月份(简写)%B 月份(全称)%s 从1970年1月1日0时0分0秒 到现在 过了多少秒
案例:
# 展示当前系统时间 格式 YYYY-mm-dd HH:MM:SS
[root@bai /]# date '+%Y-%m-%d %H:%M:%S'
2023-10-23 11:54:53

文件管理

文件类型(了解)
# 查看指定路径下(目录)文件类型ls -l -d 目录或者ll -d 目录
# 文件类型- 普通文件(文本文件,二进制文件,压缩文件,音频,视频.....)l 即符号链接文件 又称为软连接(快捷方式)[浅蓝色]d 目录文件[浅蓝色]b 设备文件[类似于硬盘 U盘]c 设备文件[字符设备文件 比如我们的 打印机]s 即套字文件 用于实现两个进程之间进行通信p 管道文件. 隐藏文件
案例1:
-- 查看下列文件类型,能找出几种?[root@bai /]# ll -d /etc/hosts-rw-r--r--. 1 root root 158 6月 7 2013 /etc/hosts # - 开头 属于普通文件[root@bai /]# ll -d /bin/ls-rwxr-xr-x. 1 root root 117672 4月 11 2018 /bin/ls # -开头 属于普通文件
补充:
一次性查看好多文件(文件夹)ls -l -d 目录1 目录2 ....
目录切换
cd 指令 ------ 目录切换例如 cd / 切换到根目录下cd /etc 切换到etc目录下
# 切换到当前目录(原地踏步)cd .
# 切换到当前目录的上一层目录cd ..
# 直接回到家目录cd 或者 cd ~
# 回到上一次的目录cd -
例如:cd / # 回到根目录下cd /etc # 切换到 /etc 目录下cd - # 回到根目录[回到上一次的目录]
# 去到指定目录cd 目录 #目录可以是相对路径 也可以是绝对路径[root@bai /]# cd / # 切换到根目录[root@bai /]# cd /etc # 切换到 etc 目录下[root@bai etc]# pwd # 查看当前目录/etc[root@bai etc]# cd dhcp # 切换到当前目录下的 dhcp文件夹[root@bai dhcp]# cd .. # 回到上一层目录[root@bai etc]# cd ./dhcp # 切换到当前目录下的 dhcp文件夹[root@bai dhcp]# cd # 直接切换到当前用户的家目录[root@bai ~]# cd / # 切换回根目录 ~ 也是 家目录的标识[root@bai /]# cd ~ # 直接切换到当前用户的家目录[root账户在 /root 目录下,其他用户在 /home目录下][root@bai ~]# cd - # 切换到上一次的工作目录
文件夹/文件的创建
文件夹的创建
# 创建一个文件夹
mkdir 可选参数 文件夹名字[包含路径]
例如:
[root@bai /]# mkdir /abc
等价于
[root@bai /]# mkdir abc
注意:
1.若未添加路径描述,默认在当前目录下
2. mkdir 文件夹 语法特点是:只能在已经存在的目录下创建文件夹,并且只能创建一层文件夹
```​```powershell
mkdir -p 文件夹1/文件夹2 # 可以创建多级文件夹
参数:
-p 递归创建多级文件夹
# 案例
[root@bai /]# mkdir -p /peiqi/xiaopeiqi1
mkdir -v 文件夹 # 显示创建时的详细信息
批量创建文件夹
# 批量创建文件夹
mkdir {文件夹1,文件夹2,文件夹3}
# 案例1 在 根目录下创建 test1 test2 test3 三个文件夹[root@bai /]# mkdir {test1,test2,test3}
# 案例2 在 /peiqi 下 创建 xiaopeiqi2 xiaopeiqi3 xiaopeiqi4[root@bai /]# mkdir /peiqi/{xiaopeiqi2,xiaopeiqi3,xiaopeiqi4}
# 案例3 在 /abc 文件夹下创建 100个文件夹 file1 file2 file3 ...... file100[root@bai /]# mkdir /abc/file{1..100}[root@bai /]# mkdir -v /def/peiqi #-v 会显示文件夹的创建过程mkdir: 已创建目录 "/def/peiqi"[root@bai /]# mkdir -p -v /a/b # 递归创建文件夹并显示具体过程mkdir: 已创建目录 "/a"mkdir: 已创建目录 "/a/b"
文件的创建
用法: touch [可选参数] 文件
作用:
1. 创建普通文件在linux系统中,文件的后缀格式仅仅只是一个名字而已,通过 touch命令创建的都是普通文件
2. 修改文件的时间
# 创建一个文件
# 在 /a/b文件夹下创建 xiaopeiqi1.txt 文件
[root@bai /]# touch /a/b/xiaopeiqi.txt
[root@bai /]# ll /a/b
总用量 0
-rw-r--r--. 1 root root 0 10月 23 15:41 xiaopeiqi.txt
# 创建多个文件·
touch 文件1 文件2 文件3;
# 案例
1. 在当前目录下创建三个文件 a.txt b.txt c.txt[root@bai d]# touch a.txt b.txt c.txt
2. 在 /c 目录下创建三个文件 a.txt b.txt c.txt[root@bai d]# touch /c/a.txt /c/b.txt /c/c.txt
3. 批量创建多个文件
-- 在/abc 文件夹下创建 baizhi1.txt baizhi2.txt baizhi3.txt ..... baizhi100.txt[root@bai /]# touch /abc/baizhi{1..100}.txt[root@bai /]# ls -la /ab
注意: {1..100} {a..z} 前提是可排序(可比较大小)
4. 创建隐藏文件touch /目录/.demo.txt
# 修改文件的创建时间
touch -t # 修改文件的创建时间
案例1:
-- 将 xiaopeiqi.txt 文件创建时间修改为 10月24号9点30分 [默认是系统年份]
[root@baizhi b]# touch -t 10240930 xiaopeiqi.txt
-- 将 xiaopeiqi.txt 文件创建时间修改为 2030-10-23 09:30[root@bai b]# touch -t 203010230930 xiaopeiqi.txt
注意: 日期修改范围 年月日时分
# 将a.txt文件的创建时间 充当 文件b 的创建时间
touch -r 文件a 文件b
或者
touch --reference=文件a 文件b
案例2:
-- 创建 yangdd.txt 文件 且创建时间和 xiaopeiqi.txt 的时间一致[root@bai b]# touch -r xiaopeiqi.txt yangdd.txt[root@bai b]# ll --full-time ./总用量 0-rw-r--r--. 1 root root 0 2030-10-23 09:30:00.000000000 +0800 xiaopeiqi.txt-rw-r--r--. 1 root root 0 2030-10-23 09:30:00.000000000 +0800 yangdd.txt[root@bai b]# touch --reference=xiaopeiqi.txt cpx.txt[root@bai b]# ll --full-time ./总用量 0-rw-r--r--. 1 root root 0 2030-10-23 09:30:00.000000000 +0800 cpx.txt-rw-r--r--. 1 root root 0 2030-10-23 09:30:00.000000000 +0800 xiaopeiqi.txt-rw-r--r--. 1 root root 0 2030-10-23 09:30:00.000000000 +0800 yangdd.txt
文件创建(2)
# 输出语句 ----> 指令运行以后,在操作界面打印内容echo 内容 # 将内容在界面中打印展示
[root@bai ~]# echo HelloWorld
HelloWorld
# 借助 echo 完成文件创建,并传输文件内容
语法:echo 内容 > 文件
注意:1. 若文件不存在,则新建并传输内容2. 若文件存在,则新内容覆盖原始文件内容
语法:echo 内容 >> 文件
注意:1. 若文件不存在,则新建并传输内容2. 若文件存在,则新内容追加在原始内容之后
文件拷贝(复制)
用法: cp [可选参数] 源文件 目标文件
参数:-r 递归式复制目录 即复制目录下所有的子目录和文件-d 复制的时候保持软链接(快捷方式)-p 等价于 --preserve=模式,所有权,时间戳,复制文件时保持源文件的权限,时间属性[完美复刻]-a 等价于 -pdr-i --interactive 覆盖前询问提示(生成的文件和当前目录下已经存在的文件冲突)
# 1. 复制普通文件cp 文件1 文件2 # 复制一份文件1,生成文件2
# 2. 复制整个文件夹cp -r 文件夹1 文件夹2 #将文件夹1所有内容复制 生成 文件夹2
# 3. 复制文件并修改生成文件的路径cp 目录1/文件1 目录2/文件2 # 将文件1复制到目录2下 若文件2名字缺失 新文件名字与文件1 保持一致
# 4. 覆盖前提示cp 文件1 文件2 # 当前目录下已经存在文件2 询问是否覆盖等价于cp -i 文件1 文件2
# 5. 批量复制多个文件cp 文件1 文件2 文件3 文件夹 # 将文件1 文件2 文件3 拷贝到 指定文件夹下
系统指令别名
alias系统指令别名cp ----- 简写(别名)等价cp -i ---- 指令完整写法
# 查看指定别名对应的指令type -a 别名[root@bai b]# type -a llll 是 `ls -l --color=auto' 的别名
# 设置别名
1. 查看 指定文件夹的 详细信息,隐藏文件,时间戳ls -la --full-time 目录
设置别名alias 别名='命令'
例如: alias nb='ls -la --full-time'[root@bai b]# alias nb='ls -la --full-time'[root@bai b]# aliasalias cp='cp -i'alias egrep='egrep --color=auto'alias fgrep='fgrep --color=auto'alias grep='grep --color=auto'alias l.='ls -d .* --color=auto'alias ll='ls -l --color=auto'alias ls='ls --color=auto'alias mv='mv -i'alias nb='ls -la --full-time'alias rm='rm -i'alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'[root@bai b]# type -a nbnb 是 `ls -la --full-time' 的别名[root@bai b]# nb /a总用量 4drwxr-xr-x. 4 root root 61 2023-10-23 16:40:49.133677006 +0800 .dr-xr-xr-x. 25 root root 4096 2023-10-23 15:33:58.688504641 +0800 ..drwxr-xr-x. 2 root root 148 2023-10-23 16:50:38.988993905 +0800 b-rw-r--r--. 1 root root 0 2023-10-23 16:40:09.485522155 +0800 chenpx.txt-rw-r--r--. 1 root root 0 2023-10-23 16:40:49.133677006 +0800 cpx.txtdrwxr-xr-x. 2 root root 130 2023-10-23 17:04:36.027418341 +0800 peiqi
# 取消别名
unalias 别名;
mv指令
mv 命令 就是 move的缩写,作用用于移动文件 或者 重命名文件。
语法mv [可选参数] 源文件 目标文件。
参数:-i 覆盖前询问[目标目录下已经存在指定文件]-f 覆盖前不询问
# 将 /a/cpx.txt 移动到 /def/peiqi 文件夹下 ------> 文件移动[root@bai b]# mv /a/cpx.txt /def/peiqi/
# 将 /a/chenpx.txt 移动到 /def/peiqi 文件夹下 并重命名为 demo.txt[root@bai peiqi]# mv /a/chenpx.txt /def/peiqi/demo.txt
# 批量移动文件[移动的文件,名字有规律]mv /a/b/cpx* /def/peiqi/
# 将 /a/peiqi/ 下的 所有 cpx开头的文件 移动到 /def/peiqi 下 直接覆盖不再询问[root@bai peiqi]# mv -f /a/peiqi/cpx* /def/peiqi/
# 将 /a/cpx5.txt到cpx10.txt移动到/a/a1 下[root@centos-128 test]# mv -f /a/cpx{5..10}.txt /a/a1
# 移动文件夹mv 源文件夹 目标目录
# 将/a 文件夹 移动到 /c文件夹中[root@bai peiqi]# mv /a /c/
文件/文件夹删除
rm 命令 就是 remove的含义 删除一个或者多个文件[删除文件夹]
rm [可选参数] 目标文件[夹]
参数:-f 强制删除,不提示确认-i 在删除前进行提示确认-r 在删除文件夹时使用-d 删除空目录-I 在删除超过三个文件或者递归删除前要求确认-v 详细显示进行的步骤
案例:
[root@bai /]# rm /c/a.txt
rm:是否删除普通空文件 "/c/a.txt"?y
[root@bai /]# rm -f /c/b.txt
[root@bai /]#
[root@bai /]# rm /abc/file100
rm: 无法删除"/abc/file100": 是一个目录
[root@bai /]# rm -r /abc/file100
rm:是否删除目录 "/abc/file100"?y
[root@bai /]# rm -rf /c/a
[root@bai /]#
[root@bai /]# rm -rf /c/d/* ---> 删除d目录下所有内容,但是保留 d文件夹
[root@bai /]# rm -rf /c/d ----> 连同d目录一并删除
[root@bai /]# rm -d /abc/file11 ----> file11 file12 必须是空目录
rm:是否删除目录 "/abc/file11"?y
[root@bai /]# rm -df /abc/file12
[root@bai /]# rm -r -v -f /c
已删除"/c/.你看不见我.txt"
已删除目录:"/c/d"
已删除目录:"/c"
注意:rm -rf /* -- 删库跑路 禁用

帮助指令

# man帮助指令
语法: man 指令进入man指令以后 按下q ---- 退出空格(上下方向键) ---- 上下移动

​​

语法: 指令 --help
语法: help 指令 ------> 只能展示内置的指令 指令位于 bin目录 sbin目录
语法: info 指令
从互联网上获取Linux中文文档网站

Linux开关机指令

# 重启
语法: shutdown -r 参数
举例:shutdown -r 10 # 10分钟后重启shutdown -r 0 # 立刻重启shutdown -r now # 立刻重启 ------ 企业级用法
# 关机
语法: shutdown -h 参数
举例:shutdown -h 10 #10分钟后关机shutdown -h 0 # 立刻关机shutdown -h now # 立刻关机 ---- 企业级用法
# 其他指令reboot 重启poweroff 关机 立刻关闭系统,同时切断电源halt 关机 立刻关闭系统,需要手动切断电源init 6 切换运行级别为6 此级别代表重启init 0 切换运行级别为0 此级别代表关机logout 注销退出当前用户exit 注销退出当前用户ctrl+d 注销退出当前用户

文件查看

cat指令
查看普通文件内容,查看一个文件的全部内容 # 注意文件内容大小
语法:cat [参数] 文件
参数:-n 显示行号-A 包括控制字符(换行符/制表符)   $ ---->换行符
head指令
查看文件内容的前几行 ----> 可以查看大体量文件
语法:head 文件 # 默认查看前10行head -数字 文件 # 指定查看文件前几行或者head -n 数字 文件
tail指令
tail 查看文件内容的尾部
语法:tail [可选参数] 文件tail -n 文件 # 查看文件后n行信息
参数:-f # 一般用于查看动态变化的文件 例如: 日志动态查看文件的尾部tail -f 文件 # 实时查看文件的后10行信息tail -f -n 5 文件 # 实时查看文件的后5行信息或者tail -5f 文件
grep指令
grep过滤关键字 ---- 针对文件内容进行过滤(筛选)
[root@bai /]# grep 'root' /etc/passwd # 过滤文件中带有root的行 [精确查找]
注意: '' 可以省略 一般用于区分指令关键字
# 筛选所有以root开头的 行 ^---->以....开头[root@bai /]# grep '^root' /etc/passwd
# 筛选所有以 nologin 结尾的行 $ -----> 以......结尾[root@bai /]# grep 'nologin$' /etc/passwd
less指令
分页展示
语法:less 文件
分页展示以后,指令:空格 ----> 翻页回车键 ----> 下一行方向键 ↑ 方向键 ↓ ------> 上下滚动/关键字 ------> 在文件中查找指定的关键字,并高亮展示n -----> 搜索时,往下翻N -----> 搜索时,往上翻
more指令
分页显示文件内容 ---- 底部会展示文件内容查看进度百分比 看完直接退出
语法:more 文件名
分页展示以后,指令:空格 -----> 翻页回车 -----> 下一行
cut指令
cut --- 在文件中每一行 提取 片段
语法:cut [可选参数] [片段区间] 文件
参数-c 以字符为单位进行提取-d 自定义分隔符 默认以tab为分隔符-f 与-d 连用 指定显示的区域
案例:
# 1.提取文件中每一行的第 4 个字符[root@bai /]# cut -c 4 /etc/passwd
# 2.提取文件中每一行的 第 4 ~ 7 个字符[root@bai /]# cut -c 4-7 /etc/passwd
# 3.提取文件中每一行的前7个字符[root@bai /]# cut -c 1-7 /etc/passwd或者[root@bai /]# cut -c -7 /etc/passwd
# 4.从第10个字符开始,一直到最后 截取文件内容中的每一行[root@bai /]# cut -c 10- /etc/passwd
# 5.获取每一行的 第4个字符 第6个字符[root@bai /]# cut -c 4,6 /etc/passwd
# 6.以 : 为分隔符切割每行内容 并获取 第一个片段[root@bai /]# cut -d : -f 1 /etc/passwd
# 7.以 : 为分隔符切割每行内容 并获取 第 1 ~ 3个片段[root@bai /]# cut -d : -f 1-3 /etc/passwd
# 8.以 : 为分隔符切割每行内容 并获取 第5个及以后所有的片段[root@bai /]# cut -d : -f 5- /etc/passwd
# 9.以 : 为分隔符切割每行内容 并获取 前5个片段[root@bai /]# cut -d : -f -5 /etc/passwd
sort指令
sort 命令将输入的文件内容按照规则排序,然后输出结果
语法:sort [选项参数] 文件
参数:-b : 忽略前导的空白区域-n : 根据字符串数值比较-r : 反转-u : 去重排序 配合 -c-t : 使用指定的分隔符代替空格-k 位置1: 在位置1开始排序规则
案例:
# 对文件第一个字符进行排序 默认从小到大sort -n /abc/a.txt
# 对文件第一个字符进行排序 降序sort -n -r /abc/a.txt
# 对排序的结果去重sort -u a.txt
# 指定分隔符号,指定区域进行排序sort -n -t "." -k 4 ip.txt
uniq指令
uniq命令可以输出或者忽略文件中的重复行 ---- 经常与 sort 连用
语法:uniq [可选参数] 文件
# 去除连续的重复行
语法:uniq 文件名
# 结合sort使用sort -n a.txt | uniq
# 统计每一行的重复次数 结合 sort使用 先让重复内容连续,然后在使用uniq进行次数统计sort -n a.txt | uniq -c
# 只找出文件中的重复行[出现2次及以上] 且 统计次数sort -n a.txt | uniq -c -d
# 只找出文件中只出现一次的行,且统计次数sort -n a.txt | uniq -c -u
# 查看哪些ip被使用了sort -n -t "." -k 4 ip.txt | uniq -c

文件编辑

指令:vi / vim
语法:vim 文件 / vi 文件 # 打开文件
注意:vim 默认机器是不安装的,需要手动安装这个工具命令
# 安装指令yum install vim -y
说明:1.通过 yum 软件管理工具 安装命令 vim 且默认是 yes 这个命令要保证机器可以上网2.当 vim/vi 打开不存在的文件时 默认会新建文件
文件模式:
1. 工作模式
2. 命令模式
3. 编辑模式
4. 尾行模式
5. 可视模式
1. vim 文件 # 进入命令模式 只能查看无法修改文件内容
2. 进入编辑模式i #在光标处进入编辑模式a #在当前光标后面进入编辑模式A #在行尾进入编辑模式o(小写字母) #在光标的下一行进入编辑模式O(大写字母) #在光标的上一行进入编辑模式
命令模式
光标定位键盘:hjkl # h[左] j[下] k[上] l[右]0 $ # 0[光标所在行 行首] $[光标所在行 行尾]gg # 页首 --- 文本顶端G 或者 shift+g # 页尾 ---- 文本底部3G # 进入第3行 4G[进入第4行]/关键词 #查找字符 n[下一个] N[上一个]
命令模式下的文本编辑
 yy #复制当前行p #粘贴 ----- 粘贴到本行的下一行3yy 5yy #从光标处开始复制3行 或者 复制 5行ygg # 从当前光标复制到页首yG # 从当前光标复制到页尾dd  # 删除一行[删除光标所在行]3dd #从光标开始删除3行dgg #从光标处删除到页首dG #从光标处删除到页尾d^ #删除当前光标所在行之前的内容P[大写字母] # 粘贴到本行的上一行x #删除光标所在处的字符D #从光标处删除到行尾u #撤销r #可以用于修改光标处的字符
尾行模式(底线模式)
 shift+: 或者 : # 由命令模式进入尾行模式:3 # 进入第3行:w # 保存:q # 退出:wq #保存并退出:q! #强制退出不保存:wq! #强制保存并退出:set nu # 设置行号:set nonu # 取消行号:set list #显示控制字符[可以筛选行内容末尾有空格的 行数据]
进入其他模式
#批量操作文件内容时ctrl+v #进入可视块模式shift+v #进入可视行模式
查找替换
语法::s /原内容/新内容/ # 将光标处 的原内容替换为新内容:3 s/原内容/新内容/ # 替换指定行[替换第3行的内容]:1,3 s/原内容/新内容/ # 替换第 1 ~ 3行的内容:% s/原内容/新内容/ # 替换所有行[只会替换每一行中第一个原内容]:% s/原内容/新内容/g # 替换行内所有的关键字
文件基本信息
语法: stat 文件
详细的展示文件时间:访问时间修改时间 ----- 修改内容改变时间 ----- 修改文件属性,例如 权限 名字

Linux用户管理

root的权限:安装Centos时,需要设置root账户的管理员密码, root就相当于是超级用户,拥有最高的系统所有权,能够管理系统的各项功能 比如:添加普通用户/删除普通用户 启动/关闭进程 开启/禁用硬件设备....root权限必须很好的去把握 否则一个错误的指令可能会摧毁系统
rootUID 好比身份证号 root用户的UID是 0GID 好比家庭编号(户口本编号) root 用户的GID 是 0
普通用户UID 从 1000 开始 由 超级管理员创建 -----> 任何一个用户在创建时,都会在系统中创建一个同名的组[主属组]GID
虚拟用户(系统用户)UID 1 ~ 999
/etc/passwd
用户组group
为了方便管理同一组的用户。 ---- GID 是组与组之间的区别|-假设一个公司有多个部门,每个部门有很多员工。|- 可以对技术部门设置部门内的权限---- 可以访问公司的数据库|- 员工可以独立赋予权限
用户和组的关系1. 一对一 一个用户可以存在一个组里,组里就一个成员2. 一对多 一个用户可以加入多个组3. 多对一 多个用户可以在一个组中,这些用户和组有相同的权限4. 多对多 多个用户存在多个组中
Linux的一大特性
多用户,多任务
所谓多用户多任务是指同一时间,有多个用户登录同一个系统执行不同的任务 ---- 互不影响
为了保证多用户,多任务正常执行,不出问题 ----- 设置不同的权限 Linux就是通过权限划分来管理实现多用户 多任务。

用户管理

用户相关的信息 ------ /etc/passwd
组相关的信息 ------ /etc/group
用户组
# 创建组groupadd [可选参数] 组名 # 未指定gid时 默认从1000开始 依次递增 [从当前最大值开始进行递增]
# 创建组并制定gidgroupadd 组名 -g 组id
# 修改组groupmod [参数] 组名
参数:-g : 修改组id ---------> id值从 1000 开始-n : 修改组名
# 删除组groupdel 组名案例:
# 创建 test 组[root@bai abc]# groupadd test
# 创建 demo组 并设定 gid[root@bai abc]# groupadd demo -g 1005
# 将 test 的gid 修改为 1003[root@bai abc]# groupmod -g 1003 test
语法:groupmod -g 新的gid 组名
# 将test的名字修改为 demo[root@bai abc]# groupmod -n demo test
语法:groupmod -n 新组名 原组名
# 删除 hr 组[root@bai abc]# groupdel hr
语法:groupdel 组名删除组的注意事项:1.用户的主属组不能删除 ------ 创建用户时,会自动分配主属组[且主属组与用户同名]2.若组内存在用户,该组不可删除
/etc/group
```​```powershell
# 展示系统中所有组名cut -d ":" -f 1 /etc/group
# 展示系统中所有组名 + gidcut -d ":" -f 1,3 /etc/group
用户管理
 /etc/passwdshell的解释器版本/bin/sh -- 默认/bin/bash --- 默认/sbin/nologin -- 虚拟用户[系统用户]   无法登陆,切换/dash    ubuntu/csh  unix/tsh    unix
1. 系统上的每个进程(每个运行的程序) 都是作为 系统用户 运行的
2. 每个文件是由一个特定用户拥有
3. 访问文件和文件夹 受到用户限制

​​

用户创建
语法:useradd 用户名; # 创建用户
特点:1.新建用户的同时,会自动构建一个所属组 --- 组名和用户名一致 gid 自动增长2. /home 目录下 ----> 用户的家目录 每创建一个用户 都会在 /home下创建对应的家目录
查看用户密码/etc/shadow
# 创建用户 带参数
# 创建用户 user03 并制定id 为 1010
语法:useradd user03 -u 1010
语法:
# 创建用户并指定shell
语法:useradd 用户名 -s /sbin/nologin
# 创建用户并指定 附属组
语法:useradd 用户名 -G 组名 # 附属组必须事先存在
案例:[root@bai /]# useradd user06 -G user05[root@bai /]# id user06uid=1013(user06) gid=1013(user06) 组=1013(user06),1012(user05)
# 创建用户 并指定 主属组
语法:useradd 用户名 -g 主属组的id
参数:-c : 创建用户时,备注文字[保存在 passwd的备注栏中]
案例:[root@bai ~]# useradd user10 -c 它是一个测试用户28 user10:x:1016:1016:它是一个测试用户:/home/user10:/bin/bash
参数:-d : 指定用户登录时的起始目录
案例:[root@bai ~]# useradd user11 -d /home/peiqi  # 将其他用户的家目录当做自己的 --- 会导致命令提示符消失useradd:用户“user11”已存在
参数:-e : 指定账号的到期时间
案例:[root@bai ~]# useradd user13 -c user13能用到2023年10月27号 -e '2023-10-27'
参数:-f : 缓冲天数 是指密码过期后多少天关闭该账号-m: 自动建立用户的登录目录[默认就是家目录]-M: 不要自动建立用户的登录目录-r: 创建系统账户-D: 参数用来修改配置文件 /etc/default/useradd 文件的默认值
例如:[root@bai ~]# useradd -D -s /bin/bash
#1. 判断用户是否已存在
语法:id 用户名
举例:[root@bai abc]# id user01uid=1001(user01) gid=1005(user01) 组=1005(user01)用户标识         所属组标识       所属组[root@bai abc]# id user02id: user02: no such user
#2. 查看当前正在使用的用户
语法:whoami
#3.删除用户
语法:userdel -r 用户名 # 删除用户的同时,删除对应的家目录
创建用户流程
1. useradd 用户名|- 系统会读取 /etc/login.defs(用户定义文件) 和 /etc/default/useradd(用户默认配置文件),借助这两个文件定义的规则 创建新用户|- 向 /etc/passwd 和 /etc/group 文件添加 用户信息和组信息 向 /etc/shadow 中添加用户密码,/etc/gshadow 中添加组密码|- 根据 /etc/default/useradd 文件中的配置信息创建用户的家目录|- 把 /etc/skel 中所有的文件复制到 新用户的家目录中
/etc/login.defs14 #QMAIL_DIR Maildir15 MAIL_DIR /var/spool/mail  # 系统发送邮件的位置16 #MAIL_FILE .mail25 PASS_MAX_DAYS 99999            # 密码最长使用天数26 PASS_MIN_DAYS 0                # 密码更换最短时间27 PASS_MIN_LEN 5                 # 密码最短长度28 PASS_WARN_AGE 7              # 密码失效前几天 警告2930 #31 # Min/max values for automatic uid selection in useradd32 #33 UID_MIN 1000                 # 新建普通用户最小的 uid34 UID_MAX 60000                 # 新建普通用户最大的 uid35 # System accounts36 SYS_UID_MIN 201               # 新建系统用户 最小的 uid37 SYS_UID_MAX 999              # 新建系统用户最大的 uid3839 #40 # Min/max values for automatic gid selection in groupadd41 #42 GID_MIN 1000                 # 新建普通用户 最小的 gid43 GID_MAX 60000                # 新建普通用户 最大的 gid44 # System accounts45 SYS_GID_MIN 201              # 新建系统用户最小的 gid46 SYS_GID_MAX 999               # 最大的gid60 CREATE_HOME yes              # 是否自动创建家目录6162 # The permission mask is initialized to this value. If not specified,63 # the permission mask will be initialized to 022.64 UMASK 077                   # 默认的权限掩码6566 # This enables userdel to remove user groups if no members exist.67 #68 USERGROUPS_ENAB yes6970 # Use SHA512 to encrypt password.71 ENCRYPT_METHOD SHA512         # 密码加密算法
 [root@bai ~]# cat -n /etc/default/useradd1 # useradd defaults file2 GROUP=1003 HOME=/home                    # 在 /home 目录下 创建用户的家目录4 INACTIVE=-1                    # 开启用户过期5 EXPIRE=6 SHELL=/bin/bash                # 新用户默认的解释器7 SKEL=/etc/skel                # 用户环境变量文件的存放目录8 CREATE_MAIL_SPOOL=yes9
用户密码
# root账户可以给其他用户设置密码 普通用户设置密码以后才可以进行登录
语法:passwd 用户名
案例:[root@bai abc]# passwd user02更改用户 user02 的密码 。新的 密码:无效的密码: 密码少于 8 个字符重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
# root账户重置自己的密码
语法:passwd
案例:[root@bai abc]# passwd更改用户 root 的密码 。新的 密码:无效的密码: 密码少于 8 个字符重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。
注意:
#普通用户修改自己的密码1. 需要提供原密码2. 新密码必须遵守规范(包含大小写字母 不能出现单词 必须包含特殊符号 @ # $ % 数字 长度不低于8)3. 限定修改次数#passwd的实际应用
#设置 user15的密码: 7天内用户不得修改密码 60天不能改 临近过期前10天通知用户 过期30天以后禁止用
户登录
案例:[root@bai ~]# passwd user15 -n 7 -x 60 -w 10 -i 30[root@bai ~]# passwd -S user15   # 查看用户密码的状态
user15 PS 2023-10-26 7 60 10 30 (密码已设置,使用 SHA512 算法。)
参数说明:-n : 至少多少天不可修改密码-x : 最多多少天不能修改-w : 过期前多少天通知用户-i : 过期多少天禁止用户登录
# 批量更新密码
语法:chpasswd
案例:[root@bai ~]# chpasswd ------》 root用户可以使用user03:111user04:222
操作结束 按 ctrl+d 保存退出# 切换用户
方式一:su 用户名
# 直接切换,没有完全切换环境变量
案例:[root@bai ~]# su gaosc[gaosc@bai root]$ env|egrep "USER|MAIL|PWD|LOGNAME"USER=gaoscMAIL=/var/spool/mail/rootPWD=/rootLOGNAME=gaosc
方式二:su - 用户名
案例:[root@bai ~]# su - gao上一次登录:四 10月 26 09:46:18 CST 2023pts/0 上[gao@bai ~]$ env|egrep "USER|MAIL|PWD|LOGNAME"USER=gaoMAIL=/var/spool/mail/gaoPWD=/home/gaoLOGNAME=gao[gao@bai ~]$ logout
注意:root 切换其他普通用户 直接切换普通用户 切换回 root 需要管理员密码
用户操作
# 修改用户名 -----> 只修改用户名,其他(uid gid 所属组)不变
语法:usermod -l 新名字 原名
案例:[root@bai ~]# usermod -l user666 user02[root@bai ~]# id user02id: user02: no such user[root@bai ~]# id user666uid=1002(user666) gid=1006(user02) 组=1006(user02)
# 修改 gid
语法:usermod 用户名 -g 新的gid # 新的gid必须事先存在 更换主属组
# 修改uid
语法:usermod -u 新的uid 用户
案例:[root@bai ~]# usermod -u 1003 user03
# 修改用户登录的shell
语法:usermod -s 登录方式 用户名
案例:[root@bai ~]# usermod -s /sbin/nologin user03
# 修改用户的家目录
语法:usermod 用户名 -d 指定的家目录
提权
不同用户,可以访问的文件范围,所拥有的权限都不相同。
例如: 群主(root) 管理系统工作量太大时,可以设置管理员 (普通用户 ---[提权 sudo]--- 管理员)
配置sudo 目的在于 让运维干活方便 权限把控,同时又不威胁系统安全

​​


如何恢复命令提示符
1. 确保 /home 目录下存在正确的用户家目录[若不存在,就新建]
2. 登录 root 账户 然后复制初始化系统文件cp /etc/skel/.bash* /home/家目录/
案例:[root@baii ~]# mkdir -p /home/user15[root@baii ~]# cp /etc/skel/.bash* /home/user15/
whoami相关指令
1.
语法:whoami # 显示当前终端登录的用户
案例:sh-4.2# whoamiroot
2.
语法:w 指令 #显示当前已经登录系统的用户信息
案例:# sh-4.2 代表 shell解释器的版本为 shsh-4.2# w15:39:32 up 1 day, 5:55, 2 users, load average: 0.00, 0.01, 0.05USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATgaosc tty1 15:39 12.00s 0.00s 0.00s -bashroot pts/0 192.168.127.1 09:38 4.00s 0.02s 0.01s w
# 展示结果解析1. 显示的是系统时间,系统从启动到运行的时间,系统运行中的用户数量和平均负载2. 第二行信息user: 用户名TTY: 用户使用终端号FROM:标识用户从哪来 [终端所在机器的 ip地址]LOGIN@ : 登录系统的时间IDLE: 代表终端空闲时间JCPU: 该终端所有进行以及子进程使用系统的总时间PCPU: 活动进程使用系统的时间WHAT: 用户执行的进程名称
3.
语法:who ----- 等同于 w 的简化版
案例:[root@bai ~]# whogaosc tty1 2023-10-26 15:39root pts/0 2023-10-26 09:38 (192.168.127.1)
4. last、lastlog 命令查看当前机器所有用户最近的登录信息
案例:
# last命令显示已登录的用户列表和登录时间
[root@centos-128 ~]# last
root     pts/0        192.168.240.1    Thu Oct 26 18:42   still logged in
root     pts/0        192.168.240.1    Thu Oct 26 17:23 - 18:41  (01:18)
root     pts/0        192.168.240.1    Thu Oct 26 17:23 - 17:23  (00:00)
root     pts/0        192.168.240.1    Thu Oct 26 08:29 - 17:22  (08:53)
# lastlog 命令显示当前机器所有用户最近的登录信息
[root@bai ~]# lastlog
户名           端口     来自             最后登陆时间
root             pts/0    192.168.240.1    四 10月 26 18:42:16 +0800 2023
bin                                        **从未登录过**
baizhi           pts/0                     四 10月 26 14:03:28 +0800 2023
xiaozhang                                  **从未登录过**
xiaoli                                     **从未登录过**
xiaowang                                   **从未登录过**
demo                                       **从未登录过**
user1            pts/0                     四 10月 26 18:48:19 +0800 2023
user2                                      **从未登录过**
user3                                      **从未登录过**

组成员管理

注意:只针对已存在的用户# 给组添加账户
语法:gpasswd -a 用户 组名
案例:[root@bai ~]# gpasswd -a user04 yangdd正在将用户“user04”加入到“yangdd”组中
用户 有 自己的 所属组 ----> 主组 gid
用户 后续可以加入其他组 ----> 附属组
# 给组添加多个用户gpasswd -M 用户1,用户2,用户3 组名;
案例:[root@bai ~]# gpasswd -M gao,user03,user666 yangdd[root@bai ~]# id gaouid=1000(gao) gid=1000(gao) 组=1000(gao),1003(yangdd)[root@bai ~]# id user03uid=1003(user03) gid=1010(user03) 组=1010(user03),1003(yangdd)主属组id       主属组        附属组
# 从组中删除用户gpasswd -d 用户名 组名
案例:[root@bai ~]# gpasswd -d gaosc yangdd # 无法从主属组 中移除 当前用户正在将用户“gaosc”从“yangdd”组中删除[root@bai ~]# id gaouid=1000(gao) gid=1000(gao) 组=1000(gao)

权限控制

Linux文件权限

[root@bai abc]# ls -la /abc
总用量 28
drwxr-xr-x. 3 root root 109 10月 26 16:51 .
dr-xr-xr-x. 23 root root 4096 10月 24 10:40 ..
-rw-r--r--. 1 root root 72 10月 26 16:46 a.txt
-rw-r--r--. 1 root root 419 10月 24 17:59 b.txt
-rw-r--r--. 1 root root 68 10月 25 10:15 demo.txt
-rw-r--r--. 1 root root 150 10月 25 09:50 file13.txt
drwxr-xr-x. 2 root root 6 10月 23 15:29 file99
-rw-r--r--. 1 root root 11 10月 24 14:34 filetxt
-rw-r--r--. 1 root root 92 10月 26 16:51 ip.txt


文件读 r ------ > cat/less/more/sort/head/tail等查看文件内容的指令写 w -----> vim echo vi 等编辑指令执行 x -----> 指令[文件系统中鼠标双击]
文件夹读 r ----> ls 列出此目录下的所有文件写 w ----> 可以在目录下新建文件,删除文件,cp mv执行 x -----> cd 目录
#如何知道我和文件之间的权限
1. 明确身份 [属主 属组 其他人]
2. 文件属于你本人 属于你们组 其他人
3. 查看权限码 [r w x -]
#数字与权限之间的对应关系:
r ----- 4
w ----- 2
x ----- 1
a.txt的对外权限-rw-r--r--或者644
#注意 : 权限控制的指令测试,使用其他用户

##文件内容来自授课老师百知昌哥(笔记需要pdf版本的可以私聊小编)

Linux命令详解(4)相关推荐

  1. 《Linux命令详解手册》——Linux畅销书作家又一力作

    关注IT,更要关心IT人,让系统管理员以及程序员工作得更加轻松和快乐.鉴于此, 图灵公司引进了国外知名出版社John Wiley and Sons出版的Fedora Linux Toolbox: 10 ...

  2. c linux time微秒_学习linux,看这篇1.5w多字的linux命令详解(6小时讲明白Linux)

    用心分享,共同成长 没有什么比每天进步一点点更重要了 本篇文章主要讲解了一些linux常用命令,主要讲解模式是,命令介绍.命令参数格式.命令参数.命令常用参数示例.由于linux命令较多,我还特意选了 ...

  3. linux下载命令 scp,linux命令详解之scp命令

    作用 scp命令常用于linux之间复制文件和目录. scp是secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令. 格式 从本地复制到远程 复制文件 sc ...

  4. linux中date使用方法,linux命令详解date使用方法(计算母亲节和父亲节日期脚本示例)...

    linux命令详解date使用方法(计算母亲节和父亲节日期脚本示例) 发布于 2016-02-07 15:58:40 | 108 次阅读 | 评论: 0 | 来源: 网友投递 LinuxLinux是一 ...

  5. RAR for Linux 命令详解

    RAR for Linux 命令详解 用法:  rar <命令>-<开关 1> -<开关 N> <压缩文件> <文件...> <@列表 ...

  6. Linux命令详解之 ls

    linux 命令详解 本文主要内容来自Linux man 手册 命令名称: ls ( list files / list directory contents )列举目录内容 命令用法: ls [选项 ...

  7. Linux命令详解之 mv

    linux 命令详解 本文主要内容来自Linux man 手册 命令名称: mv(move)移动/重命名文件 命令用法: mv [选项]... [-T] 源文件 目标文件 mv [选项]... 源文件 ...

  8. Linux命令详解之w命令

    Linux命令详解之w命令 1.命令详解 ··· NAMEw - Show who is logged on and what they are doing. w命令就是用来展示谁在登录,以及他们在做 ...

  9. Linux命令详解:md5sum 命令

    Linux命令详解:md5sum 命令 一.md5 算法介绍 二.md5sum 命令使用说明 三.md5sum 命令帮助 四.md5sum 命令选项.参数 语法 选项 参数 五.md5sum 命令实战 ...

  10. Linux命令详解之 head和tail

    linux 命令详解 本文主要内容来自Linux man 手册 命令名称: head 输出文件的开头部分 tai 输出文件的结尾部分 命令用法: head/tail [选项]... [文件]... [ ...

最新文章

  1. spark mongo java_java及spark2.X连接mongodb3.X单机或集群的方法(带认证及不带认证)...
  2. 【Java】基于注解开发初探
  3. 双目视觉几何框架详解(玉米专栏8篇汇总)
  4. 万元华为旗舰新机超21万人预约,网友:有钱人真的多!
  5. 基于JAVA+SSH+MYSQL的鲜花订购系统
  6. day11函数的进阶动态参数,命名空间,作用域,第一类对象
  7. C#对象序列化与反序列化
  8. Spark编写UDF函数案例
  9. 前端分页插件pagination
  10. 春节返乡,到底返的是什么?
  11. 配置无线AP 采用POE供电模块怎么配置无线AP没有POE交换机
  12. 关于搭建k8s集群遇到的问题与解决方法
  13. python e_python 常数e
  14. C++ enum前置声明
  15. 消息称苹果最快将于2022年推出折叠屏iPhone
  16. perl调用其他的perl_Perl可能是老派,但它继续吸引新用户
  17. wx._core.wxAssertionError: C++ assertion “GetEventHandler() == this“ failed at ..\..\src\common\winc
  18. 虚拟机建立游戏服务器,在虚拟机上创建游戏服务器
  19. 中国上海人工智能CIMCAI世界第一完成两百万次AI验箱上亿次箱识别,成熟AI产品运行超7百万小时智慧港航智能化中国上海人工智能
  20. 周末充实的一天,20230218模拟面试感悟

热门文章

  1. scratch-gui 项目启动全过程
  2. 深度学习基础知识(发展历史)
  3. [IOS APP]从文言到白话-蒋勋说中国文学
  4. MVC中数据类型的基本常识和运用
  5. Apache ActiveMQ 入门实践
  6. Bak文件在编程中的作用
  7. innovus:如何在init design之后新增参考库(lib/lef)
  8. vue3:Module not found: Error: Can‘t resolve ‘fs‘ in
  9. 计算机毕业设计|课程设计基于SSM的药品进销存管理系统开题报告
  10. 谷歌浏览器将网页作为一个app打开