1.实验一  Lniux简介
 
操作系统:系统调用+内核
Linux 平台:大都为开源自由软件,用户可以修改定制和再发布,由于基本免费没有资金支持,部分软件质量和体验欠缺;有全球所有的 Linux 开发者和自由软件社区提供支持
 
 
2.实验二:
1、实验楼环境介绍 
2、常用 Shell 命令及快捷键 
3、Linux 使用小技巧
 
UNIX/Linux 本身是没有图形界面的,我们通常在 Unix/Linux 发行版上看到的图形界面实际都只是运行在 Linux 系统之上的一套软件。
 Linux 上你可以自己选择安装不同的桌面环境,甚至可以定制自己的专属桌面
 
Linux的终端:
1.使用Linux时并不是直接与系统打交道,而是通过称为shell的中间程序完成的。
2.Linux 系统还提供了一个叫做终端模拟器的程序(Terminal)——实现在一个窗口中完成接受用户输入和显示输出
*终端(Terminal)和控制台(Console)是有区别的
 
终端本质上是对应着 Linux 上的 /dev/tty 设备,Linux 的多用户登陆就是通过不同的 /dev/tty 设备完成的
Linux 默认提供了 6 个纯命令行界面的 “terminal”(准确的说这里应该是 6 个 virtual consoles)来让用户登录,在物理机系统上你可以通过使用[Ctrl]+[Alt]+[F1]~[F6]进行切换。
 
shell:“提供给使用者使用界面”的软件(命令解析器)
 
 
初体验:
 
 
 
实用的小技巧:
 
1.Tab:
 
使用Tab键来进行命令补全。
可以只输入它的开头的一部分然后按下Tab键就可以得到提示或者帮助完成!
 
 
当然不止补全命令补全目录补全命令参数都没问题。
 
 
 
 
2.[Ctrl+c]
 
实用状况:终端中出现无法预料的情况时,想要立即停止并恢复可控的状态。
使用Ctrl+c键来强行终止当前程序(你可以放心它并不会使终端退出)
 
 
 
 
其他的一些快捷键!
按键作用
Ctrl+d 键盘输入结束或退出终端
Ctrl+s 暂定当前程序,暂停后按下任意键恢复运行
Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg
Ctrl+a 将光标移至输入行头,相当于Home
Ctrl+e 将光标移至输入行末,相当于End
Ctrl+k 删除从光标所在位置到行末
Alt+Backspace 向前删除一个单词
Shift+PgUp 将终端显示向上滚动
Shift+PgDn 将终端显示向下滚动
 
3.学会利用历史输入命令:使用方向
 
4.学会使用通配符:通配符是一种特殊语句,主要有星号(*)和问号(?),用来对对字符串进行模糊匹配(比如文件名,参数名)
当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。
终端里面输入的通配符是由 Shell 处理的。
shell处理通配符的过程:
当 Shell 在“参数值”中遇到了通配符时,Shell 会将其当作路径或文件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行代换(路径扩展);否则就将该通配符作为一个普通字符传递给“命令”,然后再由命令进行处理。(实现的路径扩展功能
 
 
 
5.创建多个文件love_1_linux.txt,love_2_linux.txt,... love_10_linux.txt
利用:touch love_{1..10}_linux.txt
 
 

Shell 常用通配符:

字符含义
* 匹配 0 或多个字符
? 匹配任意一个字符
[list] 匹配 list 中的任意单一字符
[!list] 匹配 除list 中的任意单一字符以外的字符
[c1-c2] 匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z]
{string1,string2,...} 匹配 sring1 或 string2 (或更多)其一字符串
{c2..c2} 匹配 c1-c2 中全部字符 如{1..10}

6.在命令行中获取帮助
在 Linux 环境中,如果你遇到困难,可以使man 命令(Manual page
Manual pages 是在 UNIX 或类 UNIX 操作系统在线软件文档的一种普遍的形式。 内容包括计算机程序(包括库和系统调用),正式的标准和惯例,甚至是抽象的概念。用户可以通过执行 man 命令调用手册页
 
(1)获得某个命令的说明和使用方式的详细介绍:man <command_name>
(2)查看 man 命令本身的使用方式:manman
 
man手册的八个区段:
区段说明
1 一般命令
2 系统调用
3 库函数,涵盖了C标准函数库
4 特殊文件(通常是/dev中的设备)和驱动程序
5 文件格式和约定
6 游戏和屏保
7 杂项
8 系统管理命令和守护进程
查看相应区段的内容,就在 man 后面加上相应区段的数字即可:man 3 printf

所有的手册页遵循一个常见的布局,其为通过简单的 ASCII 文本展示而优化,而这种情况下可能没有任何形式的高亮或字体控制。一般包括以下部分内容:

NAME(名称)
该命令或函数的名称,接着是一行简介。
 
SYNOPSIS(概要)
对于命令,正式的描述它如何运行,以及需要什么样的命令行参数。对于函数,介绍函数所需的参数,以及哪个头文件包含该函数的定义。
 
DESCRIPTION(说明)
命令或函数功能的文本描述。
 
EXAMPLES(示例)
常用的一些示例。
 
SEE ALSO(参见)
相关命令或函数的列表。
 
在man中使用搜索/<你要搜索的关键字>
查找到后你可以使用
n键切换到下一个关键字所在处,
shift+n为上一个关键字所在处。
Space(空格键)翻页,
Enter(回车键)向下滚动一行,
j,k(vim编辑器的移动键)进行向前向后滚动一行。
h键为显示使用帮助(因为man使用less作为阅读器,实为less工具的帮助),
q键退出。
 
*更详细的帮助:使用info
快速查看一些它的某个具体参数的作用,那么你可以使用--help参数
 
 
 
*作业
$ sudo apt-get update;sudo apt-get install sysvbanner
banner shiyanlou
 
调整字体:
printerbanner -w 50 A('-w'参数指定打印宽度,因为我们的环境在屏幕中显示比较小,必须要加上宽度限制。)
 
关于实验二最后的作业:
 
Linux下有三个有趣的小工具:
 
1)banner:使用#生成banner
 
2)figlet:使用一些普通字符生成banner
 
3)toilet:使用一些复杂的彩色特殊字符生成banner
 
使用apt-get安装的时候需要输入以下命令:
 
    $ sudo apt-get update  
    $ sudo apt-get install sysvbanner toilet figlet  
 
使用方法:
 
1)banner
 
view plaincopy to clipboardprint?
 
    $ banner EastCoke  
 
 
2)figlet
 
view plaincopy to clipboardprint?
 
    $ figlet EastCoke  
 
 
使用参数-f可以指定字体,如 figlet -f slant EastCoke
 
使用参数-ctf可以使banner居中并且与终端等宽
 
输出到文件可以使用figlet -p < /path/to/file
 
3)toilet
 
view plaincopy to clipboardprint?
 
    $ toilet -f bigmono9 -F gay EastCoke  
                                                           
     
    $ toilet -f mono12 -F metal EastCoke  
                                                                                     
 
 
如果希望在每次打开终端的时候都会显示出banner,可以使用下面的命令:
 
    echo 'toilet -f bigmono9 -F gay EastCoke' >> ~/.bashrc
 
 
 
 
3.实验三  用户及文件权限管理
1.在Linux中创建,删除用户,及用户组操作。
2.Linux中的文件权限设置
 
 
 
一、Linux的用户管理
 
不同用户不可以相互查看修改彼此的文件——Linux的用户管理和权限机制。
 
 
 
输入的第一列表示打开当前伪终端的用户的用户名
第二列的pts/0 中 pts 表示伪终端, pts/0 后面那个数字就表示打开的伪终端序号,
第三列则表示当前伪终端的启动时间。
 
 

who 命令其它常用参数

参数说明
-a 打印能打印的全部
-d 打印死掉的进程
-m am i,mom likes
-q 打印当前登录用户数及用户名
-u 打印当前登录用户登录信息
-r 打印运行等级

2.创建用户

root命令的两大前提:
1.是你要知道当前登录用户的密码
2.是当前用户必须在 sudo 用户组。
 
root 账户拥有整个系统至高无上的权利,比如 新建/添加 用户。高于 Administrator 权限,root 是 Linux 和 UNIX 系统中的超级管理员用户帐户
 
创建叫lilei的新用户:sudo adduser lilei
 
 
该命令不但可以添加用户到系统,同时也会默认为新用户创建 home 目录: ls  /home
 
此时用户已经创建好,使用 su -l lilei 来切换登录用户
退出时可以使用exit  or  Ctrl+d
 
 
 
 
 
3.用户组
 
在 Linux 里面每个用户都有一个归属(用户组),用户组简单地理解就是一组用户的集合,它们共享一些资源和权限,同时拥有私有资源。
 
如何知道自己属于哪一个用户组?
(1)使用groups命令
例:groups shiyanlou
其中冒号之前表示用户,后面表示该用户所属的用户组,每次新建用户如果不指定用户组的话,默认会自动创建一个与用户名相同的用户组。
 
 
(2)查看/etc/group文件
 cat /etc/group | sort
 
可以使用命令过滤掉一些你不想看到的结果:
cat /etc/group | grep -E "shiyanlou|sudo"
 
 
 
 
 
etc/group 文件格式说明
/etc/group 的内容包括用户组(Group)用户组口令GID 及该用户组所包含的用户(User)每个用户组一条记录。格式如下: group_name:password:GID:user_list
新用户获取root权限:
$ su -l lilei
$ sudo ls
 
 
 
 
使用 usermod 命令可以为用户添加用户组,同样使用该命令你必需有 root 权限,你可以直接使用 root 用户为其它用户添加用户组,或者用其它已经在 sudo 用户组的用户使用 sudo 命令获取权限来执行该命令
$ su shiyanlou
$ groups lilei
$ sudo usermod -G sudo lilei
$ groups lilei
 
 
4.删除用户
 sudo deluser lilei --remove-home
 
 

二、Linux 文件权限

1.查看文件权限
ls 命令我们用它来列出并显示当前目录下的文件)
 
ls -l
 
 
 
1.文件类型
Linux 里面一切皆文件
链接文件是分为两种的,软链接文件,另一种当然是“硬链接”(硬链接不常用,具体内容不作为本课程讨论重点,而软链接等同于 Windows 上的快捷方式,你记住这一点就够了)
 
2.文件权限
读权限,表示你可以使用 cat <file name> 之类的命令来读取某个文件的内容;
写权限,表示你可以编辑和修改某个文件; 
执行权限,通常指可以运行的二进制程序文件或者脚本文件。
一个目录要同时具有读权限执行权限才可以打开,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息
 
 
3.链接数:链接到该文件所在的 inode 结点的文件名数目
 
4.文件大小:以 inode 结点大小为单位来表示的文件大小,你可以给 ls 加上 -lh 参数来更直观的查看文件的大小。
 
(1)显示除了 '.'(当前目录),'..' 上一级目录之外的所有包含隐藏文件(Linux 下以 '.' 开头的文件为隐藏文件)
 
     ls -A
 
     同时使用Al :ls -Al
 
 
(2)查看某一个目录的完整属性,而不是显示目录里面的文件属性
$ ls -dl <目录名>
(3)显示所有文件大小,并以普通人类能看懂的方式呈现:
$ ls -AsSh
*其中小 s 为显示文件大小,大 S 为按文件大小排序
 
 

2.变更文件所有者

(1)lilei登录 创建 iPhone6
$ touch iphone6
 
(2)更改文件所有者:
$ cd /home/lilei
$ ls iphone6
$ sudo chown shiyanlou iphone6
$ cp iphone6 /home/shiyanlou
 
 

3.修改文件权限

(1)方式一:二进制数字表示
每个文件的三组权限(拥有者,所属用户组,其他用户,记住这个顺序是一定的)就对应这一个 "rwx"
$ chmod 700 iphone6
 
 
(2)方式二:加减赋值操作
 
$ chmod go-rw iphone
 
'g''o'还有'u',分别表示group,others,user,'+','-' 就分别表示增加和去掉相应的权限。
 
 
 
作业:
 
 
 
 
 
4.实验四Linux 目录结构及文件基本操作
1、Linux 的文件组织目录结构。
2、相对路径和绝对路径。
3、对文件的移动、复制、重命名、编辑等操作。
 
 

一、Linux 目录结构

 

linux与Windows有本质上的不同。
一种不同是体现在目录与存储介质(磁盘,内存,DVD 等)的关系:
Windows 一直是以存储介质为主的,主要以盘符(C 盘,D 盘...)及分区的来实现文件管理,然后之下才是目录。
 Linux 是以树形目录结构的形式来构建整个系统的,可以理解为一个用户可操作系统的骨架。
*虽然本质上无论是目录结构还是操作系统内核都是存储在磁盘上的,但从逻辑上来说 Linux 的磁盘是“挂在”(挂载在)目录上的,每一个目录不仅能使用本地磁盘分区的文件系统,也可以使用网络上的文件系统。
 
1.FHS(英文:Filesystem Hierarchy Standard 中文:文件系统层次结构标准) 标准
FHS 定义了系统中每个区域的用途、所需要的最小构成的文件目录同时还给出了例外处理与矛盾处理。
 
FHS 定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据
第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。
 
 
 
FHS 依据文件系统使用的频繁与否以及是否允许用户随意改动(注意,不是不能,学习过程中,不要怕这些),将目录定义为四种交互作用的形态
 
 
2.目录路径
 
以 . 开头的文件都是隐藏文件,所以这两个目录必然也是隐藏的,你可以使用 ls -a 命令查看隐藏文件
- 表示上一次所在目录, 通常表示当前用户的"home"目录。使用 pwd 命令可以获取当前所在路径(绝对路径)。
进入上一级目录:$ cd .. 
进入你的“home”目录: $ cd ~  
                                           # 或者 cd /home/<你的用户名>
使用 pwd 获取当前路径: $ pwd
 
 
相对路径:也就是相对于你当前的目录的路径,相对路径是以当前目录 . 为起点,以你所要到的目录为终点
 
绝对路径进入bin:
相对路径进入bin:
 
*提示:在进行目录切换的过程中请多使用 Tab 键自动补全,可避免输入错误,连续按两次Tab可以显示全部候选结果
 

二、Linux 文件的基本操作

1.新建
 
新建文件
使用 touch 命令创建空白文件
 
新建目录
1.使用 mkdir(make directories)命令可以创建一个空目录,也可同时指定创建目录的权限属性
2.使用 -p 参数,同时创建父目录(如果不存在该父目录)
*创建一个多级目录(这在有时候安装软件,配置安装路径时非常有用)
 
2.复制
使用cp(copy)命令复制一个文件或目录到指定目录
 
复制文件
 cp test father/son/grandson
 
复制目录
要成功复制目录需要加上-r或者-R参数,表示递归复制
 
3.删除
 
删除文件
使用rm(remove files or directories)命令,删除一个文件或目录:
到想要删除一些为只读权限的文件,直接使用rm删除会显示提示,你如果想忽略这提示,直接删除文件,可以使用-f参数强制删除
例:$ rm -f test
 
 

删除目录:跟复制目录一样,要删除一个目录,也需要加上-r-R参数

 
4.移动文件与文件重命名
移动文件
1.使用mv(move or rename files)命令,移动文件(剪切)。
 
2.重命名:将文件"file1"重命名为"myfile" mv 旧的文件名 新的文件名
 
批量重命名
我们可以使用一个看起来更专业的命令rename来实现
# 使用通配符批量创建 5 个文件
$ touch file{1..5}.txt
# 批量将这 5 个后缀为 .txt 的文本文件重命名为以 .c 为后缀的文件
$ rename 's/\.txt/\.c/' *.txt
# 批量将这 5 个文件,文件名改为大写
$ rename 'y/a-z/A-Z/' *.c
 

5.查看文件

使用cat,tacnl命令查看文件
cat,tac用来打印文件内容到标准输出(终端),其中cat为正序显示,tac倒序显示
 
标准输入输出:当我们执行一个 shell 命令行时通常会自动打开三个标准文件,
即标准输入文件(stdin),默认对应终端的键盘;
标准输出文件(stdout)和标准错误输出文件(stderr)
 
 
比如我们要查看之前从"/etc"目录下拷贝来的passwd文件(可以加上-n参数显示行号)
$ cat -n passwd
 
 
*nl命令,添加行号并打印,这是个比cat -n更专业的行号打印命令。
-b : 指定添加行号的方式,主要有两种:
    -b a:表示无论是否为空行,同样列出行号("cat -n"就是这种方式)
    -b t:只列出非空行的编号并列出(默认为这种方式)
-n : 设置行号的样式,主要有三种:
    -n ln:在行号字段最左端显示
    -n rn:在行号字段最右边显示,且不加 0
    -n rz:在行号字段最右边显示,且加 0
-w : 行号字段占用的位数(默认为 6 位)
 
使用moreless命令分页查看文件
"man"手册内部就是使用的 less 来显示内容
可以使用Enter键向下滚动一行,使用Space键向下滚动一屏,按下h显示帮助,q退出。
 
 
使用headtail命令查看文件
如当我们想要查看最近新增加的用户,那么我们可以查看/etc/passwd文件
 
tail命令参数-f,这个参数可以实现不停地读取某个文件的内容并显示。
 

6.查看文件类型

通常使用file命令可以查看文件的类型
$ file /bin/ls

 

 

 

 

 

作业:

小眼睛:$ nohup xeyes &