预备作业三
linux系统安装
具体linux系统安装步骤参照教程,VirtualBox和Ubuntu安装相对顺利,出现了繁琐的小问题,自己百度基本能够解决。自己的笔记本和教程的有些不同的,按照教程设置的内存参数,运用起来笔记本卡顿,后来弄半天还出现了蓝屏,后来自己重新设置了运用内存和其他相应的参数,才解决了这个问题。在后面的安装过程中,有些莫名其妙的错误,自己只能重新安装虚拟机,共享文件夹自己尝试做了一遍,虚拟机重新启动时就不能运行了,只能放弃,开学再寻求同学的帮助吧。虽然现在也不太懂为什么学习Java还要学习linux、vim,很多基础的知识看了也很快忘记了,应该是过年太浪了吧,过完年后自己只能重新再好好学习,练习。
linux学习(知识点+作业+疑问)
实验一 linux系统简介
知识点:
- 操作系统:操作系统是一个大型的软件系统,其功能复杂,体系庞大。
- 操作系统的功能:
1)通过进程、虚拟内存和文件三个重要抽象管理计算机的CPU、内存、I/O设备。2)为用户提供shell,为程序员提供系统调用。
实验二 基本概念及操作
知识点1:快捷键的使用
- Tab 补全命令、目录和参数
- Ctrl+c 强行终止当前程序
- Ctrl+d 键盘输入结束或退出终端
- Ctrl+s 暂停当前程序,暂停后按下任意键恢复运行
- Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg
- Ctrl+a 将光标移至输入行头,相当于Home键
- Ctrl+e 将光标移至输入行末,相当于End键
- Ctrl+k 删除从光标所在位置到行末
- Alt+Backspace 向前删除一个单词
- Shift+PgUp 将终端显示向上滚动
- Shift+PgDn 将终端显示向下滚动
- ↑ 恢复历史输入命令
知识点2:通配符的使用:
- *:匹配 0 或多个字符
- ?: 匹配任意一个字符
- [ list] :匹配 list 中的任意单一字符
- [c1-c2]: 匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z]
- {string1,string2,...}: (或更多)其一字符串
- {c1..c2}: 匹配 c1-c2 中全部字符 如
知识点3:man命令:
帮助文档包含(学习的重点为1、2、3。):
- 是普通的Linux命令
- 是系统调用,操作系统的提供的服务接口
- 是库函数C语言中的函数
实验三 用户及文件权限管理
一、用户及相关命令
(一)查看用户
1.输入命令:
$who am i或者 $who mom likes
要查看当前登录用户的用户名,直接使用whoami即可
2.who命令其他常用参数
- -a打印能打印的全部
- -d打印死掉的进程
- -m同am i,mom likes
- -q打印当前登录用户数及用户名
- -u打印当前登录用户登录信息
- -r打印运行等级
(二)创建用户
1.输入命令:$sudo adduser hcj
2.切换用户:$su -l hcj
(三)用户组
1.含义:
一组用户的集合,它们共享一些资源和权限,同时拥有私有资源
2.在Linux里面如何知道自己属于哪些用户组呢?
输入:$groups shiyanlou
3.将其他用户加入sudo用户组
输入:$sudo usermod -G sudo hcj
(四)删除用户
输入:$sudo deluser hcj --remove-home
二、Linux文件权限
(一)查看文件权限
输入:$ls -l
注Linux里面一切皆文件
(二)变更文件所有者
首先登录用户名hcj,新建一个文件,名为java
输入:$touch java
现换回到shiyanlou用户身份
输入:
$cd /home/hcj
$ls java
$sudo chown shiyanlou java
(三)修改文件权限
方法一、二进制数字表示
0:没有权限, 1:可执行x, 2:可写w, 4:可读r
每个文件的三组权限(拥有者,所属用户组,其他用户,记住这个顺序是一定的)
$chmod 600 java
注:其他用户已经不能读这个java文件了
三、作业
1.创建一个用户loutest;$sudo adduser loutest
2.sudo
3.创建文件:命令 $mkdir opt
创建文件夹;命令$touch opt/forloutest.txt
创建文件。
4.修改文件权限:命令 $chmod go+rw forloutest.txt
5.切换用户查看文件:命令
$su -l loutest
$ll java
实验四 Linux 目录结构及文件基本操作
一、目录结构
背景知识: UNIX/Linux是以目录为主的,Linux继承了这一优良特性。Linux 是以树形目录结构的形式来构建整个系统的,可以理解为树形目录是一个用户可操作系统的骨架
1.FHS标准
FHS 定义了两层规范,第一层是,/下面的各个目录应该要放什么文件数据;第二层则是针对 /usr 及 /var这两个目录的子目录来定义。
2.目录路径
- cd命令可以切换目录
- .表示当前目录
- ..表示上一级目录
- pwd命令可以获取当前路径(绝对路径)
- ~表示当前用户的home目录
3.绝对路径与当前路径:
进行目录切换时还得看当前具体情况,然后选择合适的命令进行输入。
二、linux文件的基本操作
- 新建空白文件:touch命令(创建文件时,因为在其他目录没有权限,所以先切换用户的/home/shiyanlou目录
- mkdir命令可以创建一个空白目录,使用-p参数,同时创建父目录。
- 复制文件:使用cp(copy)命令复制一个文件到指定目录。
- 复制目录:成功复制目录需要加上 -r 或者 -R 参数,表示递归复制。
- 删除文件:使用rm命令删除一个文件;可以使用 -f 参数强制删除。
- 删除目录:要删除一个目录,也需要加上 -r 或 -R 参数。
- 移动文件:mv 源目录文件 目的目录。
- 重命名文件:mv 旧的文件名 新的文件名。
- 查看文件:使用cat,tac,nl命令查看文件;使用more和less命令分页查看文件;使用head和tail命令查看文件
- 查看文件类型:(在linux中文件的类型不是根据文件后缀来判断的,使用file命令查看文件类型。
实验五 环境变量与文件查找
一、变量
1.变量:计算机中用于记录一个值(不一定是数值,也可以是字符或字符串)的符号,而这些符号将用于不同的运算处理中。
2.变量的创建及赋值:使用declare命令创建变量,(变量名只能是英文字母、数字或者下划线,且不能以数字作为开头。);使用=号赋值运算符进行赋值。
3.读取变量的值:使用echo命令和$符号如:
$ echo $temp
。
二、环境变量
通常涉及的变量类型:
- 当前Shell进程私有用户自定义变量,如上面我们创建的 tmp 变量,只在当前 Shell 中有效。
- Shell本身内建的变量。
- 从自定义变量导出的环境变量。
- 永久生效:介绍两个重要文件 /etc/bashrc 和 /etc/profile ,它们分别存放的是 shell 变量和环境变量。还有要注意区别的是每个用户目录下的一个隐藏文件:.profile 可以用 ls -a 查看这个 .profile 只对当前用户永久生效。而写在 /etc/profile 里面的是对所有用户永久生效,所以如果想要添加一个永久生效的环境变量,只需要打开/etc/profile,在最后加上你想添加的环境变量。
question:全局环境变量,局部环境变量的实质区别是什么?
answer:
1.linux基础入门中为“简单地理解成在当前进程的子进程有效则为全局环境变量,否则为局部环境变量。
2.百度得:全局环境变量,局部环境变量的实质区别是什么?
注意:为了与普通变量区分,通常我们习惯将环境变量名设为大写。
三、命令的查找路径与顺序
整理得:
一、创建一个可执行的Shell脚本
- 创建shell脚本文件代码为:
$ gedit hello_shell.sh
,并添加内容代码为:
#!/bin/bash //这不是注释,不要省略
for ((i=0; i<10; i++));do
echo "hello shell"
done
exit 0
2.为文件添加可执行权限:
$ chmod 755 hello_shell.sh
3.执行脚本:
$ ./hello_shell.sh
二、使用C语言创建一个程序
代码如下:
$ gedit hello_world.c
/*
添加C语言程序代码,并保存
*/
//保存后使用gcc生成可执行文件(gcc生成二进制文件默认具有可执行权限,不需要修改)
$ gcc -o hello_world.c
三、path环境变量
与将D:\Java\jdk1.8.0_102\bin配置于windows系统path环境变量中相似。
四、搜索文件
与搜索相关的命令常用的有 whereis,which,find 和 locate 。
- whereis简单快捷
- locate 快而全
- which 小而精
- find 精而细
注意 find 命令的路径是作为第一个参数的, 基本命令格式为 find [path] [option] [action] 。
五、作业
寻找文件:找出 /etc/ 目录下的所有以 .list 结尾的文件。
代码为
$ locate /etc/\*.list
()
六、挑战一
实验六 文件打包与压缩
一、概念讲解
压缩包文件格式
- *.zip zip 程序打包压缩的文件
- *.rar rar 程序压缩的文件
- *.7z 7zip 程序压缩的文件
- *.tar tar 程序打包,未压缩的文件
- *.gz gzip 程序(GNU zip)压缩的文件
- *.xz xz 程序压缩的文件
- *.bz2 bzip2 程序压缩的文件
- *.tar.gz tar 打包,gzip 程序压缩的文件
- *.tar.xz tar 打包,xz 程序压缩的文件
- *tar.bz2 tar 打包,bzip2 程序压缩的文件
- *.tar.7z tar 打包,7z 程序压缩的文件
二、实战
可以直接参考,不需要再进行整理归纳。
三、总结
常用命令:
zip:
打包 :zip something.zip something (目录请加 -r 参数)
解包:unzip something.zip
指定路径:-d 参数
tar:
打包:tar -zcvf something.tar something
解包:tar -zxvf something.tar
指定路径:-C 参数
四、作业
- 使用touch命令创建test文件
touch test
- 使用zip压缩test文件
zip test.zip test
- 在shiyanlou目录下解压文件
unzip test.zip
实验七 文件系统操作与磁盘管理
一、基本操作
1.查看磁盘和目录的容量:$ df
,初学者最好使用$ df -h
查看。
2.使用du命令查看目录的容量: $ du -h
,其中-d参数指定查看目录的深度如下列举常见参数:
- du -h #同--human-readable 以K,M,G为单位,提高信息的可读性。
- du -a #同--all 显示目录中所有文件的大小。
- du -s #同--summarize 仅显示总计,只列出最后加总的值。
二、磁盘管理
1.创建虚拟磁盘
-
dd命令:
dd命令用于转换和复制文件
dd;也可以读取文件或写入到这些文件dd程序;也可以在复制时处理数据,例如转换字节序、或在 ASCII 与 EBCDIC 编码间互换。
注:命令行选项格式为选项=值 -
dd默认从标准输入中读取,并写入到标准输出中,但可以用选项if(input file,输入文件)和of(output file,输出文件)改变。
-
dd命令从标准输入读入用户输入到标准输出或者一个文件(个人理解:使用dd命令可以直接在终端输入相应指令后,输出到文件或者输出到标准输出,可以在终端编写Java程序,输出到*.java文件中):具体代码为:
# 输出到文件
$ dd of=test bs=10 count=1 # 或者 dd if=/dev/stdin of=test bs=10 count=1
# 输出到标准输出
$ dd if=/dev/stdin of=/dev/stdout bs=10 count=1
# 注
在打完了这个命令后,继续在终端打字,作为你的输入
# 注
bs用于指定块大小(默认为byte),count用于指定块数量,空格及回车均占一个字节。
- 使用dd命令创建虚拟镜像文件:
# 例
从/dev/zero设备创建一个容量为 256M 的空文件:
$ dd if=/dev/zero of=virtual.img bs=1M count=256
$ du -h virtual.img
- 使用mkfs命令格式化硬盘
#例
将我们的虚拟磁盘镜像格式化为ext4文件系统
$ sudo mkfs.ext4 virtual.img
- 磁盘分区:参照文件系统操作与磁盘分区