Linux系统安装与使用基础
目录
写在最前面:本文是Linux 的基础操作。大家要明白的一个东西是:路径。不管是文件路径,还是目录路径,都要在大脑中有一个架构,在终端输入指令后,要明白是对哪里进行操作,你目前在哪个目录下(使用 pwd 可以查看当前目录)。Linux的终端命令操作是他的特色,也挺好用的。还有就是,在输入命令行的时候,要注意空格,在之后的代码中, 可能体现的不是很明显,你需要仔细观察 ,空格是否存在。在之后的学习中,出现不明白的东西,可以私信我,咱们一起进步呀!当然首先推荐大家去百度搜一下,会比较快的得到答案并解决。接下来,就请开始学习吧!
1.目的与要求
(一) 目的
本实验的目的是使学生学会Linux的安装、配置和基础使用;掌握Linux常用命令的格式和操作以及系统管理、设备管理、用户管理和文件存取权限管理的基本方法;熟悉编译工具GCC的作用,学会在Linux环境下进行工作。
(二) 要求
熟悉并完成Linux(CentOS 7)的安装和基本配置的操作过程;
- 了解Linux的基本操作命令的格式,掌握基本操作命令功能和使用;
- 了解Linux的文本编辑器vi的3种工作模式,掌握3种工作模式的转换并学会利用vi进行文本编辑;
- 掌握Linux下存储设备的挂载与卸载的方法,并学会如何控制文件和目录的存取权限。
- 熟悉编译工具GCC的作用和基本使用方法。
2.实验内容
- 安装并配置Linux(CentOS 7)操作系统。
要求将主机名设置为用户姓名的全拼,并建立一个用户名为姓名简拼的普通用户。 - 熟悉Linux操作系统vi编辑器、编译工具GCC的使用并掌握文件、目录基本操作命令的使用。
1)首先查看用户配置文件/etc/passwd中普通用户的记录。
2)在用户主目录下建立一个名字为“班级姓名”(例如“rj1701zhangsan”)的子目录,使用ls显示该子目录的详细信息。
3)然后在用户主目录下使用vi编辑器编辑一个C语言源程序hello.c,并使用编译工具GCC编译该源程序,可执行文件的文件名为hello,运行编译成功的可执行程序hello,并将运行结果重定位到“班级姓名”(例如“rj1701zhangsan”)的子目录下的一个名为“姓名”(例如:“zhangsan”的文件中,然后显示该文件的内容。
hello.c源程序代码:
#include <stdio.h>
main()
{char name[20];
printf(“Please input your name:”);
scanf(“%s”,name);
printf(“Welcome %s!\n”,name);
reture 0;} - 控制文件和目录的存取权限。
1)将/usr/bin目录中的cal文件和/bin目录中的cat文件复制到rj1701zhangsan子目录中,并分别命名为zhangsancal和zhangsancat。使用ls查看rj1701zhangsan子目录中的各个文件的详细信息。
2)使用长列表命令ls查看/usr/bin目录中的cal文件和/bin目录中的cat文件,并把它们与rj1701zhangsan子目录中的文件进行比较。
3)通过建立硬链接在rj1701zhangsan子目录中以hello.link的文件名来运行文件hello。
比较链接文件和被链接文件有什么不同?文件的硬链接数是多少?执行hello.link的执行结果是什么?
4)改变文件hello.link的权限,使拥有者只具有读的权限。试着再运行hello.link,它运行了吗?为什么?
5)删除hello.link,这样做也删除了hello文件吗?为什么? - 掌握Linux下存储设备的挂载与卸载的方法。
1)建立挂载点/mnt/usb。
2)使用#fdisk -l命令查看设备的连接情况,主要查看U盘的名称及文件系统类型。
3)使用mount命令手工挂载本地磁盘(U盘)。
4)用ls -l查看U盘中文件的详细信息。
5)使用umount命令手工卸载本地磁盘(U盘)。
3.小结(回答问题)
Centos 7 虚拟机的安装
虚拟机安装Linux 系统全家桶(百度网盘链接)
提取码:zr0e
1.创建主机名和用户名
@ 前面是用户名 后面是主机名
修改主机名 在超级管理员下:hostnamectl set-hostname 修改的名字
修改用户名 在超级管理员下,要修改的用户不得登录,否则失败
usermod -u newname oldname //修改用户名
用户管理 (root 权限下)
创建用户 : useradd [ 参数值 ] 用户名
-m:自动建立用户的登入目录;
-M:不要自动建立用户的登入目录;
删除用户: userdel [ 参数值 ] 用户名
-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。
pwd 显示当前目录的绝对路径
[lsf@lishuaifu ~]$pwd
2. 熟悉Linux操作系统vi编辑器、编译工具GCC的使用并掌握文件、目录基本操作命令的使用。
2.1 首先查看用户配置文件/etc/passwd中普通用户的记录。
[lsf@lishuaifu ~]$ vim /etc/passwd
在评论区有同学更正。这里得命令应该是:
cat /etc/passwd
2.2 在用户主目录下建立一个名字为“班级姓名”(例如“rj1701zhangsan”)的子目录,使用ls显示该子目录的详细信息。
创建目录——mkdir
a) mkdir test 在当前目录下创建一个名为test的目录
b) mkdir test1 test2 同时创建两个目录
c) mkdir ./test/test3 在指定目录下创建一个名为test的目录
创建文件——touch
a) touch test001.txt 创建一个空文件
b) touch text002 创建一个空文件(没有后缀)
c) touch ./test/test003.txt 在指定目录下创建文件
语法: mkdir 目录
[lsf@lishuaifu ~]$ mkdir rj2026lishuaifu
[lsf@lishuaifu ~]$ ls -l 查看是否创建成功
2.3 在用户主目录下使用vi编辑器编辑一个C语言源程序hello.c,并使用编译工具GCC编译该源程序,可执行文件的文件名为hello,运行编译成功的可执行程序hello,并将运行结果重定位到“班级姓名”的子目录下的一个名为“姓名”
[lsf@lishuaifu ~]$ vim hello.c
使用vi 编辑器 创建一个hello.c 文件
gcc 编译器
使用vim建立一个“main.c”的文件
在终端输入命令:gcc main.c。这时会生成一个名为a.out的可执行文件。
若是想指定文件名,则可以通过命令:gcc -o main main.c,把可执行文件名修改为main,并通过./main来查看运行结果
gcc hello.c ///编译生成一个a.out 可执行的文件。
语法 : gcc -o 修改名 原文件名
gcc -o hello a.out ///修改文件名
vim编辑器介绍
a) 可以分为三种状态:命令模式(command mode),插入模式(insert mode),底行模式(last line mode)
i. 命令模式:控制屏幕光标的而移动,字符,字或行的删除,移动复制某区,进入插入模式,过着底行模式
ii. 插入模式:进行文字输入,按【ESC】回到命令模式
iii. 底行模式:将文件保存或者退出vi
Vi基本操作
a) 输入 vi +文件名,进入vi全屏编辑画面:$ vi myfile 刚进去是命令模式,不可以按动方向键移动光标,按【 i 】进入插入模式,才可以进行文字输入
b) 删除文字,在插入模式下,不能删除,需要按下【ESC】进入命令模式,才可以进行删除操作
c) 退出vi 并保存文件 在命令行模式下,按下【:】进入底行模式
i. :w filename (将文件以指定的文件名保存filename)
ii. :wq 保存并退出
iii. :q! 不保存并退出
命令行模式功能键
a) 插入模式
i. 按【 i 】进入后,光标在当前位置
ii. 按【 a 】进入后,光标在当前的下一个位置
iii. 按【 o 】进入后,插入新的一行
b) 插入模式转命令模式 【ESC】
c) 移动光标 方向键即可
i. 按数字「0」:移到文章的开头。
ii. 按「G」:移动到文章的最后。
iii. 按「$」:移动到光标所在行的"行尾"。
iv. 按「^」:移动到光标所在行的"行首"
d) 删除文字
i. 【 x 】 删除后一个字符 相当于 delete
ii. 【 X 】 删除前一个字符,相当于 返回键
iii. 【 dd 】删除行
e) 复制
i. 【 yw 】光标所在的地方到字尾 复制到缓冲区
ii. 【 yy 】 光标所在行复制到缓冲区
iii. 【 p 】 将缓冲区的文字,粘贴到光标所在的位置
f) 替换
i. 【 r 】替换光标所在的字符
g) 撤销
i. 【 u 】恢复上一次操作
运行hello 文件
./hello /// 运行程序
语法 : 文件名 > 目标文件
./hello > /home/lsf/rj2026lishuaifu/lishuaifu // 重定向
将hello运行的结果重定向到指定目录文件中。
使用vim 编辑器 查看/home/lsf/rj2026lishuaifu 中的 lishuaifu 文件。
4.控制文件和目录的存取权限。
4.1 将/usr/bin目录中的cal文件和/bin目录中的cat文件复制到rj1701zhangsan子目录中,并分别命名为zhangsancal和zhangsancat。使用ls查看rj1701zhangsan子目录中的各个文件的详细信息。
方法一:先复制文件, 在进入目录更改文件名
语法: cp 文件名 /目录 指定文件夹/目录
[lsf@lishuaifu ~]$ cp /usr/bin/cal /home/lsf/rj2026lishuaifu // 复制文件cal
[lsf@lishuaifu ~]$ cp /usr/bin/cat /home/lsf/rj2026lishuaifu //复制文件cat
[lsf@lishuaifu ~]$ cd /home/lsf/rj2026lishuaifu // 进入rj2026lishuaifu 目录下
[lsf@lishuaifu rj2026lishuaifu]$ ls -l //查看该目录下的文件
总用量 96
-rwxr-xr-x. 1 lsf lsf 33528 10月 30 15:35 cal //复制成功
-rwxr-xr-x. 1 lsf lsf 54080 10月 30 15:36 cat //复制成功
-rw-rw-r--. 1 lsf lsf 41 10月 30 15:29 lishuaifu
[lsf@lishuaifu rj2026lishuaifu]$ sudo mv cal lishuaifucal // 修改文件名
[sudo] lsf 的密码:
[lsf@lishuaifu rj2026lishuaifu]$ sudo mv cat lishuaifucat //修改文件名
[lsf@lishuaifu rj2026lishuaifu]$ ls -l //查看该目录下的文件
总用量 96
-rwxr-xr-x. 1 lsf lsf 33528 10月 30 15:35 lishuaifucal
-rwxr-xr-x. 1 lsf lsf 54080 10月 30 15:36 lishuaifucat
-rw-rw-r--. 1 lsf lsf 41 10月 30 15:29 lishuaifu
[lsf@lishuaifu rj2026lishuaifu]$
方法二:复制文件的同时,修改文件名。(如下图)
语法:cp 原文件地址 目标文件地址(最后要以文件结尾,而不是目录)
4.2使用长列表命令ls查看/usr/bin目录中的cal文件和/bin目录中的cat文件,并把它们与rj1701zhangsan子目录中的文件进行比较。
语法: comm -1 文件 文件
[lsf@lishuaifu ~]$ comm -1 /usr/bin/cal /home/lsf/rj2026lishuaifu/lishuaifucal
[lsf@lishuaifu ~]$ comm -1 /usr/bin/cat /home/lsf/rj2026lishuaifu/lishuaifucat
4.3通过建立硬链接在rj1701zhangsan子目录中以hello.link的文件名来运行文件hello。
语法: ln 被链接文件 链接文件 (没有文件就自动新建)
//建立硬链接 l
[lsf@lishuaifu ~]$ ln /home/lsf/hello /home/lsf/rj2026lishuaifu/hello.link
[lsf@lishuaifu ~]$ cd /home/lsf/rj2026lishuaifu
[lsf@lishuaifu rj2026lishuaifu]$ ./hello.link
Please input your name:lishuaifu
Welcomelishuaifu!
硬链接与原文件是分居于不同或相同目录下的的dentry而已,它们指向同一个inode,对应于相同的磁盘数据块(data block),具有相同的访问权限、属性。
链接文件与被链接文件 ,只是名字不同而已,公共用同一个inode,共享同一份数据
链接数都是 :2
执行结果是:和运行 hello 文件相同
4.4改变文件hello.link的权限,使拥有者只具有读的权限。试着再运行hello.link,它运行了吗?为什么?
修改文件权限
chmod XXX filename 只读 100 只写 010 可执行 001 二进制数换成十进制
a) chmod 777 xxxx指令,这里有3个7,但是每个7的含义是不同的。7的二进制形式为111,表示可读可写可执行,第1个7表示文件对于文件所有者来说可读可写可执行;第2个7表示文件对于文件所有者所在组来说可读可写可执行;第3个7表示文件对于其他身份的用户来说可读可写可执行。也就是说,通过chmod 777,文件就没有了读写执行权限限制了。
b) 将该目录下的所有子目录或文件权限一并处理。 使用 -R 递归处理
i. chmod -R 421 oldDir5
c) 修改文件所有者 chown 用户名 文件名/目录名
i. 将该目录下的所有子目录或文件权限一并处理。 使用 -R 递归处理
chown -R 用户名 目录名
d) 修改文件所属组 chgrp 用户名/组名 文件名/目录名
i. 将该目录下的所有子目录或文件权限一并处理。 使用 -R 递归处理
ii. chgrp -R 用户名/组名 目录名
//修改文件权限 chmod
[lsf@lishuaifu ~]$ cd /home/lsf/rj2026lishuaifu // cd 到rj2026lishuaifu目录下
[lsf@lishuaifu rj2026lishuaifu]$ chmod 444 hello.link
[lsf@lishuaifu rj2026lishuaifu]$ ls -l
hello.link 没有运行,因为hello.link文件没有可执行的权限,他只有可读权限。
4.5删除hello.link,这样做也删除了hello文件吗?为什么?
语法 : rm -f 文件名
//删除链接文件
lsf@lishuaifu rj2026lishuaifu]$ rm -f hello.link
[lsf@lishuaifu ~]$ cd /home/lsf // 回去查看用户主目录
[lsf@lishuaifu ~]$ ls -l
没有删除hello文件。删除的只是 hello.link与iNode的映射关系,并不影响hello与 iNode的映射关系。
5.Linux下存储设备的挂载与卸载的方法。
1)建立挂载点/mnt/usb。
2)使用#fdisk -l命令查看设备的连接情况,主要查看U盘的名称及文件系统类型。
3)使用mount命令手工挂载本地磁盘(U盘)。
4)用ls -l查看U盘中文件的详细信息。
5)使用umount命令手工卸载本地磁盘(U盘)。
挂载卸载方法
a) 挂载
1.创建/mnt/usb文件夹并进入
2.通过fdisk -l查看挂载的U盘在哪里
3.利用mount 命令挂载设备 mount /dev/sdb3 /mnt/usb
4.cd 进入/mnt/usb文件夹 查看是否挂载成功
b) 卸载
1.当不适用U盘时,就可以卸载U盘了
#umount /dev/sdb3
若出现问题–>umount: /mnt/usb: device is busy
2.查找占用目录进程:
使用该语句查看进程
fuser -mv /mnt/usb
用户 进程号 权限 命令
/mnt/usb: root kernel mount /mnt/p2
dengfei 14821 ..c.. bash
3.杀掉进程:
#kill -9 14821
4.卸载:#umount /mnt/usb
挂载开始!
记得切换超级用户呢 : sudo su 之后会提醒输入密码
也可以 用 : su root
[root@lishuaifu ~]# mkdir /mnt/usb //新建挂载点
[root@lishuaifu ~]# fdisk -l 查看挂载的U盘在哪里和盘符名
在这里看到这个U盘的设备名是: /dev/sdb1 文件系统是 FAT32
语法: mount 设备名 挂载点
[root@lishuaifu ~]# mount /dev/sdb1 /mnt/usb
[root@lishuaifu ~]# cd /mnt 查看 mnt 目录下有没有usb 挂载点
[root@lishuaifu ~]# ls -l
[root@lishuaifu ~]# cd /mnt/usb 进入 usb 挂载点,查看是否挂载成功
[root@lishuaifu ~]# ls -l 查看文件信息 如果有文件,就挂载成功了
[root@lishuaifu ~]#umount /mnt/usb // 卸载U盘
如果显示U盘正忙之类的,参考前面方法中的,杀死进程
好啦,至此所有的Linux 操作就完了!祝大家学习愉快呀。