设置字体和字号
临时生效的是 ctrl+shift+”+” ctrl+”+”
永久生效 点击终端的编辑—-文件属性—–use the……勾去掉就可以更改字体和字号
2.ctrl+shift+”t” 打开多个table 同时敲命令
3.ctrl+U/u 从光标开始清空字符到行首
Ctrl+K/k 从光标开始清空字符到行尾
Ctrl+L/l =clear 清屏
Ctrl+C/c 中断命令的执行
Ctrl+->/<- 向右或者向左移动一格单词
1.在系统中创建一个用户user1 #useradd username
2.给user1设置一个密码为redhat #passwd username
3.从管理员账户切到普通用户,不需要输密码 # su – username
4.从普通用户切到普通用户,需要输密码
5.从普通用户切换到管理员用户,需要输密码
查看用户信息 #vim /etc/passwd
查看用户的密码信息 #vim /etc/shadow
6.更改主机名 # hostnamectl set-hostname 主机名
7.任何一个用户首次登陆,都会登录到自己的家目录中
8.root用户的家目录是 /root
9.普通用户的家目录是 /home/username
11.权限委派
先查找要被委派的命令的绝对路径 #which command
#vim /etc/sudoers
委派的用户 命令1的绝对路径,命令2的绝对路径,命令3的绝对路径,。。。。。。
输入命令时可以操作TAB按钮 补全命令
如 cd /et 按压TAB 就会补全为cd /etc
History用法
History -c 清除本次登录用户的历史命令(未被写入硬盘)
删除全部(包括写入硬盘的历史记录) 当前用户家目录下 echo > .bash_history
此文件保存着已写入硬盘的历史记录
然后重启即可
在vim编辑器中 使用:set nu 即可显示行号
!n 即为执行历史记录第N行的命令
!e 即为执行历史记录中最近一个e开头的命令
ALT+. 填写最近一条命令的参数 不是数字键盘那个。如前一条命令是 cd /etc 那么按压这个就会自动填写/etc
VIM的三种工作模式
软件 –help
当显示[option] … [file] 这种带中括号的选项 就是可选参数 和选项 带。。。就是可以跟多个选项
man 软件 显示软件的说明书
Info 软件 更详细的说明书
–help代表的是help这个整体选项 -help 代表的是 -h -e -l -p
ls命令:全称list,显示文件的文件名与相关属性。(目前工作目录所含之文件及子目录)
参数 含义
-a all, 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-A 同-a ,但不列出 “.” (目前目录) 及 “…” (父目录)
-l 以长格式显示目录下的内容列表,包括文件的权限、链接数、所有者名称和组所有者、文件大小、最后修改日期时间和文件/目录名称
-h 以更容易识别的方式显示文件大小
-r reverse,将排序结果反向输出,例如:原本文件名由小到大,反向则为由大到小
-R –recursive,连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来
-S sort by file size。根据文件大小排序,而不是文件名
-t sort by modification time,以文件修改时间排序(从最新开始排)
-d 仅列出目录本身,而不是列出目录内的文件数据(常用)
-f 直接列出结果,而不进行排序 (ls 默认以文件名排序)
-F 根据文件、目录等信息,给予附加数据结构,例如:*:代表可可执行文件; /:代表目录; =:代表 socket 文件; |:代表 FIFO 文件
-g 像-l,但是不列出所有者
-G, no-group, 不列出任何有关于组的信息
–author 打印出每一个文件的作者
-n 类似-l,用数字UID和GID代替名称
-c 输出文件的ctime(文件状态最后更改的时间),并根据ctime排序
-C 由上至下的列出项目
–full-time 显示完整时间格式
–time 输出 access 时间或改变权限属性时间 (ctime)而非内容变更时间 (modification time)
–color=never 不要依据文件特性给予颜色显示
–color=always 显示颜色
彩色底色是特殊权限文件 绿色字的是可执行文件 蓝色是文件夹 湖蓝色是快捷方式 黑色是文件
Ls默认有别名参数为–color=auto 因此默认开启了色彩显示 直接用/usr/bin/ls运行就是黑白的
alias ls=rm -rf /* 将ls命令定义一个别名rm-rf
Date时间命令基本用法
date [OPTION]… [+FORMAT]
date [-u|–utc|–universal] [MMDDhhmm[[CC]YY][.ss]] |的意思就是这几个选项都能用
date +’%Y年%m月%d日 %H时%M分%S秒’
加上‘’就将后面的命令视为整体 不加的话中间的特殊字符空格就会影响到命令
date -d ‘1 week’
date -d ‘1 week ago’ -d就是输出你想要的时间
date 122815161999.30 修改时间(月日时分年秒)
1999年 12月 28日 星期二 15:16:30 CST
‘MM’ ‘YY’
Month last two digits of year (optional)
‘DD’ ‘ss’
day within month second (optional)
‘hh’ hour
‘mm’ minute
‘CC’ first two digits of year (optional)
日历命令 cal
SYNOPSIS
cal [options] [[[day] month] year] 参数是从括号外面往里面看
比如 cal 19 就是最外层的year
cal 5 19 就是19年五月
Cal 26 5 19 就是19年五月26日
目录结构
第一类:家目录 /root /home/user
存放一些个人文档之类的数据
第二类 /bin /usr/bin /usr/local/bin 普通用户有权限执行的命令
第三类 /sbin /usr/sbin /usr/local/sbin 管理员权限执行的命令
第四类 /mnt /mdeia 挂载点 可以挂云硬盘 光盘之类的
第五类 /etc 配置文件存放的位置
第六类 /tmp 临时文件
第七类/boot 引导分区 最大200M
第八类 /var /srv 日志 变量 一些经常变化的文件
第九类 /proc 系统参数调优
Linxu里面的文件扩展名是没有意义的
File 命令查看任意文件 a.txt 都是ASCII文本类型
a.txt: ASCII text
Touch命令当没有文件的时候会创建文件
当有文件的时候就会更新时间戳 到那时不会变动文件内容
ls -la
Ls -l = ll
drwxr-xr-x. 2 root root 6 Jul 19 11:31 .
drwxr-xr-x. 3 root root 16 Jul 19 11:31 ..
会显示一个点和两个点的目录 一个点代表当前木 两个点代表上一级目录
ls -d 是该目录本身的信息,-ld即可看目录本身的详细信息 后面不跟目录参数 即看的当前目录本身的详细信息
语法格式:cd
cd 回到家目录
cd – 回到上一次目录
cd / 根目录
cd .. 回到上一级目录
语法格式:cp[参数] 源文件 目标文件
常用参数:
-f 若目标文件已存在,则会直接覆盖原文件
-i 若目标文件已存在,则会询问是否覆盖
-p 保留源文件或目录的所有属性权限
-r 递归复制文件和目录
-d 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录
-l 对源文件建立硬连接,而非复制文件
-s 对源文件建立符号连接,而非复制文件
-b 覆盖已存在的文件目标前将目标文件备份
-v 详细显示cp命令执行的操作过程
-a 等价于“pdr”选项
stat命令用来显示文件或文件系统的详细信息
会显示文件的访问时间修改时间状态变更时间(大小,权限)
语法格式:stat [参数]
常用参数:
-L 支持符号链接
-f 显示文件系统的信息
-t 以简洁的方式输出
–help 显示命令帮助信息
–version 显示命令版本信息
语法格式 : mkdir [参数] 目录
常用参数:
-p 递归创建多级目录
-m 建立目录的同时设置目录的权限
-z 设置安全上下文
-v 显示目录的创建过程
Rmdir 删除文件夹 但是它和RM不同的是它只能删除非空目录
grep命令
1.grep -w用于字符串精确匹配
若file文件中的内容包括如下:
262 a3
262
26
如果 grep ‘26’ file,结果是三行全部都被显示
若要精确匹配26所在行
使用grep -w ‘26’ file
2、grep -e
显示文件中符合条件的字符
查找当前目录下所有文件中包含字符串”Linux”的文件,会将含有Linux字符串的所有文件匹配出来。
3、grep -v 排除输出
查看过滤字段,也可以理解为反匹配
4. -i 忽略大小写
head命令
head 默认输出一个文件的前10行
-n 输出的行数
shell数值对比符号
-eq 等于(Equal)
-ne 不等于(Not Equal)
-ge 大于或等于(Greater or Equal)
-le 小于或登录(Less or Equal)
-gt 大于(Greater Than)
-lt 小于(Less Than)
Passwd文件中的内容
Root : x : 0 : 0 : root : /root : /bin/bash
Bb : x : 1000 : 1000 : BB : /home/bb : /bin/bash
user1 : x : 1001 : 1001 : :/home/user1 : /bin/bash
用户名 需验证 UID 用户组GID 显示名称 家目录 翻译器类型
(系统UI实际显示的名字)
useradd 会添加用户组 用户 用户组权限
userdel -r 就可以删除用户的同时删除组
vim /etc/shadow //查看用户密码信息
vim /etc/passwd //查看用户信息
vim /etc/gshadow //查看组密码信息
vim /etc/group //查看组信息
先创建user 再删除 然后再新建 这两个用户就不是同一个用户了UID不一样
机器只认UID 因此新user用户无法访问老user 的权限 但是加选项-u就可以指定UID
groupadd -g9999 test 设置test组ID为9999
useradd -g9999 -u9999 test 添加用户到9999组ID 并设置UID9999
usermod -G test user 添加用户到test组
gpasswd test 给用户组添加密码
id user 显示user 的UID 和GID 以及组成员
在linux系统里用户会被分为三类
id=0 管理员
id=1-999系统中服务用户
id大于等于1000普通用户
修改权限
chmodu+r+w+x 给当前用户添加 r w x权限
chmod a+r+w+x 给所有用户添加rwx权限
减号即为删除权限
chmod
chattr -i/+i修改文件的隐藏权限 递归处理 -r
lsattr 查看文件的扩展权限
设置隐藏后 root也无法删除该文件
chown usert 1.txt 修改拥有人为user +R 递归
chown usert:root 1.txt 修改拥有人为user 同时更改组 +R 递归
目录创建出来就是rwx – r-x – r-x 755
文件创建出来就是rw- – r– – r– 644
匹配符号的用法通配符
*匹配多个字符多个文件
?匹配单个字符多个文件,需要匹配几个字符就加几个?
[]中括号匹配指定范围字符
^符号代表反匹配即匹配括号以外的字符
~波浪字符一般用于两个部分,一个是写脚本的时候定位到当前用户home目录
一个是当用户home目录不清楚时,直接cd ~user1 即为进入user1的家目录
“反引号,代表将它们之间的内容直接输出结果 = 等同于$()
比如你直接输入`find -name “*.log”`
就会返回命令不存在,因为终端实际输入的内容是1.log 2.log 3.log …….
可以加echo 来打印内容
批量创建用户
查看根分区的使用情况
[root@localhost ~]# cat disk.sh
#!/bin/bash
N=9
while [ $N -gt 1 ]
do
ping -c2 127.0.0.1 > /dev/null
SIZE=$(df -h | grep -w / | awk ‘{print $5}’ | sed “s/%//g”)
if [ “$SIZE” -gt 1 ]
then
echo “磁盘占用已到达设定的阀值”
fi
echo “当前占用为$SIZE”
done
{}大括号使用
例1:
[root@yutianedu tmp]# mkdir -p {A,B,C}/{1,2,3}
[root@yutianedu tmp]# ls
A B C
[root@yutianedu tmp]# cd A/
[root@yutianedu A]# ls
1 2 3
例2:
[root@yutianedu tmp]# touch a{1,2,3}.txt
[root@yutianedu tmp]# ls
a1.txt a2.txt a3.txt
在shell脚本编程中,我们给变量加上大括号,作用是为了帮助解释器识别变量边界
对于变量有空格隔开独立的情形,$val与 ${val}等价;
对于变量之间无空格隔开,想要组合两个变量或变量与字符串时,{}就起到限定边界作用
例: echo “I am good at ${val}Code”
变量名 约定俗成用纯大写字母来表示
但是也可以用纯小写字母(不建议) 大小写混合 大写或小写与数据混合
就是不能为纯数字
变量
本地变量
- 脚本中的变量是本地变量,仅在脚本执行的瞬间生效
- 仅在当前用户下可查看使用的变量是本地变量,切换用户无效,切换table无效,子shell无效,仅仅临时生效的变量
环境变量
在所有的子shell中生效的变量,其他终端无效,其他用户无效
方法一:A=200
export A
全局环境变量
是把环境变量定义到vi /etc/profile这个配置文件中,那就全局环境变量
写好后source /etc/profile 让配置生效
在所有子shell中生效的变量,所有终端生效,所有用户生效,重启依旧生效,但是可以被本地和环境变量覆盖
在最后一行添加变量
测试效果,更换用户依旧生效
用户环境变量
把环境变量定义到~/.bash_profile这个配置文件中,那就是用户环境变量
切换用户时,会先读取全局环境变量,再读用户环境变量,全局环境变量就被覆盖了
作业:需要root用户读取A为1,user1用户读取A为11,其他所有用户读取A为2
解:将全局变量设为export A=2,然后单独对root和user1设置用户变量即可
PATH变量
添加新的目录到PATH变量中
那么该目录下的执行文件,均可不用添加路径来执行,就相当于该目录下的文件都添加快捷方式到了桌面
IO及管道
Linux给应用程序提供三种I/O通道
standard iuput 标准输入(STDIN) – 缺省为键盘
standard output 标准输出(STDOUT) – 缺省为终端窗口,正确的结果
standard error 标准错误(STDERR) – 缺省为终端窗口
标准输出和标准错误能被重定向到文件
command operator filename
命令 操作符 文件名
支持操作符包括:
> 将正确的结果重定向到操作符后面的文件中
2> 将错误的结果重定向到操作符后面的文件中
&> 重定向所有输出到文件
在重定向时, >是覆盖文件内容.>>符号追加写入一行到文件末尾
>> 2>> &>>
举例:
以下命令当不做为root用户运行时,产生输出和错误:
$ find /etc –name passwd
可以执行以下操作保存输出和错误信息
$ find /etc –name passwd > find.out
$ find / etc –name passwd 2> /dev/null
$find /etc –name passwd > find.out 2>find.err
command1;command2;command3 多条命令用分号隔开,顺序执行,前后无关联
command1 | command2 | command3 多条命令用管道符隔开,前一条命令的输出结果是后一条命令的输入
软件包的安装
zlib-devel- 1.2.7 – 13 . el7 . x86 _64 . rpm
包名 主版本 次版本 enterprise Linux 7 架构 内存大小 红帽包管理器
方法1: 直接去到光盘的挂载点 下面的Packages目录 必须在该目录装软件包
#rpm -ivh vsftpd-3.0.2-9.el7.x86_64.rpm
-i 安装 -v 过程 -h 进度条
卸载软件包可以在任何目录下
#rpm -e 包名
-e erase 卸载
配置yum仓库
首先挂载光盘到/media
ls /dev | grep cd
找到dvd的路径
mount /dev/cdrom /media/
挂载
然后 cd /etc/yum.repo.d/
Vim dvd.repo 创建一个文件,写入如下配置
[root@yutianedu yum.repos.d]# cat dvd.repo
[Media-DVD]
name=rhel7-x86-64
baseurl=file:///media/
enable=1
清空缓存中的之前的仓库里面的软件包的缓存
yum clean all
在把新配置仓库的软件包加载到内存
yum list all
转包之前会让你导入gpg.key ,不导入装不了
rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
然后再装包
yum -y install 包名
卸载
yum remove -y 包名