Linux

Linux课堂笔记(1)

LINUX的重要性


  • Linux应用广泛:电子商务网站;股票市场;为智能电视提供支持等
  • Linux提供了推动云革命的基础技术,用来构建下一代基于容器的微服务应用
  • 在云计算中,私有云或公有云环境中的云实例使用Linux作为操作系统

Linux优点


  • 开源软件
  • 访问可脚本化的命令行接口(CLI)
  • 模块化操作系统,轻松替换或删除组件

红帽介绍


  • 世界领先的开源软件解决方案供应商,通过社区驱动的方式提供可靠和高性能的云,Linux,存储和虚拟化等技术
  • 红帽负责帮助客户和开源社区及其合作伙伴建立联系,提供开源软件解决方案。除了参与linux社区之外,红帽还参与了其它开源社区,如:0penstack,Openshift等

介绍Linux发行版本


  • Fedora:一个开发和发布完整,免费,基于Linux的操作系统的社区项目。Fedora项目将所有内容回馈给自由的开源世界,任何人都可以参与其中。
  • Fedora优点注重创新,缺点缺乏长期稳定性。每6个月进行一次新的重要更新,更新可能会带来重大变化。Fedora仅为发行版本提供大约一年的支持(两次重要更新),不适合企业使用。
  • 红帽企业Linux(RHEL) :红帽提供的企业级商业化发行版本。RHEL经过广泛测试,拥有庞大的合作伙伴生态系统,硬件和软件认证,咨询服务,培训及为期多年的支持和维护保障。
  • CentOS:社区驱动型Linux发行版,源自大量开源红帽企业Linux代码库和其它来源。此发行版本免费,易于安装,由一个独立于红帽运营的志愿者用户社区提供人员配备和支持。

BASH SHELL简介


  • Linux命令行由名为shell的程序提供;命令行:基于文本的界面,用于向计算机系统输入指令
  • RHEL为用户提供的默认shell是:GNU Bourne-Again Shell(Bash)
  • Shell提示符:等待用户输入命令时显示的一个字符串($或者#)
  • Bash shell:提供脚本语言,支持自动化任务

Shell基础知识


shell提示符下输入的命令由三个基本部分组成

  • 运行的命令
  • 调整命令行为的选项
  • 命令目标的参数

举例:usermod  -L user1

登录本地计算机


  • 物理控制台
  • 虚拟控制台:切换方式ctrl+alt+F1~F6
  • RHEL8:默认图形登录界面显示在tty1
  • 图形界面登录,图形环境将使用当前未被使用的第一个虚拟控制台登录
  • 图形界面登录后,在不注销当前用户的情况下,使用其它用户登录,会占用下一个空闲虚拟控制台

网络登陆


  • Linux用户通过网络连接到远程系统获取对远程系统的shell访问权限,通常使用SSH
  • SSH命令格式:ssh  remoteuser@remotehost

开启终端窗口如下图

设置终端窗口快捷键方法


  • 在系统桌面鼠标右键—–点击settings—–点击Devices—–点击keyboard
  • 点击下图中的加号
  • 如下图输入快捷键名字和命令,然后点击图中红色箭头
  • 然后出现如下图,按照英文提示在键盘输入自己需要的快捷键,举例ctrl和t
  • 然后出现如下图,点击添加即可
  • 终端窗口字体大小调节快捷键:ctrl+shift和加号(扩大字体);ctrl和减号(缩小字体)

基本命令语法


  • 分号作为命令分隔符:command1;command2
  • 简单命令演示:ls;date;passwd;file;cat;less;head;tail;wc
[root@localhost ~]# ls
[root@localhost ~]# date
[root@localhost ~]# date  --help
[root@localhost ~]# file  /etc/passwd
[root@localhost ~]# cat  /etc/passwd
[root@localhost ~]# less  /etc/passwd
[root@localhost ~]# head  /etc/passwd
[root@localhost ~]# head  -n  2  /etc/passwd
[root@localhost ~]# tail  /etc/passwd
[root@localhost ~]# tail  -n  2  /etc/passwd
[root@localhost ~]# wc  /etc/passwd
[root@localhost ~]# wc  -l  /etc/passwd
  • TAB键补全
  • 反斜杠\(转义字符):忽略紧跟在后面的字符含义,回车进入新行(>符号显示),增强命令可读性

命令历史记录


  • history
  • !number
  • !String

编辑命令行


  • ESC键+点:调用上一个命令最后使用的参数
  • 快捷键

课堂练习


1)	显示当前的日期和时间
2)	以12小时制显示当前时间
3)	使用wc命令显示/etc/passwd文件行数,字节数
4)	显示/etc/passwd前5行
5)	完成第4题后,结合使用Bash快捷键,显示/etc/passwd后10行
6)	同时显示/etc/passwd文件的前2行和后2行
7)	使用历史记录再次运行第4题

课堂练习参考答案

1)	[root@localhost ~]#date
2)	[root@localhost ~]#date  +%r
3)	[root@localhost ~]#wc  -l  -c  /etc/passwd
4)	[root@localhost ~]#head  -n  5   /etc/passwd
5)	[root@localhost ~]#tail  使用ESC+点调用第4题的/etc/passwd
6)	[root@localhost ~]#head  -n  2  /etc/passwd;tail  -n  2  /etc/passwd
7)	[root@localhost ~]#history

文件系统层次结构


Linux系统中的所有文件存储在文件系统中,它们被组织到一个颠倒的目录树中,称为文件系统层次结构。

  • /目录是根目录;字符/也用于文件名中的目录分隔符
  • 目录内容简介
  • 绝对路径:指定文件在文件系统结构中的确切位置,从根目录开始
  • 相对路径:指定从工作目录到达该文件所需的路径
  • 判断绝对路径和相对路径的方法:第一个字符是正斜杠(/)是绝对路径,反之是相对路径
  • 导航路径常用命令:pwd;ls(-l,-a,-A,-d,-R);cd;cd -;cd ~;cd ..
  • .(点)表示当前目录;..(点点)表示父目录
  • touch命令:创建空文件,将文件的时间戳更新为当前日期和时间
  • 常用文件管理命令

注意

  • mkdir  -p  创建目录时为请求目标位置创建缺失的父目录
  • rm  -f:    强制删除

课堂练习题


1)	用户主目录中创建3个子目录:stu1,stu2,stu3
2)	用户主目录中创建文件名为songX.mp3,snapX.jpg,filmX.avi(X取值1~6)
3)	将songX.mp3文件移动到stu1目录中,将snapX.jpg文件移动到stu2目录中,将filmX.avi文件移动到stu3目录中
4)	用户主目录中,创建3个新的子目录:friend,family,work,将含有数字1和2的文件(所有类型)复制到friend子目录中,将含有数字3和4的文件(所有类型)复制到family子目录中,将含有数字5和6的文件(所有类型)复制到work子目录中
5)	用户主目录中,创建1个名为shida的子目录,将目录work及work目录中的文件复制到shida目录中
6)	删除work目录及work目录中的文件,删除时需要有提示信息

课堂练习参考答案

1)	[root@localhost ~]# mkdir stu1 stu2 stu3
2)	[root@localhost ~]# touch song1.mp3 song2.mp3 song3.mp3 song4.mp3 song5.mp3 song6.mp3
[root@localhost ~]# touch snap1.jpg snap2.jpg snap3.jpg snap4.jpg snap5.jpg snap6.jpg  \回车
> film1.avi film2.avi film3.avi film4.avi film5.avi film6.avi
3)	[root@localhost ~]# mv ~/song1.mp3 ~/song2.mp3 ~/song3.mp3 ~/song4.mp3 ~/song5.mp3 ~/song6.mp3  stu1
[root@localhost ~]# cd stu2
[root@localhost stu2]# mv ~/snap1.jpg ~/snap2.jpg ~/snap3.jpg ~/snap4.jpg ~/snap5.jpg ~/snap6.jpg  .   
[root@localhost ~]# mv ~/film1.avi ~/film2.avi ~/film3.avi ~/film4.avi ~/film5.avi ~/film6.avi  stu3
4)	[root@localhost ~]# mkdir friend family work
[root@localhost ~]# cp ~/stu1/song1.mp3 ~/stu1/song2.mp3  ~/stu2/snap1.jpg ~/stu2/snap2.jpg  ~/stu3/film1.avi ~/stu3/film2.avi  friend
[root@localhost ~]# cp ~/stu1/song3.mp3  ~/stu1/song4.mp3 ~/stu2/snap3.jpg ~/stu2/snap4.jpg  ~/stu3/film3.avi ~/stu3/film4.avi family
[root@localhost ~]# cp ~/stu1/song5.mp3 ~/stu1/song6.mp3 ~/stu2/snap5.jpg ~/stu2/snap6.jpg  ~/stu3/film5.avi ~/stu3/film6.avi  work
5)	[root@localhost ~]# mkdir shida
[root@localhost ~]# cp -r work/   shida/
6)	[root@localhost ~]# rm -r work/

硬链接和软链接


  • 管理文件间的链接:创建指向同一文件的多个名称。方法:硬链接和软链接
  • 硬链接概念:从初始名称到文件系统上的数据,每个文件都以一个硬链接开始。当创建指向文件的新硬链接时,也会创建另一个指向同一数据的名称。新的硬链接与原始文件名的作用完全相同。
  • 创建硬链接语法格式:ln   源文件名  新建链接文件名
  • 硬链接的局限性: 1.只能用于常规文件,不能用于创建指向目录或者特殊文件 2.只有位于同一文件系统上的两个文件才能创建硬链接
  • 软连接(符号链接)概念:软连接是指向现有文件或目录的特殊类型的文件。
  • 创建软链接语法格式:ln   -s  源文件名   新建链接文件名
  • 软链接优势: 1.可以链接位于不同文件系统上的两个文件 2.不限于常规文件,可以指向目录或者特殊文件

软链接注意事项

  • 建议使用绝对路径
  • 悬挂链接:源文件被删除,软连接仍然指向该文件
  • 目录软链接,进入软链接的目录时,使用-P选项可直接进入源目录

硬链接课堂练习


[root@localhost ~]#mkdir test
[root@localhost ~]#touch file1
[root@localhost ~]#ln ~/file1  ~/test/hard

软连接课堂练习


[root@localhost ~]#touch file2
[root@localhost ~]#ln   -s  ~/file2      ~/test/soft1        文件软连接
[root@localhost ~]#ln   -s  ~/shida     ~/test/soft2        目录软连接

模式匹配


使用“扩展”的元字符匹配需要寻找的文件名和路径

波形符扩展:波形符(~)可以匹配当前用户的主目录

  • 举例:echo  ~root;echo  ~user;echo显示波形符字符的值
  • 举例:ls  ~root;ls  ~user

大括号扩展:大括号扩展用于生产任意字符串

  • 举例:file{1..3}
  • 举例:file{a..b}
  • 举例:file{1,2}{a,b}

命令替换:允许命令的输出替换命令行上的命令本身,格式$(命令)

  • 举例:echo  today  is  $(date  +%A)

课堂练习


1)	用户家目录下的shida子目录中创建名为project的空目录,在新创建的project目录中创建两个空文件:tv_season1_.odf和tv_season2_.odf
2)	用户家目录下创建名为tv_seasonX_Y.ogg文件,X替换为季数,Y替换为该季的集数,共2季,每季6集
3)	用户家目录下为悬疑小说创建名为mystory_chapterX.odf的文件,将X替换为数字1到8
4)	用户家目录下的videos子目录下创建两个子目录:seasnon1和season2
5)	将tv第一季和第二季分别移动到season1和season2目录中
6)	用户家目录下的shida子目录中创建my_bestseller/chapters目录用于整理悬疑小说
7)	my_bestseller子目录下创建3个子目录,名字分别为editor,changes,vacation
8)	进入chapters目录,将悬疑小说的所有文件移动到当前目录
9)	将悬疑小说第1章和第2章移动到目录editor
10)	将悬疑小说第3章和第4章移动到目录vacation
11)	将悬疑小说第5章和第6章移动到目录changers
12)	进入project中,将悬疑小说目录chapters和悬疑小说的第7,8章一起复制到project目录中
13)	进入season1目录中,将第1季的第1,2集移动到用户家目录
14)	接着13题,将season2目录中的第2季的第1,2集移动到用户家目录
15)	为子目录shida创建新的软件链,并命名为/boot/soft
16)	使用cd命令进入/boot/soft的时候直接进入到链接的源目录
17)	删除所有新建立的目录和文件

课堂练习参考答案


1)	[root@localhost ~]# mkdir  -p  shida/project
[root@localhost ~]# touch  shida/project/tv_season{1,2}_.odf
2)	[root@localhost ~]# touch  tv_season{1,2}_{1..6}.ogg
3)	[root@localhost ~]# touch  mystory_chapter{1..8}.odf
4)	[root@localhost ~]# mkdir  -p  videos/season{1,2}
5)	[root@localhost ~]# mv  tv_season1*   videos/season1
[root@localhost ~]# cd  videos/season2
[root@localhost season2]# mv   ~/tv_season2_*   .
6)	[root@localhost ~]# mkdir  -p  shida/my_bestseller/chapters
7)	[root@localhost my_bestseller]# mkdir  editor  changes  vacation
8)	[root@localhost my_bestseller]# cd  chapters/
[root@localhost chapters]# mv   ~/my*   . 
9)	[root@localhost chapters]# mv  mystory_chapter{1,2}*   ../editor/
10)	[root@localhost chapters]# mv  mystory_chapter{3,4}*   ../vacation/
11)	[root@localhost chapters]# mv  mystory_chapter{5,6}*   ../changes/
12)	[root@localhost chapters]# cd   ~/shida/project/
[root@localhost project]# cp  -r   ~/shida/my_bestseller/chapters   . 
13)	[root@localhost project]# cd   ~/videos/season1
[root@localhost season1]# mv tv_season1_{1,2}*  ~/
14)	[root@localhost season1]# mv   ../season2/tv_season2_{1,2}*    ~/
15)	[root@localhost ~]# ln   -s   ~/shida/   /boot/soft
16)	[root@localhost ~]# cd   -P  /boot/soft