查看了许多教程,VirtualBox和Ubuntu已安装完成。以下为学习Linux基础入门课程的实验报告、实验截图、尚未解决的问题及体会。
实验三 用户及文件权限管理
一、Linux用户管理
(一)查看命令
1.输入命令:
$who am i
或者 $who mom likes
输出 :shiyanlou pts/0 2018-02-14 14:42 (:1.0)
要查看当前登录用户的用户名,直接使用whoami即可
2.who命令其他常用参数
- -a打印能打印的全部
- -d打印死掉的进程
- -m同am i,mom likes
- -q打印当前登录用户数及用户名
- -u打印当前登录用户登录信息
- -r打印运行等级
(二)创建用户
1.使用sudo命令的两个前提:
- 知道当前登录用户的密码(文档最上方)
注:Linux密码输入是不显示任何内容的
- 当前用户必须在sudo用户组
2.例如:
输入命令:$sudo adduser ariel
ls /home
su -l ariel
(三)用户组
1.含义:
一组用户的集合,它们共享一些资源和权限,同时拥有私有资源
2.在Linux里面如何知道自己属于哪些用户组呢?
方法一、使用groups命令
输入:$groups shiyanlou
输出:shiyanlou:shiyanlou 冒号之前表示用户,冒号之后表示该用户所属的用户组
方法二、查看/etc/group文件
输入:$cat /etc/group | sort
输出:最后一行是用户组信息
输入:$cat /etc/group | grep -E "shiyanlou"
过滤一些不想看到的结果
输出:shiyanlou❌5000:
- cat命令:用于读取指定文件的内容并打印终端输出
- | sort:表示将读取的文本进行一个字典排序再输出
- etc/group文件格式说明 group_name:password:GID:user_list
3.将其他用户加入sudo用户组
输入:$su shiyanlou
$groups xyh
$sudo usermod -G sudo xyh
$groups xyh
$su -l xyh
$sudo ls
(四)删除用户
输入:$sudo deluser ariel --remove-home
二、Linux文件权限
(一)查看文件权限
输入:$ls -l
- Linux里面一切皆文件
(二)变更文件所有者
首先登录用户名xyh,新建一个文件,名为books
输入:$touch books
$ll books
现换回到shiyanlou用户身份
输入:$cd /home/xyh
$ls books
$sudo chown shiyanlou books
$ll books
(三)修改文件权限
方法一、二进制数字表示
- 0:没有权限, 1:可执行x, 2:可写w, 4:可读r
- 共十个位置,首位若是-则表示非目录文件,若是d则表示目录
输入:$echo "echo \\"hello shiyanlou\\"">books
$chmod 600 books
$ll books
$su xyh
$cat books
方法二、加减赋值操作
u:user, g:group , o:others, a:all, +增进, -去掉
输入:$chmod go-rw books
$ll books
三、更多
adduser和useradd的区别是什么?
- useadd、userdel这类操作更像是一种命令,执行完了就返回
- adduser更像是一种程序,需要输入、确定等一系列操作
四、遇到的问题
二、(三)修改文件权限的方法二 加减赋值操作中,没有提及的u/g/o按照什么处理?
例如:“u-x”为什么是“--w--wx-wx”?
实验四、Linux目录结构及文件基目录
一、Linux目录结构
1.FHS标准(文件系统层次结构标准)
2.目录路径
路径
cd 切换目录
. 当前目录
.. 上一级目录
-上一次所在目录
~当前用户的home目录
pwd 获取当前所在路径
绝对路径
以根“/”目录为起点的完整路径,以所要到的目录为终点
相对路径
以当前目录 . 为起点,以你所要到的目录为终点
例如:以home目录为起点,进入/usr/local/bin目录
绝对路径:$cd /usr/local/bin
$pwd
相对路径:$cd ../../usr/local/bin
$pwd
二、Linux文件的基本操作
1.新建
-
新建空白文件
$cd ~
切换回到用户的/home/shiyanlou目录$touch test
创建名为test的空白文件 -
新建目录
- 使用mkdir命令可以创建一个空目录,也可以同时指定创建目录的权限属性
mkdir mydir
- 使用-p参数,同时创建父目录
- 使用mkdir命令可以创建一个空目录,也可以同时指定创建目录的权限属性
$mkdir -p father/son/grandson
$cd father/son/grandson
$pwd
2.复制
- 复制文件
$cp test father/son/grandson
- 复制目录
$mkdir family
创建目录
$cp -r father family
加上-r或-R参数,表示递归复制
3.删除
- 删除文件
$rm test
若强制删除,则$rm -f test
。
例如:$touch test
$chmod 444 test
$ll test
$rm test
$rm -f test
- 删除目录
$rm -r family
加上-r或-R参数
4.移动文件与文件重命名
- 移动文件
“mv 源目录文件 目的目录”
$mkdir doc
创建目录doc
$touch file
创建文件file
$ls file
输出file
$mv file doc
将文件file移动到doc目录
$cd doc
切换目录doc
$ls
输出file
- 重命名文件
“mv 旧的文件名 新的文件名”
$mv file1 file2
- 批量重命名(略,使用rename命令)
5.查看文件
- 使用cat、tac命令查看文件:打印文件内容到标准输出(终端),cat正序,tac倒序,可以加上-n参数显示行号
$cp /etc/passwd .
从/etc目录下拷贝passwd文件
$cat passwd
$cat -n passwd
- 使用nl命令查看文件:添加行号并打印
$nl -b a file
表示无论是否为空行,同样列出行号(同“cat -n”)
$nl -b t file
只列出非空行的编号并列出(默认)
$nl -n ln file
在行号字段最左端显示
$nl -n rn file
在行号字段最右端显示,不加0
$nl -n rz file
在行号字段最右端显示,加0
$nl -w 2 -n rz file
-w加数字表示行号字段占用的位数,默认为6位
- 使用more、less命令分页查看文件,可以直接使用键盘操作翻页
$cp /etc/passwd .
$more passwd
默认只显示一屏内容,终端底部显示当前阅读进度,
enter:向下滚动一行,
space:向下滚下一屏,
h:显示帮助, q:退出
- 使用head、tail命令查看文件
$head /etc/passwd
只看头10行,默认为10行,不足10行则显示全部
$head -n 2 /etc/passwd
只看头2行
$tail /etc/passwd
只看后10行
$tail -n 3 /etc/passwd
只看后3行
6.查看文件类型
在Linux中文件的类型不是根据文件后缀来判断的,通常使用file命令来查看文件类型
$file /bin/ls
7.编辑文件
见vim编辑器
Vim快速入门
一、模式介绍
6种基本模式:普通、插入、命令行、可视、选择、Ex
二、三种常用模式的切换
- 普通→插入 按i键或a键
- 普通→命令行 按:键
- 插入、命令行→普通 按Esc键
三、进入vim
1.使用vim命令进入vim界面
-
“vim 文件名”如
$vim practice_1.txt
进入已存在的或者新建的文件 -
$vim
进入命令行模式后输入:e 文件路径
同样可以打开相应文件
2.普通模式下游标移动
h左、j下、k上、l右、w移动到下一个单词、b移动到上一个单词
四、进入插入模式
- i 在当前光标处进行编辑
- I 在行首插入
- A 在行末插入
- a 在光标后插入
- o 在当前行后插入一个新行
- O 在当前行前插入一个新行
- cw 替换从光标所在位置后到一个单词结尾的字符
五、命令行模式下保存文档
普通模式输入:进入命令行模式
- 输入w回车,保存文档
- 输入
:w 文件名
可以将文档另存为其他文件名或存到其他路径下
六、退出vim
1.命令行模式下退出vim
- :wq 保存并退出
- :wq! 强制保存并退出
- :q 退出
- :q! 强制退出,不保存
- :w<文件路径> 另存为
- :saveas 文件路径 另存为
- :x 保存并退出
2.普通模式下退出vim
- shift+zz 保存并退出
七、普通模式下删除vim文本信息
- x或Delate 删除游标所在的字符
- X 删除游标所在前一个字符
- dd 删除整行
- dw 删除一个单词(不适用中文)
- d$或D 删除至行尾
- d^ 删除至行首
- dG 删除到文档结尾处
- d1G 删除到文档首部
- “数字+命令”表示一次删除多行,如
2dd
表示一次删除2行
Vim文档编辑
1.vim重复命令
1.1重复执行上次命令
$cp /etc/protocols .
拷贝测试文件到本地目录
$vim protocols
打开文件进行编辑
在普通模式下.
表示重复上一次的命令操作
例如:普通模式下输入x,删除游标所在字符,输入.
会再次删除一个字符,除此之外也可重复dd的删除操作
1.2执行指定次数相同的命令
输入n+命令
,举例如下:
10x
删除10个连续字符
3dd
删除3行文本
dw
或daw
删除一个单词
dnw
删除n个单词
2.游标的快速跳转(普通模式)
2.1行间跳转
n shift+g(nG)
游标移动到第n行
gg
游标移动到第一行
shift+g(G)
游标移动到最后一行
- 如果默认没有显示行号,先进入命令模式
:
,输入set nu
以显示行号 - 可以使用
ctrl+o
快速回到上一次(跳转前)光标所在位置
2.2行内跳转
普通模式下使用下列命令在行内以单词为单位进行跳转
w
到下一个单词的开头
e
到当前单词的结尾
b
到前一个单词的开头
ge
到前一个单词的结尾
0
或^
到行头
$
到行尾
~
将游标所在字母变成大写或者小写
f+字母
向后搜索字母并跳转到第一个匹配的位置
F+字母
向前搜索字母并跳转到第一个匹配的位置
t+字母
向后搜索字母并跳转到第一个匹配位置之前的一个字母
T+字母
向前搜索字母并跳转到第一个匹配位置之前的一个字母
3.复制粘贴和剪切
3.1复制及粘贴文本
1.普通模式中使用y复制
yy
复制游标所在整行
3yy
复制3行
y^
或 y0
复制至行首,不含光标所在处字符
y$
复制至行尾,含光标处字符
yw
复制1个单词
y2w
复制2个单词
yG
复制至文本末
y1G
复制至文本开头
2.普通模式中使用p粘贴
p
(小写)粘贴至光标后(下)
P
(大写)粘贴至光标前(上)
3.2剪切及粘贴
ddp
快速交换光标所在行与它下面的行
查找替换
1.字符的替换和撤销(undo操作)
普通模式下,
r、指定字母
先按r,再按指定字母,可将游标所在字母替换为指定字母
R
先按R,出现REPLACE字样,进入插入模式,可连续替换,直到按下Esc,退出后记得换成小写锁定
cc
替换整行,即删除游标所在行,并进入插入模式
cw
替换一个单词,即删除一个单词,并进入插入模式
C
(大写)替换游标以至行末
~
反转游标所在字母大小写
u
撤销一次操作
u{n}
撤销n次操作???(见遇到的问题)
U
撤销当前所有修改
ctrl+r
撤销undo的操作???(见遇到的问题)
2.快速缩进
2.1使用命令进行快速调整缩进操作(普通模式)
:set nu
显示行号
15G
跳转到第15行
>>
整行向右缩进
<<
整行向左回退
2.2shiftwidth命令
:set shiftwidth?
获取当前的设定值
:set shiftwidth=10
设置缩进为10个字符
>>
看缩进量有何变化
2.3调整文本位置
:ce
(center)使本行文本居中
:ri
(right)使本行文本靠右
:le
(left)使本行文本靠左
3.查找
3.1快速查找
普通模式下输入/
,然后键入需要查找的字符串,然后按回车键就会进行查找
/
向下查找
?
向上查找
n
继续查找
N
反向查找
3.2高级查找
普通模式下,
\\*
向后(下)查找游标所在处单词
\\#
向前(上)查找游标所在出单词
g\\*
同*,但部分符合该单词即可
g\\#
同#,但部分符合该单词即可
4.遇到的问题
- “
u{n}
撤销n次操作”怎样使用这个命令? ctrl+r
的作用是什么?按了“ctrl+r”之后会显示“Already at newest change”,但没看出其他变化。
高级功能入门
1.多文件编辑
1.1使用vim编辑多个文件
两种形式:
-
在进入vim前使用的参数就是多个文件
-
进入vim后再编辑其他文件
$vim 1.txt 2.txt
同时创建两个新文件并编辑
:n
编辑2.txt文件
:n!
强制切换,未保存
:N
编辑1.txt文件
:N!
强制切换,未保存
1.2进入vim后打开新文件
:e 3.txt
打开新文件3.txt
:e#
回到前一个文件
:ls
可以列出以前编辑过的文档
:b 2.txt
可以直接进入文件2.txt编辑
:bd 2.txt
可以删除以前编辑过的列表中的文件项目
:e! 4.txt
新打开文件4.txt,放弃正编辑的文件
:f
显示正编辑的文件名
:f new.txt
改变正在编辑的文件名字为new.txt
1.3恢复文件
$vim -r 1.txt
:ewcover 1.txt
2.可视模式
- 普通模式下输入
v
(小写),进入字符选择“VISUAL”模式,就可以移动光标,光标走过的地方就会选取,再次按下v就会取消选取 - 普通模式下输入
shift+v
,进入行选择“VISUAL LINE”模式,可以上下移动光标选更多的行,再次按下shift+v就会取消选取 - 普通模式下输入
ctrl+v
,进入区域选择“VISUAL BLOCK”模式,可以上下左右移动光标选择区域,再次按下ctrl+v取消选择 - 在可视“VISUAL···”模式下输入
d
或x
删除所选内容 - 在可视“VISUAL···”模式下输入
y
复制所选内容
3.视窗操作
:new
打开一个新的vim视窗
:sp 1.txt
打开新的水平分屏视窗来编辑1.txt
:vsp 2.txt
打开新的垂直分屏视窗来编辑2.txt
4.创建加密文档
$vim -x file1
5.在vim执行外部命令
:! ls
用于显示当前目录的内容
:! rm FILENAME
用于删除名为FILENAME的文件
:w FILENAME
可将当前vim中正在编辑的文件另存为FILENAME文件
6.vim中的查看帮助
- 普通模式下按F1打开vim自己预设的帮助文档
:h shiftwidth
打开名为shiftwidth的帮助文件:ver
显示版本及参数
7.功能设定
7.1获取目前的设定
:set
或 :se
显示所有修改过的配置
:set all
显示所有的设定值
:set option?
显示option的设定值
:set nooption
取消当前设定值
7.2set功能的说明
:set ai
设置自动缩进
:set aw
设置自动存档,默认未打开
:set background=back或light
设置背景风格
:set bk
设置自动备份,默认未打开
:set cin
设置C语音风格缩进
实验五、环境变量与文件查找
一、环境变量
1.变量
declare tmp
使用declare命令创建一个名为tmp的变量
tmp=shiyanlou
将变量tmp赋值为shiyanlou
echo $tmp
读取变量的值,使用echo和$
注:变量名只能是英文字母、数字或者下划线,且不能以数字作为开头
2.环境变量
用于打印环境变量信息的三个命令:
-
set显示当前shell所有变量
-
env显示与当前用户相关的环境变量
-
export显示从shell中导出成环境变量的变量
注:为了与普通变量区别,我们习惯将环境变量名设为大写
3.命令的查找路径与顺序
echo $PATH
查看PATH环境变量的内容
4.添加自定义路径到“PATH”环境变量
PATH=$PATH:/home/shiyanlou/mybin
添加自定义路径(注:这里一定要使用绝对路径)
echo "PATH=$PATH:/home/shiyanlou/mybin">>.zshrc
-
>>
表示将标准输出以追加的方式重定向到一个文件中 -
>
表示以覆盖的方式重定向到一个文件中
5.修改和删除已有变量
5.1变量修改
${变量名#匹配字串}
从头向后,最短
${变量名##匹配字串}
从头向后,最长
${变量名%匹配字串}
从后向前,最短
${变量名%%匹配字串}
从后向前,最长
${变量名/旧的字串/新的字串}
将符合旧字串的第一个字串替换为新的字串
${变量名//旧的字串/新的字串}
将符合旧字串的全部字串替换为新的字串
例如:
path=$PATH
echo $path
path=${path%/home/shiyanlou/mybin}
path=${path%*/mybin}
5.2变量删除
$unset temp
6.如何让环境变量立即生效
$. ./.zshrc
必须指定完整的绝对或相对路径名
$source .zshrc
不需要
二、搜索文件
1.whereis简单快速
2.locate快而全
3.which小而精
4.find精而细
与时间相关的命令参数:
-atime
最后访问时间
-ctime
最后修改文件内容的时间
-mtime
最后修改文件属性的时间
例如:
-mtime n
:在n天之前的一天之内修改过的文件
-mtime +n
:在n天之前(不包含第n天本身)被修改过的文件
-mtime -n
:在n天之内(包含第n天本身)被修改过的文件
-newer file
:file为一个已存在的文件,列出比file还要新的文件名
例如:
$find ~ -mtime 0
列出home目录中,当天(24小时之内)有改动的文件
$find ~ -newer /home/shiyanlou/Code
列出用户目录下比Code文件夹新的文件
挑战:寻找文件
目标:
- 找到sources.list文件
- 把文件所有者修改为自己(shiyanlou)
- 把权限修改为仅仅只有自己可读可写
实验六、文件打包与解压缩
一、zip压缩打包程序
1.使用zip打包文件夹
zip -r -q -o shiyanlou.zip /home/shiyanlou
-r
表示递归打包包含子目录的全部内容-q
表示为安静模式,即不向屏幕输出信息-o
表示输出文件,需在其后紧跟打包输出文件名
$du -h shiyanlou.zip
查看打包后文件的大小
$file shiyanlou.zip
2.设置压缩级别为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
- 1表示最快压缩但体积大,9表示体积最小但耗时最久
-x
是为了排除我们上一次创建的zip文件- 注:这里只能使用绝对路径,否则不起作用
$du -h -d 0 *.zip ~ | sort
- h:--human-readable
- d:--max-depth
3.创建加密zip包
$zip -r -e -o shiyanlou_encryption.zip /home/shiyanlou
使用-e参数可以创建加密压缩包
$zip -r -l -o shiyanlou.zip /home/shiyanlou
加上-l参数将LF(Lunix中的换行)转换为CR+LF(Windows中的换行)
二、使用unzip命令解压缩zip文件
$unzip shiyanlou.zip
将shiyanlou.zip解压到当前目录
$unzip -q shiyanlou.zip -d zipest
使用安静模式,将文件解压到指定目录
$unzip -l shiyanlou.zip
不想解压只想看压缩包的内容用-l参数
$unzip -O(大写)GBK 中文压缩文件.zip
使用-O参数指定编码类型
三、rar打包压缩命令
$sudo apt-get update
$sudo apt-get install rar unrar
安装rar和unrar工具
$rm *.rar
$rar a shiyanlou.rar .
从指定文件或目录创建压缩包或添加文件到压缩包
- 使用a参数添加一个目录~到一个归档文件中,如果该文件不存在就会自动创建
- rar的命令参数没有-,如果加上会报错
$rar d shiyanlou.rar .zshrc
从指定压缩包文件中删除某个文件
$rar 1 shiyanlou.rar
查看不解压文件
$unrar x shiyanlou.rar
全路径解压
$mkdir tmp
$unrar e shiyanlou.rar tmp/
去掉路径解压
四、tar打包工具
$tar -cf shiyanlou.tar ~
-c
表示创建一个tar包文件-f
用于指定创建的文件名,紧跟文件名-v
可视-p
保留绝对路径符
$mkdir tardir
$tar -xf shiyanlou.tar -c tardir
解包一个文件(-x)到指定路径的已存在目录(-c)
$tar -tf shiyanlou.tar
只查看不解包文件-t参数
$tar -cphf etc.tar /etc
保留文件属性(-p)和跟随链接,备份链接指向的源文件而不是链接本身(-h)
$tar -czf shiyanlou.tar.gz ~
压缩文件格式和对应的参数:
-
*.tar.gz
对应-z
-
*.tar.xz
对应-J
-
*.tar.bz2
对应-j
实验七、文件系统操作与磁盘管理
一、基本操作
1.使用df命令查看磁盘的容量
$df
$df -h
更易读
2.使用du命令查看目录的容量
$du
$du -h
更易读
$du -h -d 0 ~
只查看1级目录的信息
$du -h -d 1 ~
查看2级
-d
参数指定查看目录的深度-a
参数显示目录中所有文件的大小-s
仅显示总计,只列出最后加总的值
二、创建虚拟磁盘
没看懂
实验八、Linux下的帮助命令
一、内建命令与外部命令
- 内建命令:“天生自带的天赋技能”,例如:history、cd、exit
- 外部命令:“后天得来的附加技能”,例如:ls、vi
输入$type xxx
若输出:
xxx is a shell builtin
说明是内建命令
xxx is usr/sbin/xxx
说明是外部命令
xxx is an alias for xx - xxx
说明是为命令别名所设定的名称
二、帮助命令的使用
1.help命令
$bash
$ help exit
help命令只能用于显示内建命令的帮助信息
若是外部命令,则 $ls --help
2.man命令
$man ls
man命令没有内建与外部命令的区分
man手册:按pgup和pgdn上下翻看,按q退出当前页面
LS(1)
LS表示手册名称,(1)表示该手册位于第一章节
3.info命令
一般的bash会自带
info ls
总结
在实验楼中的学习激发了我学习的兴趣,尤其是每节实验结尾处的“轻松一下”,切实地让我感到惊奇和成就感。但仍存在许多尚未解决的问题,例如:
- 实验二作业部分toilet、figlet怎么用?
- 实验三修改文件权限的方法二 加减赋值操作中,没有提及的u/g/o按照什么处理?
例如:“u-x”为什么是“--w--wx-wx”? - Vim查找替换实验中,“
u{n}
撤销n次操作”怎样使用这个命令? - Vim查找替换实验中,
ctrl+r
的作用是什么?按了“ctrl+r”之后会显示“Already at newest change”,但没看出其他变化。 - 实验七创建虚拟磁盘未看懂
希望我能在今后的学习中解决这些问题。