在linux命令详解(1)
linux命令详解(2)
基础上添加一些新的指令,后续可以查阅Linux命令详解(4)
备注:快捷查看指令 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 '+参数'
# 查看服务器的时间
案例:
[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 文件夹 语法特点是:只能在已经存在的目录下创建文件夹,并且只能创建一层文件夹
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@bai 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
# 输出语句 ----> 指令运行以后,在操作界面打印内容
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 ll
ll 是 `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]# alias
alias 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 nb
nb 是 `ls -la --full-time' 的别名
[root@bai b]# nb /a
总用量 4
drwxr-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.txt
drwxr-xr-x. 2 root root 130 2023-10-23 17:04:36.027418341 +0800 peiqi
# 取消别名
unalias 别名;
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中文文档网站
# 重启
语法: 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 [参数] 文件
参数:
-n 显示行号
-A 包括控制字符(换行符/制表符) $ ---->换行符
查看文件内容的前几行 ----> 可以查看大体量文件
语法:
head 文件 # 默认查看前10行
head -数字 文件 # 指定查看文件前几行
或者
head -n 数字 文件
tail 查看文件内容的尾部
语法:
tail [可选参数] 文件
tail -n 文件 # 查看文件后n行信息
参数:
-f # 一般用于查看动态变化的文件 例如: 日志
动态查看文件的尾部
tail -f 文件 # 实时查看文件的后10行信息
tail -f -n 5 文件 # 实时查看文件的后5行信息
或者
tail -5f 文件
grep过滤关键字 ---- 针对文件内容进行过滤(筛选)
[root@bai /]# grep 'root' /etc/passwd # 过滤文件中带有root的行 [精确查找]
注意:
'' 可以省略 一般用于区分指令关键字
# 筛选所有以root开头的 行 ^---->以....开头
[root@bai /]# grep '^root' /etc/passwd
# 筛选所有以 nologin 结尾的行 $ -----> 以......结尾
[root@bai /]# grep 'nologin$' /etc/passwd
分页展示
语法:
less 文件
分页展示以后,指令:
空格 ----> 翻页
回车键 ----> 下一行
方向键 ↑ 方向键 ↓ ------> 上下滚动
/关键字 ------> 在文件中查找指定的关键字,并高亮展示
n -----> 搜索时,往下翻
N -----> 搜索时,往上翻
分页显示文件内容 ---- 底部会展示文件内容查看进度百分比 看完直接退出
语法:
more 文件名
分页展示以后,指令:
空格 -----> 翻页
回车 -----> 下一行
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
指令:
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 文件
详细的展示文件时间:
访问时间
修改时间 ----- 修改内容
改变时间 ----- 修改文件属性,例如 权限 名字
root的权限:
安装Centos时,需要设置root账户的管理员密码, root就相当于是超级用户,拥有最高的系统所有权,能够管理系统的各项功能
比如:
添加普通用户/删除普通用户 启动/关闭进程 开启/禁用硬件设备....
root权限必须很好的去把握 否则一个错误的指令可能会摧毁系统
root
UID 好比身份证号 root用户的UID是 0
GID 好比家庭编号(户口本编号) root 用户的GID 是 0
普通用户
UID 从 1000 开始 由 超级管理员创建 -----> 任何一个用户在创建时,都会在系统中创建一个同名的组[主属组]
GID
虚拟用户(系统用户)
UID 1 ~ 999
/etc/passwd
用户组group
为了方便管理同一组的用户。 ---- GID 是组与组之间的区别
|-假设一个公司有多个部门,每个部门有很多员工。
|- 可以对技术部门设置部门内的权限---- 可以访问公司的数据库
|- 员工可以独立赋予权限
用户和组的关系
1. 一对一 一个用户可以存在一个组里,组里就一个成员
2. 一对多 一个用户可以加入多个组
3. 多对一 多个用户可以在一个组中,这些用户和组有相同的权限
4. 多对多 多个用户存在多个组中
多用户,多任务
所谓多用户多任务是指同一时间,有多个用户登录同一个系统执行不同的任务 ---- 互不影响
为了保证多用户,多任务正常执行,不出问题 ----- 设置不同的权限 Linux就是通过权限划分来管理实现多用户 多任务。
用户相关的信息 ------ /etc/passwd
组相关的信息 ------ /etc/group
# 创建组
groupadd [可选参数] 组名 # 未指定gid时 默认从1000开始 依次递增 [从当前最大值开始进行递增]
# 创建组并制定gid
groupadd 组名 -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
# 展示系统中所有组名
cut -d ":" -f 1 /etc/group
# 展示系统中所有组名 + gid
cut -d ":" -f 1,3 /etc/group
/etc/passwd
shell的解释器版本
/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 user06
uid=1013(user06) gid=1013(user06) 组=1013(user06),1012(user05)
# 创建用户 并指定 主属组
语法:
useradd 用户名 -g 主属组的id
#1. 判断用户是否已存在
语法:
id 用户名
举例:
[root@bai abc]# id user01
uid=1001(user01) gid=1005(user01) 组=1005(user01)
用户标识 所属组标识 所属组
[root@bai abc]# id user02
id: user02: no such user
#2. 查看当前正在使用的用户
语法:
whoami
#3.删除用户
语法:
userdel -r 用户名 # 删除用户的同时,删除对应的家目录
# root账户可以给其他用户设置密码 普通用户设置密码以后才可以进行登录
语法:
passwd 用户名
案例:
[root@bai abc]# passwd user02
更改用户 user02 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
# root账户重置自己的密码
语法:
passwd
案例:
[root@bai abc]# passwd
更改用户 root 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
注意:
#普通用户修改自己的密码
1. 需要提供原密码
2. 新密码必须遵守规范(包含大小写字母 不能出现单词 必须包含特殊符号 @ # $ % 数字 长度不低于8)
3. 限定修改次数
# 切换用户
su - 用户名
注意:
root 切换其他普通用户 直接切换
普通用户 切换回 root 需要管理员密码
# 修改用户名 -----> 只修改用户名,其他(uid gid 所属组)不变
语法:
usermod -l 新名字 原名
案例:
[root@bai ~]# usermod -l user666 user02
[root@bai ~]# id user02
id: user02: no such user
[root@bai ~]# id user666
uid=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
注意:
只针对已存在的用户
# 给组添加账户
语法:
gpasswd -a 用户 组名
案例:
[root@bai ~]# gpasswd -a user04 yangdd
正在将用户“user04”加入到“yangdd”组中
用户 有 自己的 所属组 ----> 主组 gid
用户 后续可以加入其他组 ----> 附属组
# 给组添加多个用户
gpasswd -M 用户1,用户2,用户3 组名;
案例:
[root@bai ~]# gpasswd -M gaosc,user03,user666 yangdd
[root@bai ~]# id gaosc
uid=1000(gaosc) gid=1000(gaosc) 组=1000(gaosc),1003(yangdd)
[root@bai ~]# id user03
uid=1003(user03) gid=1010(user03) 组=1010(user03),1003(yangdd)
主属组id 主属组 附属组
# 从组中删除用户
gpasswd -d 用户名 组名
案例:
[root@bai ~]# gpasswd -d gaosc yangdd # 无法从主属组 中移除 当前用户
正在将用户“gaosc”从“yangdd”组中删除
[root@bai ~]# id gaosc
uid=1000(gaosc) gid=1000(gaosc) 组=1000(gaosc)
##文件内容来自授课老师百知昌哥(笔记需要pdf版本的可以私聊小编)