一 、虚拟机初涉
虚拟机的作用(通俗):顾名思义就是虚拟出来的电脑,这个虚拟出来的电脑和真实的电脑几乎完全一样,所不同的是他的硬盘是在一个文件中虚拟出来的,所以你可以随意修改虚拟机的设置,而不用担心对自己的电脑造成损失,因此可以用来做试验什么的,呵呵,差不多就是这样了,不知道我说的能明白不^_^,简单说就是一句话,虚拟 出来的电脑,你干什么都行。 现在说一下虚拟机的软件,主要是两中,VirtualPC和VMware。软件的选择也是有门道滴,嘿嘿,简单来说,VPC的设置很简单,一路next就行了,VM设置相对麻烦一些,不过也不是麻烦很多,但是VM拥有更好的性能,可以说和真实的电脑性能完全一样,还可以用桥接的方式和现在的电脑互连^_^,可以研究的东西就更多了
常见的命令:
1 rht-vmctl start desktop ##开启虚拟机
2 rht-vmctl view desktop ##显示虚拟机的UI界面
3 rht-vmctl reset desktop ##重置(虚拟机被玩坏了或者虚拟机的东西太多-->交互:询问是否重置y表示yes)
4 rht-vmctl poweroff desktop ##断电,关闭虚拟机
补充:rht-vmctl status desktop ##查看虚拟机的运行状态
manualrht-vmctl(翻译):redhat virtual machine controller
细节:终端字体变大(ctrl+shift+“+”-->保护眼睛);小( ctrl+"-")
(2)虚拟机的用户登陆问题
普通用户:回车键进入student(相当于输入了student)--->输入用户名的密码--->进入到系统用户的登陆界面(左上角的位置显示用户)
超级用户:默认隐藏,必须点击Not Lists,输入用户名(root)和密码才能进入登陆界面
补充:用户登出
gnome-session-quit --force 或者 logout(点击)
(3)语言调整
需求:系统的创建如果没有设置字体,则无法输入中文,因此必须设置
[Applications]----->[System Tools]---->settings----->Region & language --->language---->Chinese
或者gnome-control-center --->命令控制中心--->命令行的形式进入[Settings]
(4)设置终端快捷键的开启
[Applications]----->[System Tools]---->[settings]------>[keyboard]---->[Shortcuts]---->+---->Name:随意 Command:gnome-terminal(开启终端的命令,最好是绝对路径)--->点击diasbled---->选则对应的快捷键(eg:ctrl+t)来替代,然后测试!
简洁方式同上
############################分割线###################################
二 、命令初涉
(1)基本概念
[kiosk@foundation1 ~]$:用户名(当前打开shell的用户)+分隔符+机器名(默认主机名的简写形式)+当前的工作目录 身份提示符
身份提示符:#表示超级用户(root),$表示普通用户
行提示符:光标闪动的地方
注意:命令要在行提示符之后输入才能执行,单向的输入!
后续:"[kiosk@foundation1 ~]$"这一部分修改方式!
(2)切换用户
[kiosk@foundation0 Desktop]$ su -l username
说明1:高级用户切换到低级用户不需要密码,低级用户切换到高级或者平级用户的切换需要密码
(3)控制台的开启
应用:可以解决死机的问题,运维人员通常在此黑窗口执行命令(电脑可能不配置显卡)
Ctrl+Alt+F(1|7) ------>进入图形界面桌面(纯文本)
Ctrl+Alt+F(2~6) ------->进入虚拟控制台(黑窗口,终端),用户名和密码的登陆!
补充:运行级别
init 0 -->关机
init 1 -->单用户模式
init [2-4] -->无图模式(常用 init 3),进入虚拟控制台(黑窗口,终端)
init 5 -->Linux的X11图形界面,进入图形界面桌面(纯文本)
init 6 -->重启
后续:通过脚本的形式(for in)来进行关闭多台主机的图形界面!
应用:界面卡死的流程!
#################################分割线#####################################
虚拟控制台相关信息:
Red hat Enterprise Linux Server 7.0 (Maipo) ##系统版本
Kernel 3.10.0-123.el7.x86_64 on an x86_64 ##内核版本,系统位数
desktop0 login:root ##登陆用户名称输入
Password: ##密码输入无回显
后续补充:控制台信息的相应配置文件
(4)屏幕管理
ctrl+L--->(终端命令的清屏);windows(图标)+L--->(锁屏--安全考虑,否则会扣钱)
(6)在当前终端中,通过快捷键打开其它终端
ctrl+shift+t----->打开终端显示在同一个界面显示
ctrl+shift+n---->分页打开一个新的终端
注意:以上两种方式的前提必须是已经打开一个terminal!
提示:鼠标的两种方式、命令的一种方式、自定义快捷键的方式
(5)命令的执行
1.命令必须在行提示符之后输入
2.命令格式 :命令 参数 目标
3.ctrl +c ##撤销命令的执行 c-->cancel --->测试:ping 域名
4.命令参数
-参数 ##单词缩写
--参数 ##单词的全拼
(6)命令的帮助
1)查看命令用途
whatis 命令 ##查看命令的用途
2)查看命令的用法(基本)
命令 --help ##查看命令的基本用法,适用于多数命令
[] ##标示选项可以加也可以不加
... ##标示选项加入的个数任意
<> ##标示选项是必须要加入的
Userage: ##标示命令用法
Opetions: ##对参数的作用做说明
3)man查看命令或文件的说说明手册(更详细!)
man:manual(手册)
mandb-->一般是刚装的系统没有更新!
man的级别
1 #常规命令(类比:passwd)-->常用1
2 #系统调用接口(API)
3 #函数库调用接口
4 #特殊设备文件(/dev/null等)
5 #系统配置文件(类比:/etc/passwd)->文件的说明!-->常用2
6 #游戏规则说明
7 #包说明
8 #系统管理命令-->常用3
9 #内核调用规则
man -k 字符串 ##看当前字符串在系统中拥有的man的级别(类比:passwd级别)
/usr/share/doc ##系统中所有安装过的软件的帮助文档(大型软件文档)
man 命令 界面的常用命令的展示
上下键 ##以行为单位递进,向上或向下一行
pageup|pagedown ##按页查询,向下一个屏幕或者向上一个屏幕
d|u ##向下或者向上半个屏幕
G|gg ##跳转页面到man最下面或最上面
/关键字 ##搜索关键字,关键字会高亮显示,搜索方向:n向下匹配,N向上
:q ##退出帮助页面
注意:上面的也是less的相关命令的操作!
#######################分割线##############################
三、系统的使用基础方法
(1)系统登陆(两种,后续关注)
图形登陆方式-->logout
文本登陆方式-->gnome-session-quit --force #注销用户 --force强制注销,不询问
(2)工作界面转换
ctrl+alt+上|下------>四个界面的轮换转换
(3)终端开启(开启bash)
1.Applications>Utilities>Terminal
2.鼠标右键----->open in terminal
3.命令行:gnome-terminal
4.ctrl+shift+n ##在新窗口中打开shell
ctrl+shift+t ##同一个窗口中打开新的tab
5.退出终端:exit | ctrl+d
(5)锁屏
ctrl + alt +L ##在rhel7.0
win键 + L ##在rhel7.2(采用)
######################################分割线###############################################
四 、简单的系统命令
(1)date
watch -n 1 命令:动态监视某条命令(date)的运行轨迹(每一秒显示一次)
watch -n 1 date ###监控:让date命令每秒执行(监控)一次,ctrl +c 可以退出监控模式
需求1:修改系统时间
date命令将日期设置为2014年6月18日 -----------> date -s 06/18/14
将时间设置为14点20分50秒 -----------> date -s 14:20:50
将时间设置(全)为2014年6月18日14点16分30秒(MMDDhhmmYYYY.ss) ----------->date 06181416(21世纪)14.30
需求2:显示多少天前(后),系统时间不变
查看x天前或者后的时间:date -d +(-)xday
设定date的输出格式:+%....
需求3:显示年月日,带上下午上午还是下午(AM,PM--->%p)
date +%(起始分隔符)【"分隔符(%或者-)"】m分隔符d%p
eg:%Y:%m:%d %p
(2)passwd
改用户的密码:普通和超级
普通:
[kiosk@foundation0 Desktop]$ passwd
Changing password for user kiosk. ##改变普通用户密码
Changing password for kiosk.
(current) UNIX password: ##输入当前密码
New password:
BAD PASSWORD: The password is the same as the old one ##和原始密码不能相似
New password:
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic ##密码必须是无序数字+字母组合
New password:
BAD PASSWORD: The password is shorter than 8 characters ##密码必须>8位
超级:
[root@foundation0 ~]# passwd ##默认是在当前登陆用户(不指定用户)
Changing password for user root ##改变超级用户密码
New password: ##输入密码
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: ##确认密码
passwd: all authentication tokens updated successfully.
passwd参数的基本信息
passwd 参数 用户名称
-S student ##用户密码信息
--status student 。。。。。。
-l student ##锁定帐号(锁,权限控制,相当于封号,普通用户之间不能相互切换)
-u student ##解锁
-n 1 student ##设定密码最短有效期
-x 30 student ##设定密码最长有效期
-w 3 student ##警告期(密码到期的倒计时)
-i 2 student ##设定用户非活跃天数(密码到期的延长时间,判死缓)
-d student ##清除用户密码
需求:提升用户密码的级别(安全)
思路:定期修改,即用户一登陆就改密码(-e参数)
监控passwd密码信息:watch -n 1 passwd -S student
#################################分割线#########################################
(3)file
file 文件名字 ##查看文件类型(Linux下一切皆文件)
(4)需求:文件的查看
前提:测试文本的产生
for i in `seq 1 30`
do echo "$i">>number.txt
done
cat filename ##显示文件的全部内容(-b 加上行号; -n显示空行的行号)
less file ##分页浏览(用户体验好),按“q”退出
head filename ##显示一个文件的前10行
head -n 5 filename ##前五行
补充:head -n -3 file ##打印除了后三行之外的其它行!
tail filename ##显示文件后几行(默认10行)
tail -n 5 filename ##显示一个文件的后5行
补充:tail -n +3 file ##从第3行开始打印到最后!
##############################分割线##############################
(5)wc
需求:统计文件容量信息
wc -l 行数
-w 字数
-c 字节数(Byte)
-m 字符数
字符与字节的关系取决于编码方式(UTF-8|GBK等!)
默认:wc file -->默认是行数、单词、字符!
补充:统计文件的大小(KB/M/T)------>du -sh 文件(目录)
细节:默认会多加一个回车(空格),所以总是多一个字节或字符!
###############################################################
(6)tab键
说明:在系统中table键可以自动补齐存在的命令,文件名称和某些命令的参数
(1) 可以补齐系统中存在的命令,文件名称,和部分命令的参数
(2)当一次<TAB>补齐不了时代表以此关键字开头的内容不唯一
(3)可以用两次<TAB>来列出所有以此关键字开头的内容
(7)history历史调用
history ##显示历史(所有的命令操作,每个命令对应一个行号)
history -c ##清除"当前环境"(bash)当中的历史命令(关闭bash后重新显示)-->常用!
!数字 ##执行第多少行命令(基于history中命令的行号)
!字母 ##执行最近一条以这个字母开头的命令
ctrl +R +关键字 ##执行历史命令中最近一条"含有"这个关键字的命令--->如果不想执行--->ctrl+u来退出!
上下键 ##逐行调用命令(了解)---->重复高效
后续:详细记录每条命令的执行时间!
history -c 引申-->程序关闭,占用的资源(内存)被回收-->临时配置起效,关闭后history重新显示!
(8)linux命令行中的快捷键
左右 ##一个字符一个字符移动
ctrl +左右 ##一个字一个字移动
ctrl + a ##光标移动到行首
+ e ##光标移动到行尾
+ u ##光标所在位置删除到行首--->(vim的插入模式也可以用)
+ k ##光标所在位置删除到行尾
+ r+关键字 ##调出最近一条含有关键字的命令
+ c ##撤销以输入的命令
+ d ##关闭当前环境
+ L ##清空屏幕
+ shift + c ##复制(区别Windows下的操作)
+ shift + v ##粘贴
+ shift + t ##在现有shell中重新打开一个table
+ shift + n ##在shell中打
+ alt +上|下 ##切换工作界面
+ alt + f1|f7 ##进入图形界面
+ alt + f2-f6 ##进入虚拟控制台
补充1:ctrl+w ##删除前一个单词(vim的插入模式也可以用)
补充2:ctrl+& ##可以恢复ctrl+u撤销的内容!
###############################分割线################################
五 、文件(目录)的操作
(1)touch
作用:创建新文件或者修改文件的时间戳!
touch file ##创建文件!
查看文件的时间戳:stat filename
Access: 2018-07-27 20:45:32.203353882 +0800------------------->文件最后一次被读取的时间(access time---->cat时变化)
Modify: 2018-07-27 20:45:32.220354009 +0800------------------->文件最后一次内容被修改的时间(modify time)
Change: 2018-07-27 20:45:32.233354106 +0800------------------->文件属性最后一次发生变化时间(名字/权限属性等--status time)
用法:touch -t YYMMDDhhmm 的格式
原因:回头补充
(2)mkdir
目录:容器,里面放一些文件或者子目录!
############################
1)创建
创建单级目录:mkdir 目录名 路径
创建多级目录:mkdir -p(pass-->默认不存在的目录也创建) 目录名(westos/wzj/com) 路径
############################
2)删除(remove)-->细节的斟酌
需求:(1)删除文件;(2)删除目录
参数说明:
-r :级联删除,可以删除目录以及目录下的文件(只要目录不为空就必须加r参数)!
-f :忽略不存在的文件,从不给出提示,如果删除的文件"不存在"则忽略(容错率很高)!
-i :每次删除的时候,给出提示,提醒是否确认删除(y/n) -->交互!
root:默认包含i参数!--> alias | grep rm
###############细节问题##############
说明:以下图片仅仅是为了说明dir1/dir2与dir1/dir2/*的删除问题!
图1:需求-->删除目录下的内容(包含文件和目录)!
错误信息提示:删除的如果是目录必须加上-r,不管目录下有内容没有!
图2:需求-->删除目录下的内容(不包含自身),但是目录下的内容除了文件还有目录!
说明:并没有删除隐藏的文件或者目录!
图3:删除目录下面的内容(只有文件没有目录),不删除当前目录的两种对比!
注意:如果目录下只有文件(没有目录),删除目录里面的内容-->最好加上"-r"参数,表示一种选择,实际我们并不知道目录下是否有目录!
说明:带有*的表示直接定位到目录里面的内容!
补充:文件名或者目录,以特殊字符开头的,删除的处理办法
特殊字符(在shell中有特殊含义的):~、-等
处理方法:rm -- -file 或者 rm ./-file
后续:可以通过脚本的形式,找到当前的文件名(包含隐藏)!
####################################################
3)复制
cp 源文件的路径 目标路径
说明:如果是当前目录必须写上".",不能为空
复制的特点:相当于创建了一个新的文件(时间发生改变了)
目录:同上
4)移动
语法:mv 源文件路径 目标路径
同一磁盘:重命名
不同磁盘:复制后删除
理解:剪切后粘贴
注意:移动关于目录不需要递归(-r)参数
补充:mv的专题!
##########################分割线###################################
六、 文件的寻址
1)文件的地址分为:
相对路径:
相对与当前系统所在目录的一个文件名称的简写
此名称省略了系统当前所在目录的名称
此名称不以“/”开头
此名称在命令执行时会自动在操作对象前加入“PWD”所显示的值
2)绝对路径:
绝对路径是文件在系统的真实位置
此命令是以“/”开头的
此命令在命执行时系统不会考虑现在所在位置的信息
引用:把动作变成名称字符,这种方法叫引用--->创建有空格的文件!
##########################分割线##################################
七、关于路径的命令
1)目录的切换(cd----change directory)
cd directory ##切换工作目录到指定目录
cd - ##切换工作目录到之前所在目录(退回上一次操作所在的目录)
cd ~ ##切换到自己的家目录(等效-->cd)
cd ~usernmae ##切换到指定用户家目录(只有root可以用)
cd .. ##进入到当前目录的上级目录
cd . ##进入当前目录
说明:"."场景,自己经历过的,创建了一个"~"目录,然后删除竟然将家目录删除!
后续:家目录的恢复!
2)高级的用法
(1)说明:关于当前目录的说明-->"."
".":表示的是redhat Linux系统版本的用法
"~+":表示的是所有Linux(类Unix)通用的方式
(2)说明:关于当前目录之前所在的目录的说明-->"-"
"-":只是cd命令所特有的!(记录的是OLDPWD变量保存的值)
"~-":表示的是所有Linux(类Unix)命令通用的方式
需求:将文件复制(移动)到当前用户的之前所在的目录
cp /etc/passwd - #想法:将此文件移动到当前目录的之前所在的目录
ls #发现当前目录有一个"-"
{cat -、cat "-"、cat \-、cat .\-} -->无法查看文件的内容
cat ./\- #正确(转义)
cat ./- #正确
常规做法:
#之前-->在/mnt/目录中
cp /etc/passwd ~- ======说明:"-"是cd特有的!
cd ~-
后续:引用和转义-->在shell编程中会见讲到!
###########################分割线#############################
八、查看
ls(list) ##如果后面没有目标那么默认目标为当前目录
ls direcory|filename ##列出文件或目录内容
ls -d direcotry ##列出目录本身
ls -l filename|dorectory ##列出文件或目录里面内容的属性(长列表的形式)(inode-->文件被记录的次数)
ls -ld directory ##列出目录本身属性
ls -a ##显示目录中的所有内容,包括以"."开头的隐藏文件
ls -R ##递归显示目录中的内容(子目录的内容)-->类似tree命令的含义!
补充:ls -F ##后缀加上文件类型的指示符号 (*/=@| 其中一个)、-S(排序)、-s(size-->大小)
#############################分割线##################################
九 、统配符(touch、rm、ls、cp、mv应用)
(1)统配符的说明
目的:主要是对一些文件统一管理,方便后续操作
* ###匹配0到任意字符[0,+无穷](特殊符号、字母、数字、空格)
? ###匹配单个字符(1位)
[[:alpha:]] ###匹配单个字母
[[:lower:]] ###匹配单个小写字母
[[:upper:]] ###匹配单个大写字母
[[:digit:]] ###匹配单个数字
[[:alnum:]] ###匹配单个数字或字母
[[:punct:]] ###匹配单个符号(特殊--@#&一类的)
[[:space:]] ###匹配单个空格(制表符!)
补充:[[:punct:][:upper:]] ##单个符号或单个大写字母
(2){}与[]的说明
{}表示存在的--->精确
{1..9} ###1-9
{a..f} ###a-f
{1,3,5} ###135
{a,c,e} ###a c e
{1..3}{a..c} ###(9个)1a 2a 3a 2a 2b 2c 3a 3b 3c--->笛卡尔坐标系!
[]表示存在的(1位)---->模糊
[a-C] ###aA bB cC(不区分大小写)-->ASCII码!
[a-c] ###aA或者bB或者c
[1-3] ###1或者2或者3--->等效形式([123])
!、^取反
[!3-5] #1位,不是3-5的数字
[^3-5] #1位,不是3-5的数字
补充:^[3-5] #含义!
模糊:删除可以,创建不行(不明确-->不知道到底创建哪个)!
案例:
测试:
touch WESTOS_class{1..2}_linux{1..6}
mkdir study;mv WESTOS* study/
touch redhat_version{1..8}
mkdir /mnt/VERSION
mv redhat_version* /mnt/VERSION/
mkdir SINGL;cp /mnt/VERSION/redhat_version{1,3,5,7} SINGL/
mkdir DOUBLE;cp /mnt/VERSION/redhat_version{2,4,6,8} DOUBLE/
mkdir CLASS{1..2}; mv study/WESTOS_class1_linux? CLASS1/
mv study/WESTOS_class2_linux? CLASS2/
mkdir confdir;cp /etc/*[[:digit:]]*.conf confdir
rm -fr confdir/ study/ /mnt/VERSION/ DOUBLE/ SINGL/CLASS{1..2}
补充:cp、rm、mv关于统配符的细节问题
(1)cp源文件不存在时-->{}与[]的区别!
图1:cp时,精确匹配出错-->因为要求源文件存在,但是实际情况并不存在!
图2:cp时,模糊匹配没有出错--->原因:此源文件不一定存在!
应用场景:shell脚本的批处理--->涉及命令回传码的应用!
(2)mv同上
(3)rm的小细节
思考:如果不想考虑源文件存不存在的问题--->有则删,无则略过!
小结:cp、mv如果不采用文件名模式(来源于精通正则表达式)匹配,源文件必须存在,如果不存在则报错!
相关链接:Linux 通配符、元字符和特殊字符详解
###########################分割线#############################
十、FHS结构(面试)
linux是一个倒树型结构,最大的目录名称叫“/” (根目录)
#####linux系统中的二级目录######背(默写)
/bin ##二进制可执行文件,系统"常规"命令
/boot ##启动目录,存放系统开机启动文件,内核,初始化程序(文件)
/dev ##系统设备管理文件-->光驱、内存条、硬盘(看得见模的着的)
/etc ##大多数系统配置文件存放路径(杂七杂八的文件)-->系统的运行方式-->案例演示:用户名的改变
/home/子目录 ##普通用户家目录-->普通用户一进入bash中的默认位置
/lib ##函数库-->命令运行所必须的函数!
/lib64/ ##64位函数库
/media ##临时挂载点--> 光驱(不常用)
/mnt ##临时挂载点-->一般是手动挂载点(redhat的镜像文件的挂载-->软件的安装)
/run ##自动临时设备挂载点-->U盘-->(/run/media/用户/U盘的名字/)
/opt ##第三方软件安装路径
/proc ##系统硬件信息和系统"进程信息"(开启一个软件-->资源管理器的id-->此目录查询子目录)
/root ##超级用户家目录
/sbin ##系统"管理"命令,通常只有root可以执行(useradd)
/srv ##系统数据目录
/var ##系统数据目录
/sys ##内核相关数据
/tmp ##临时文件产生目录(一般关机前最好删除)
/usr/ ##用户相关信息数据(unix system resource)
后续:三级和四级目录的文件!