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,tac和nl命令查看文件
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 位)
使用more和less命令分页查看文件
"man"手册内部就是使用的 less 来显示内容
可以使用Enter键向下滚动一行,使用Space键向下滚动一屏,按下h显示帮助,q退出。
使用head和tail命令查看文件
如当我们想要查看最近新增加的用户,那么我们可以查看/etc/passwd文件
tail命令参数-f
,这个参数可以实现不停地读取某个文件的内容并显示。
6.查看文件类型
通常使用file命令可以查看文件的类型
$ file /bin/ls
作业:
小眼睛:$ nohup xeyes &