命令行提示符:
# 代表root用户
$ 代表普通用户
命令行基本快捷键:
esc + . 打印上一个命令的参数
放大字体 ctrl + +
缩小字体 ctrl + -
打开新的标签页 ctrl + T
打开新的独立窗口 ctrl + N
清空屏幕 ctrl + l
退出当前账户 ctrl + d
中止当前任务 ctrl + c
补全按键 tab
上一个命令 方向键up
下一个命令 方向键down
ctrl + a 光标移动到开头
ctrl + e 光标移动到末尾
ctrl + u 将光标前的内容删除
ctrl + k 将光标后的内容删除
ctrl + 方向键左 光标按单词向左移动
ctrl + 方向键右 光标按单词向右移动
ctrl + w 按单词向左删除
shell命令包含三个部分:
1.命令(可执行的)
2.选项 (一个或者多个,改变命令的行为)
3.参数 (命令的目标)
例子:tail —help
Usage: tail [OPTION]… [FILE]…
用法: 命令 【选项】… 【参数】…
(一个或多个选项 一个或者多个参数)
基本命令:
ls 列出当前目录下存在的文件
ls -l 长列表格式显示文件信息
ls -a 显示所有文件(包括隐藏文件)
ls -R 递归显示(包括子目录)
ls -1 列表格式
ls -r 反向排序
ls -t 根据时间先后排序
command —help 查看命令具体的用法,包含的参数等等。。
补全按键 tab
command1;command2
执行多个命令
passwd 更改账户密码
换行符 \
history 查看历史命令列表
!number 执行对应序号的命令
!string 执行最后一次以string开头的命令
history -w file 保存历史命令到文件里
history -c 清空历史命令
文件管理命令:
file filename 查看文件类型
cat file 获取文件内容显示在当前终端
less file 按页显示文件的内容
(按q退出)
head file 显示文件的头部十行
head -n num file 显示文件的头部num行
tail file 显示文件的尾部十行
tail -n num file 显示文件的尾部num行
wc file 显示文件内容的行数、单词数、字节数
wc -l file 只显示文件内容的行数
wc -w file 只显示文件内容的单词数
diff file1 file2 对比两个文件的不同
文件系统的规范:
/usr
unix system resource 存放安装的软件,共享库文件,只读应用程序
/usr/bin 用户命令
/usr/sbin 系统管理命令
/usr/local 本地自定义软件(一般源码编译安装软件的时候会放置在此目录下)
/bin 存放普通用户可以执行命令的二进制文件
/sbin 存放超级管理员可以执行命令的二进制文件
/etc 存放系统的配置文件
/root root用户的家目录
/home 存放普通用户的家目录
/var 存放一些可变动的数据,如数据库,日志文件等
/tmp 存放临时数据,文件不被访问10天之内就会删除
/dev 包含特殊的设备文件,供系统用户硬件的访问
/boot 存放启动程序文件
/run 应用程序运行时产生的数据,重启丢失,存在内存中
linux目录结构的概念:
cd 切换工作路径(不指定路径,默认返回家目录)
pwd 显示当前工作路径
文件的管理:
查找文件
find /dir/-name filename 在dir目录下精准匹配文件名为 filename的文件
locate /dir filename 在dir目录下模糊匹配文件名为 filename的文件(包含)
创 建文件(更改文件的时间戳) touch
stat file 查看文件的详细信息
Access: 访问时间
Modify: 创建时间
Change:更改时间
touch -md ‘2021-02-02 11:11:11’ file1 更改文件的创建时间
cp file file1 复制单个文件 (创建副本)
cp file /dir/file2 复制file到dir目录下并命名为file2
cp -i file file1 -i选项提示重复文件覆盖
cp file1 file2 file3 /dir/ 复制多个文件
mv file1 file2 剪切file1并命名为file2
mv file1 /dir/file2 剪切file到dir目录下并命名为file2
mv -i file4 file5 提示覆盖
mv file5 file6 file7 /dir/ 移动多个文件
rm file1 删除单个文件
rm file -f 强制删除文件(root不提示确认)
rm file1 file2 file3 删除多个文件
mkdir dir 生成目录
mkdir dir/dir1/dir2 -p 递归创建目录
cp -r dir1 dir2 递归地复制目录(只复制文件)
cp -a dir1 dir2 继承属性并复制目录(包括权限)
mv dir2 dir3 /dir 移动目录
rm -r dir 删除目录
rm -fr dir 强制删除目录
rmdir 删除空目录(目录非空无法删除)
link文件:硬链接(不能为目录创建)和软链接(相当于windows里的快捷方式)
ln file file1 为file创建名为file1的硬链接
ln -s file file1 为file创建名为file1的软链接
ln -s dir file 为目录创建名为file的软链接
软链接:当被指向的文件删除后,软链接随之失效
硬链接:当被指向的文件删除后,不发生变化
shell拓展:
* 零个或者多个字符
? 任何一个字符
[abc…] 方括号内任意一个字符
[!abc…] 不包括方括号内任意一个字符
[[:alpha:]] 任何字母字符
[[:upper:]] 任何大写字符
[[:lower:]] 任何小写字符
[[:alnum:]] 任何数字和字母字符
[[:digit:]] 0-9任何单个数字
[[:punct:]] 除了空格和字母数字以外的任何可打印字符
[[:space:]] 任何一个空白字符
{ }拓展 【必须是成对出现才有意义】
实际作用:快速创建多个文件或者目录
例子:
touch file{1..100} 生成file1..file100的100个文件
变量替换:$
等式赋值: var = var1 把var1的值赋予var
查看变量: echo $var
别名中的变量替换:
例子:
alias guanbiwangluo=’nmcli connection down ens160’
【把命令的值赋予guanbiwangluo 执行guanbiwangluo 等于执行nmcli connection down ens160】
永久生效需要在/etc/bashrc里最后一行添加alias guanbiwangluo=’nmcli connection down ens160’
保留字面含义:
\ 取消后面单个字符的特殊含义
“ “ 取消shell拓展的含义,但是不压缩变量替换和命令执行
‘ ‘ 取消所有字符的特殊含义
man page:
在执行关键字搜索之前需要执行mandb
更新手册数据库
(mandb每天自动更新,新机器需要手动更新)
关键字搜索:【查找手册关于keyword的所有章节】仅root用户可执行
man -k keyword
man page快捷键:
g 回到顶部
G 回到底部
/ word 向下查找关键字
? word 向上查找关键字
n 向下查阅找到的关键字
N 向上查阅找到的关键字
重定向:
command > file 把command的标准输出结果定向输出到文件里
command 2> file 把command的错误输出结果定向输出到文件里
command >> file 重定向追加输出到文件
command 2> /dev/null 把错误输出丢弃
command &> file 把 标准输出、错误输出都重定向放到文件
构建管道:命令的输出结果交予其他命令处理
管道符: |
commmand1 | command2
tee管道:
command1 | tee file | command
tee管道在中间:
命令1的输出结果定向到文件里,再交给命令2处理,显示在终端上
command1 | command | tee file
tee管道在末尾:
命令1的输出结果交给命令2处理过后,重定向输出到文件
vim编辑器的使用:
命令模式下的快捷键:
home 光标跳转到行首
end 光标跳转到行尾
ctrl + 方向右 光标按单词向右跳转
ctrl + 方向左 光标按单词向左跳转
gg 光标跳转到文章开头
G 光标跳转到文章末尾
yy 复制光标处的一整行
p 粘贴到光标处
dd 删除光标处的一整行
d^ 删除光标前到行首
d$ 删除光标后到行尾
/ word 向下查找关键字
? word 向上查找关键字
n 向下查阅找到的关键字
N 向上查阅找到的关键字
底层模式:
:w 保存
:q! 强制退出(不保存)
:wq! 或者 :x 保存并强制退出
:w file 另存为文件
:r file 读取文件到当前的文件下
:s /old/new 替换当前行第一个old单词为new
:s /old/new/g 替换当前行所有old单词为new
:n,m s/old/new/g 替换n行到m行所有的old为new
:%s /old/new/g 替换文本内的所有old为new
:%s /old/new/gc 确认是否进行覆盖操作
:set nu 显示行号
:set nonu 不显示行号
:syntax on 打开语法高亮
:syntax off 关闭语法高亮
环境变量:
变量的作用:shell程序如何运行,通过变量的值来决定,程序执行的时候根据变量的值来确定行为。
export var
放大变量为环境变量(可以在同一bash环境下所有子bash中生效,但无法跨程序(另一个用户环境)生效)
export var
unset var 取消放大变量
set 查看当前所有变量
env 查看当前所有环境变量
用户和组:
用户账户提供系统的安全边界
组是用户的集合
信息文件分别存放在/etc/passwd /etc/group
创建用户取的默认值配置文件:/etc/login.defs
useradd username 创建名为username的用户
useradd -b /dir username 创建用户指定家目录
useradd -c ‘see you again’ user5 创建用户并添加注释信息
useradd -e ‘2022-07-07’ user6 创建用户并指定账户的过期时间
useradd -g group username 创建用户并指定主要组
useradd -u 1008 user7 -o -u选项指定UID,-o选项允许创建同一UID的用户
useradd -r uername 创建系统用户
useradd -s /sbin/sh user10 添加用户并指定使用的shell程序
修改用户:
usermod -md /dir user6 移动用户的家目录
usermod -c ‘love story’ user5 更改用户的注释信息
usermod -e ‘2023-7-1’ user6 更改用户账户的过期时间
usermod -g group username 更改用户的主要组
usermod -G group username 添加用户的附加组
usermod -aG group usename 当用户的附加组有两个或两个以上时添加附加组
usermod -s /bin/sh user10 更改用户的shell环境
usermod -L username 锁定用户
usermod -U username 解锁用户
删除用户:
userdel -fr username 连带家目录一起强制删除用户
groups groupname 查看附加组信息
添加组:
groupadd groupname 添加名为 groupname 的组
groupadd -r groupname 添加系统组
groupadd -g ** groupname 添加组指定GID
修改组信息:
groupmod -g 1020 group3 修改组GID
groupmod -n newname group3 改组名
修改组成员信息:
groupmems -g groupname -l
列出组成员的信息
groupmems -g groupname -a username
为 groupname组,添加一个username用户
groupmems -g groupname -d username
为 groupname组,删除一个username用户
gpasswd -a username groupname
添加用户到组里
gpasswd -d username groupname
从组里删除用户
删除组:
groupdel group1
管理用户密码:
配置文件放在:/etc/shadow
限制用户账户的三种方法:
usermod -L
usermod -s /sbin/nologin
usermod -e 或者 chage -E
配置密码期限策略:
chage -l username 显示用户的密码策略
chage -d 0 username 强制用户下次登录马上修改密码
chage -d username 更改用户上次更改密码的时间,为天数(天数从1970年1月1号开始算起)
例子:
chage -d 10 user8
chage -l user8
Last password change : Jan 11, 1970
更改密码期限策略:【是从上次更改密码的时间开始算起的】
两种方法:1.直接更改/etc/shadow配置文件
2.命令行更改
chage -m 3 user 设置用户更改密码后3天才允许继续更改密码
chage -M 365 user 设置密码有效期为一年
chage - W 7 user 设置密码到达有效期前的多少天进行提醒
chage -I 5 user 设置密码过渡时间为5天【密码过期后,5天内还可进行登录】
chage -E ‘2022-7-7’ user8 更改账户的过期时间
文件系统的权限:
三个级别:用户、组、其他人
三个类别:读、写、执行
rwx 为一组 可以是 rw- r— w-x …
也可以是 rwxrwxrwx
r 为读取权限
对文件的影响:可以读取文件的内容
对目录的影响:可以列出目录的内容【只有r权限的时候,只能看到文件名】
w 为写权限
对文件的影响:可以修改文件的内容
对目录的影响:可以创建文件或者删除目录里的文件【只有w权限无法创建或者删除目录里的文件,必须同时具备有x权限。当目录为空的时候,可以删除,目录不为空则无法删除目录】
x 为执行权限
对文件的影响:可以作为命令执行文件
对目录的影响:可以作为工作目录【只有x权限,可以cd进入目录里,但还需要r权限才能列出内容】
更改文件的权限:
chmod u=- file | dir 摘除文件用户级别的所有权限
