20165315 预备作业3 Linux安装及学习
一、在自己笔记本上安装Linux操作系统
因为对操作电脑的不熟悉,我在第一项任务上就花费了一定的时间,在安装过程有如下问题:
- 我的电脑是苹果公司的MacBook,是OS X系统,而不是老师给的教程中的windows系统,在操作过程中有很多不同
- 我的电脑上之前有VMware虚拟机,而老师教程中给出的是基于VirtualBox虚拟机上的操作,我想尝试基于VMware虚拟机操作,但是失败了
于是经过了许多的尝试后,我在蓝墨云班课中询问了同学老师,在通讯工具上询问了班上已经完成任务的同学后,成功通过安装VirtualBox虚拟机,在OS X系统上完成了安装Ubuntu的任务。
还有一个问题:如何安装VirtualBox虚拟机增强功能?我的虚拟机开机页面如下图所示:
二、通过实践学习别出心裁的Linux命令学习法,掌握Linux命令的学习方法
操作系统的功能我总结为两点:管家婆和服务生:
- 管家婆:通过进程、虚拟内存和文件三个重要抽象管理计算机的CPU、内存、I/O设备。
- 服务生:为用户提供shell,为程序员提供系统调用。
这篇文章通过形象的比喻——管家婆和服务生,对windows系统和Linux系统不同的比较,让我对一开始完全陌生的Linux系统和其中的命令有了深刻的印象和大概的了解,但是光是看概念和例子还是有点迷茫的。
三、参考上面的学习方法通过实践学习Linux 基础入门(新版)课程,掌握常用的Linux命令
我是第一次在实验楼这种特殊的环境下练习,非常陌生又新奇。通过几次练习后,我发现这种练习方法非常有效,在上一环节的学习中,我只是浏览概念或者看一些上面已经有结果的例子,还是不理解。但是在实验楼边看代码边输入试验,不但有趣,而且有助于学习。
学习笔记:
- 第三节 用户及文件权限管理
1、查看用户
请打开终端,输入命令:
$ who am i
或者$ who mom likes
2、创建用户
$ sudo adduser lilei
注释:
su <user>
可以切换到用户 user
sudo <cmd>
可以以特权级别运行 cmd 命令,需要当前用户属于 sudo 组
su - <user>
命令也是切换用户,同时环境变量也会跟着改变成目标用户的环境变量
$ ls /home
这个命令不但可以添加用户到系统,同时也会默认为新用户创建 home 目录
使用如下命令切换登录用户:
$ su -l lilei
2、在 Linux里面如何知道自己属于哪些用户组呢?
方法一:使用 groups 命令
$ groups shiyanlou
方法二:查看 /etc/group
文件
$ cat /etc/group | sort
可以使用命令过滤掉一些你不想看到的结果:
$ cat /etc/group | grep -E "shiyanlou"
3、用 shiyanlou
用户执行 sudo
命令将 lilei
添加到 sudo
用户组,让它也可以使用 sudo
命令获得 root
权限:
$ su shiyanlou
$ groups lilei
$ sudo usermod -G sudo lilei
$ groups lilei```
4、删除用户
$ sudo deluser lilei --remove-home
变更文件所有者
$ touch iphone6
可见文件所有者是 lilei
现在,换回到 shiyanlou
用户身份,使用以下命令变更文件所有者为 shiyanlou
:
$ cd /home/lilei
$ ls iphone6
$ sudo chown shiyanlou iphone6
$ ll iphone6
5、修改文件权限
方式一:二进制数字表示
为了演示,先在文件里加点内容:
$ echo "echo \"hello shiyanlou\"" > iphone6
然后修改权限:
$ chmod 700 iphone6
现在,其他用户已经不能读这个iphone6
文件了
方式二:加减赋值操作
$ chmod go-rw iphone6
g
、o
还有 u
分别表示 group
、others
和 user
,+
和 -
分别表示增加和去掉相应的权限
- 第四节 Linux 目录结构
1、FHS 标准
$ sudo apt-get update
$ sudo apt-get install tree
$ tree /
2、目录路径
使用 cd
命令可以切换目录,在 Linux 里面使用 .
表示当前目录,..
表示上一级目录(以 .
开头的文件都是隐藏文件,所以这两个目录必然也是隐藏的,可以使用 ls -a
命令查看隐藏文件), -
表示上一次所在目录,~
通常表示当前用户的 home
目录。使用 pwd
命令可以获取当前所在路径(绝对路径)。
进入上一级目录:
$ cd ..
进入 home
目录:
$ cd ~
使用 pwd
获取当前路径:
$ pwd
3、新建空白文件
$ touch test
新建目录
创建名为“ mydir ”
的空目录:
$ mkdir mydir
使用 -p
参数同时创建父目录(如果不存在该父目录):
$ mkdir -p father/son/grandson
4、复制文件
$ cp test father/son/grandson
复制目录
$ cp -r father family
5、删除文件
$ rm test
强制删除:
$ rm -f test
删除目录
$ rm -r family
6、移动文件
将文件“ file1 ”
移动到 Documents
目录:
$ mkdir Documents
$ mv file1 Documents
重命名文件
将文件“ file1 ”重命名为“ myfile ”:
$ mv file1 myfile
批量重命名
使用通配符批量创建 5 个文件:
$ touch file{1..5}.txt
批量将这 5 个后缀为 .txt
的文本文件重命名为以 .c
为后缀的文件:
$ rename 's/\.txt/\.c/' *.txt
批量将这 5 个文件,文件名改为大写:
$ rename 'y/a-z/A-Z/' *.c
7、查看文件
使用 cat
,tac
和 nl
命令查看文件(其中 cat
为正序显示,tac
为倒序显示)
比如查看passwd 文件:
$ cat passwd
可以加上 -n 参数显示行号:
$ cat -n passwd
使用 head 和 tail 命令查看文件
$ tail /etc/passwd
只看一行:
$ tail -n 1 /etc/passwd
查看文件类型:
$ file /bin/ls
- 第五节 环境变量与文件查找
1、创建一个变量
$ declare tmp
使用 "=" 号赋值运算符,将变量 tmp
赋值为 shiyanlou
:
$ tmp=shiyanlou
读取变量的值,使用 echo
命令和 $
符号:
$ echo $tmp
2、环境变量
创建一个 Shell
脚本文件:
$ gedit hello_shell.sh
在脚本中添加如下内容,保存并退出:
#!/bin/bash
for ((i=0; i<10; i++));do
echo "hello shell"
done
exit 0
为文件添加可执行权限:
$ chmod 755 hello_shell.sh
执行脚本:
$ ./hello_shell.sh
创建一个 C 语言“ hello world ”
程序:
$ gedit hello_world.c
#include <stdio.h>
int main(void)
{
printf("hello world!\n");
return 0;
}
保存后使用 gcc
生成可执行文件:
$ gcc -o hello_world hello_world.c
在 shiyanlou
家目录创建一个 mybin
目录,并将上述 hello_shell.sh 和 hello_world
文件移动到其中:
$ mkdir mybin
$ mv hello_shell.sh hello_world mybin/
现在可以在 mybin
目录中分别运行刚刚创建的两个程序:
$ cd mybin
$ ./hello_shell.sh
$ ./hello_world
3、变量删除
$ unset temp
4、搜索文件
whereis
简单快速:
$whereis who
locate
快而全:
$ locate /etc/sh
查找/usr/share/
下所有 jpg
文件:
$ locate /usr/share/\*.jpg
which
小而精:
$ which man
**find
**精而细:
$ sudo find /etc/ -name interfaces
- 第六节 文件打包与压缩
1、zip 压缩打包程序
使用 zip 打包文件夹:
$ zip -r -q -o shiyanlou.zip /home/shiyanlou
$ du -h shiyanlou.zip
$ file shiyanlou.zip
设置压缩级别为 9 和 1(9 最大,1 最小),重新打包:
$ zip -r -9 -q -o shiyanlou_9.zip /home/shiyanlou -x ~/*.zip
$ zip -r -1 -q -o shiyanlou_1.zip /home/shiyanlou -x ~/*.zip
再用 du
命令分别查看默认压缩级别、最低、最高压缩级别及未压缩的文件的大小:
$ du -h -d 0 *.zip ~ | sort
创建加密 zip 包
使用 -e
参数可以创建加密压缩包:
$ zip -r -e -o shiyanlou_encryption.zip /home/shiyanlou
2、使用 unzip
命令解压缩 zip 文件
将 shiyanlou.zip
解压到当前目录:
$ unzip shiyanlou.zip
使用安静模式,将文件解压到指定目录:
$ unzip -q shiyanlou.zip -d ziptest
3、rar 打包压缩命令
安装 rar 和 unrar 工具:
$ sudo apt-get update
$ sudo apt-get install rar unrar
从指定文件或目录创建压缩包或添加文件到压缩包:
$ rm *.rar
$ rar a shiyanlou.rar .
从指定压缩包文件中删除某个文件:
$ rar d shiyanlou.rar .zshrc
* 查看不解压文件:
$ rar l shiyanlou.rar
使用 unrar 解压 rar 文件全路径解压:
$ unrar x shiyanlou.rar
去掉路径解压:
$ mkdir tmp
$ unrar e shiyanlou.rar tmp/
4、tar 打包工具
创建一个 tar 包:
$ tar -cf shiyanlou.tar ~
解包一个文件(-x 参数)到指定路径的已存在目录(-C 参数):
$ mkdir tardir
$ tar -xf shiyanlou.tar -C tardir
只查看不解包文件 -t
参数:
$ tar -tf shiyanlou.tar
保留文件属性和跟随链接:
$ tar -cphf etc.tar /etc
创建不同的压缩格式的文件:
在创建 tar 文件的基础上添加 -z
参数,使用 gzip 来压缩文件:
$ tar -czf shiyanlou.tar.gz ~
解压 *.tar.gz
文件:
$ tar -xzf shiyanlou.tar.gz
5、常用命令:
zip:
> 打包 :zip something.zip something (目录请加 -r 参数)
> 解包:unzip something.zip
> 指定路径:-d 参数
tar:
> 打包:tar -zcvf something.tar something
> 解包:tar -zxvf something.tar
> 指定路径:-C 参数
- 第七节 文件系统操作与磁盘管理
1、使用 df
命令查看磁盘的容量
$ df
我们以一种你应该看得懂的方式展示:
$ df -h
2、使用 du
命令查看目录的容量
默认同样以 blocks 的大小展示
$ du
加上-h
参数,以更易读的方式展示
$ du -h
-d
参数指定查看目录的深度
只查看1级目录的信息
$ du -h -d 0 ~
查看2级
$ du -h -d 1 ~
3、常用参数
同--human-readable
以K,M,G为单位,提高信息的可读性:
du -h
同--all
显示目录中所有文件的大小:
du -a
同--summarize
仅显示总计,只列出最后加总的值:
du -s
4、创建虚拟磁盘
用dd
命令从标准输入读入用户输入到标准输出或者一个文件:
输出到文件
$ dd of=test bs=10 count=1
输出到标准输出
$ dd if=/dev/stdin of=/dev/stdout bs=10 count=1
在打完了这个命令后,继续在终端打字,作为你的输入
将输出的英文字符转换为大写再写入文件:$ dd if=/dev/stdin of=test bs=10 count=1 conv=ucase
使用 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
- 第八节 Linux下的帮助命令
1、help
命令
本实验环境是 zsh
,而 zsh
中内置并没有 help
命令,可以进入 bash
中,在 bash
中内置有该命令
$ bash
$ help ls 内部命令
$ ls --help 外部命令
2、man
命令
$ man ls
3、info
命令
$ info ls
详细程度:info
> man
> help