写在前面
首先,大家要知道我们为什么要学习Linux。通常对于一个项目而言,在开发期间,使用Windows居多,因为windows方便且适配度更高;而项目的上线必须是在Linux系统或Unix系统或其子系统。而对于用户来讲,个人通常使用Windows系统,方便用户操作;而企业用户则两者都会选择使用。Ubuntu可以说是Linux的发行版,接下来我们一起来学习Ubuntu的使用。加粗样式
一、什么是Linux,他的特点是什么
Linux,是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统。
Linux的特点:
1. 安全
2. 稳定性
3. 高效
二、系统(Linux操作系统,由三个重要的部分组成。内核、shell、文件系统)
1.内核Kernel
- 管理硬件
- 管理内存(内存分配)
- 交互空间:从硬盘启动一部分空间,操作系统频繁进行换入换出达到内存够使用的效果。
- 管理进程:
程序,静态的
线程,争对功能的,功能之间是独立的并且不受影响,使用的就是线程机制
进程,启动程序成为进程,对应也是多进程每一个进程里边有多线程 - 管理系统硬件和系统程序(驱动)
- 管理守护进程——>运行在后台,特点:在主系统启动时启动,关闭时关闭
- 管理文件系统
2.终端shell
shell是用户和内核之间的接口,充当解释翻译的功能,输入用户发送命令的界面,对应的就是终端。
-
扮演解释者和翻译者
-
将机器语言转换为人能识别的高级语言
超级用户:#root 普通用户:$root 给管理员设置密码 sudo passwd root(账户名) 切换账户 普通切超级:su(sudo +命令可让普通用户使用超级用户的命令) 超级切普通:exit 查看当前shell版本号 echo $SHELL 或者 ps
3.文件系统
为特定目的分组在一起的目录,子目录和文件的层次结构
- 路径
- 路径名:唯一区分文件
- 相对路径:相对于当前路径,以点. 或者点点… 开头
- 绝对路径:相对于根路径,以斜杆/ 开头
三、常用命令
1.clear命令——清屏
2.pwd 命令——显示当前工作目录
3.cd 命令——切换目录
cd(进入具体目录)目录名
cd ../目录名( . 当前目录 .. 返回上一级目录(父目录))
cd /按照层级找到指定目录名(/根目录)
cd 回到家目录
4.touch命令——创建文件或者更新文件信息
1.创建一个文件
touch b.txt
2.创建多个文件(多个文件之间用空格分开,可以设置创建文件的位置)
touch c.txt /etc/test
3.使用touch创建的必定是文件
touch game
5.mkdir命令——创建目录
1.创建一个目录
mkdir gam
2.创建多个目录(多个目录之间用空格分开,可以设置创建目录的位置)
a.mkdir gam1 game1/gam2 (父目录不存在无法创建成功)
b.mkdir -p game1/game2 (-p 属性,可以创建多级目录,同时创建父目录和子目录)
3.使用mkdir创建的必定是目录
mkdir d.txt
6.chmod命令——更改权限(文件和目录)
-
文件和目录的三种权限
r 读权限; w 写权限; x 执行权限
-
在添加或者删除某个权限时
u 拥有者; g 同组人; o 其他人; a 所有人
-
权限的十进制表示
r = 4; w = 2; x = 1
-
chmod的具体应用
1.其他人添加b.txt文件的读写权限 chmod o=rw b.txt 2.拥有者删除b.txt的执行权限,同组人添加b.txt文件的读权限 chmod u-x,g+r b.txt 3.拥有者,同组者,其他人拥有gam目录的读写,执行权限 chmod 777 gam
7.cp命令——复制文件和目录
- -i 用来提示是否覆盖,如果没有相同文件或目录则不提示,有则提示 (空目录除外)
- -r 指明复制的是目录
1.把源文件复制到目标目录
cp a.txt b.txt
如果b.txt不存在,则自动创建b.txt文件
如果b.txt 存在,则自动覆盖b.txt文件内容
cp -i a.txt b.txt
2.把源文件复制到目标目录(最后一个文件默认为目录)
一个文件到一个目录
cp -i a.txt game1
多个文件到一个目录
cp -i a.txt b.txt game1
3.把源目录复制到目标目录
一个目录到一个目录
cp -ri gam1 game1
多个目录到一个目录
cp -ri gam1 gam game1
8.mv命令——移动文件和目录(只有移动功能,没有覆盖旧文件的功能)
- 目标文件或目录不存在时,mv命令的作用就是重命名
1.把源文件移动到目标文件
mv a.txt h.txt (目标文件不存在时,命令的作用是重命名)
mv h.txt z.txt (目标文件存在时,将源文件内容复制到目标文件,并将源文件删除)
2.把源文件移动到目标目录(目标文件不存在时,命令的作用是重命名)
mv b.txt gam2
mv c.txt e.txt gam2
3.把源目录移动到目标目录
mv gam gam3 (目标文件不存在时,命令的作用是重命名)
mv gam3 gam1
9.rm命令——删除文件和目录
- -r 指明删除的是目录
1.删除一个文件
rm -i test
2.删除多个文件
rm -i test text
3.删除目录(空和非空都可以)
rm -ri gam1
4.rmdir 删除空目录
10.man命令——查看命令的使用手册
1.查看ls命令的使用手册
man ls
命令 | 功能 |
---|---|
空格 | 每次往下翻一个屏幕的内容 |
回车 | 每次往下翻一行内容 |
b | 每次向上翻回一页 |
f | 每次向下翻一页 |
q | 退出当前手册界面 |
/stirng | 查找指定字符串,例如,/the 就是查找这个单词 |
n | 配合/string命令,可以快速调整跳到下一个指定字符串的位置 |
2.根据命令的部分关键词查找相关所有命令
man -keyword tou
11.telnet命令——进行远程登录服务器
ifconfig, 查看ip地址
telnet远程登录服务器的要求:
1. 本机有telnet客户端,可以使用telnet命令
2. 服务器主机安装了telnet服务器端,并已经开启服务
3. 本机可以ping通服务器主机的ip地址
四、特殊字符
1. * 表示通配,可以代表0~n个字符:可以运用在改,移,查
查:ls -l *.txt
移:mv *.txt gam
2. ? 表示任意的一个字符
ls a?.txt
3. ; 表示在一行语句中连续执行多个命令,命令之间使用分号进行分割
date;cal;pwd (date查询日期,cal查询日历, pwd查询当前位置)
cal 7 2000 (cal 月 年 :可以查找某年某月的日历)
4. >和>> 输出重定向符号,将原本输出到命令行中的内容,重定向输入到另外一个地方。
a. 标准输出:屏幕,终端;
b. 输出重定向:将内容输出具体的某个文件
1.> 表示往文件中写入内容,是覆盖操作
cat z.txt>ss.txt
2.>> 表示往文件中写入内容,是追加操作
cat z.txt>>ss.txt
5. |管道符,可以把第一个命令的结果,交给第二个命令作为参数进行操作
1.把当前日历通过打印机进行打印
cal | lp
2.查看/etc/passwd中的内容并筛选出briup相关的信息
cat /etc/passwd | grep "briup"
五、 查看内容
1. ls命令——查找目录下的内容列表
ls -a //显示隐藏文件和隐藏目录,也就是以点(.)开头的文件和目录
ls -R //递归显示目录中的内容
ls -t //显示目录中的内容列表,并使用时间排序,默认是按着名字排序
ls -l//显示详细信息
ls -a -l //这些参数可以多个一起使用 ls -al //参数可以分开也可以合在一起写
ls -F //显示文件的类型,目录/ 可执行文件* 普通文件
2. cat命令——显示文件的内容
1.显示文件中的所有内容
cat z.txt ss.txt
2.把a.txt和b.txt的内容合并到c.txt中
cat a.txt b.txt>c.txt
3.把文件内容置空
cat /dev/null>ss.txt
4.:空操作 :>z.txt
3. more命令
more和cat一样,也是查看内容的命令,但是more命令可以一点点的显示内容,而不是一次全显示出来
使用more命令查看/etc/passwd文件内容
more /etc/passwd
命令 | 功能 |
---|---|
空格 | 每次往下翻一个屏幕的内容 |
回车 | 每次往下翻一行内容 |
b | 每次向上翻回一页 |
f | 每次向下翻一页 |
q | 退出当前手册界面 |
v | 进入vi模式(只读) |
在vi模式下,输入:q 则退出vi模块回到more的查看模式
在vi模式下,使用/stirng,查找指定字符串,例如,/the 就是查找这个单词
在vi模式下,n,配合/string命令,可以快速调整跳到下一个指定字符串的位置
六、vi 编辑器
-
vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器。
-
vi编辑器有三种模式,命令模式,命令行模式,编辑模式
1.命令模式,可以使用简单的命令进行文本内容的操作 2.命令行模式,可以使用复杂点的命令进行文本内容操作 3.编辑模式,可以直接编辑文本内容
1.直接使用vi打开文件,进入命令模式
echo "hello" > a
vi a
这时候,不能直接编辑文件,但是可以简单的命令操作文件内容,
例如yy命令复制当前行,p命令 把复制内容粘贴到下一行。
2.在命令模式下,按冒号(shift+:)进入到命令行模式
命令行模式执行完命令自动返回到命令模式
3.在命令模式下,按命令i或者a或者o都可以进入到编辑模式
4.编辑完成后,先按Esc进入到命令模式,再按(shift+:)进入到命令行模式,再输入wq,然后回车,表示 保存内容并退出
5.命令模式
命令 | 作用 |
---|---|
x | 删除一个字符 |
dw | 删除一个单词 |
3dw | 删除3个单词 |
dd | 删除一行,光所在行 |
2dd | 删除2行,光标所在行和下一行 |
r | 替换一个字符,在某个字符上按r,然后再按另一个新字符,这样新字符就会替换原来的老 字符 |
cw | 先删除这个单词,再进入到编辑模式 |
cc | 先删除当前行,再进入到编辑模式 |
C | 大写C(shift+c),删除光标所在位置到当前行的末尾,然后进入编辑模式 |
yy | 复制当前行 |
yw | 复制一个单词 |
p | 粘贴复制的内容 |
~ | shift+~,把字符进行大小写转换 |
J | shift+j,把当前行和下一行进行连接 |
u | 撤销之前的操作 |
G | shift+g,将光标定位到文件末尾 |
nG | 将光标定位到文件第n行,这里n代表的是行号 |
/hello | 查找和hello的位置,然后使用n可以定位到下一个匹配的地方,从上往下查找 |
?test | 查找和test的位置,然后使用n可以定位到下一个匹配的地方,从下往上查找 |
空格 | 将把光标移动到下一个字的字尾 |
w | 将光标移至下一个字的字首 |
b | 将光标移至上一个字的字首 |
h | 将光标左移 |
l | 将光标右移 |
j | 将光标下移 |
k | 将光标上移 |
如果是 wq! 则表示保存并强制退出
6.命令行模式
命令 | 作用 |
---|---|
:2,4d | 删除第2行到第4行 |
:2,4co5 | 拷贝第2行到第4行之间的内容到第5行后面 |
:1,2m7 | 移动第1行到第2行之间的内容到第7行后面 |
:w | 保存 |
:w newfile | 保存为另一个新文件,相当于另存为功能 |
:q | 退出 |
:q! | 强制退出 |
:wq! | 保存并强制退出 |
:set nu | 显示行号,set nonu 是取消行号 |
:5 | 将光标直接定位到第五行 |
:r b.txt | 将b.txt文件内容插入到当前文件中 |
:1,$s/hello/test/g | 将文件中从1行开始,所有的hello替换成test |
七、环境变量
- 在操作系统中,可以设置一些环境变量(名字=值),将来在执行命令的时候,可以从指的环境变 量中获取到对应的值,也可以将来在我们写的程序中,通过环境变量的名字获取到这些值。
1.设置临时的环境变量的值
name=tom
2.使$符号,获取环境变量的值
echo &name
注意,这种临时这只环境变量的方式,一旦关闭命令创建,这个环境变量就失效了
3.设置用户级别的环境变量:把环境变量配置到用户家目录中的.bashrc中
vi .bashrc
4.保存退出后,使用 source 命令,让修改过的配置文件生效:
5.当前默认使用的bash,在这个窗口中切换到sh中,然后再查看sh中是否能使用刚刚配置的环境变量:
打开命令窗口默认使用的bash是父shell,又打开的sh是子shell,这时候
父shell中配置的环境变量没 有传递给子shell中,如果想让它进行传递,
需要使用export命令将配置好的环境导出。
6.先退回到bash中,使用vi打开.bashrc进行修改:
vi .bashrc
7.保存退出,再进行上面的测试过程:
可以看出,导出的环境变量已经在子shell中生效了
在这个实验操作中,一定要理解 source 命令和 export 起到的作用
8.如果想设置全局的环境变量,就是所以用户都可以访问到,那么就需要在 /etc/profile 中进行配置环境 变量,但是需要使用root权限才能修改,或者使用sudo命令。修改方式和上面一样。
建议一般在~/.bashrc中进行配置即可。
shell | 临时变量 | 用户级别 | 系统级别 |
---|---|---|---|
bash | 命令窗口中直接设置,例如name=tom | 在~/.bashrc中配置 | 在/ect/profile中配置 |
-
当在命令窗口中执行命令的时候,例如执行ls命令,其实是运行了一个执行文件/bin/ls文件:
ls -l /bin/ls
-
问题:执行ls命令的时候,系统是怎么找到这个ls文件所在位置的?
-
这里系统就是通过PATH这个环境变量来查找的,使用echo可以看到,PATH环境变量中配置的是一个个的 路径,多个路径之间使用冒号(:)分割
注意,必须是英文输入法下的冒号(:),windows系统中path 变量的路径分割使用的是英文输入法 下的分号(;)
-
which 命令,可以查看某个命令所在的路径:
Windows系统中类似的命令 where,例如 where java
-
临时把PATH的值设置为空之后,ls以及其他命令都是无法使用的,除非我们把当前路径切换到/bin目录 中,因为默认会在当前目录下查找是否有要执行的命令文件:
注意,cd切换目录是系统内置的默认命令,不受PATH变量配置的影响。
- 这里只是把PATH临时设置为空了,只要关闭这个命令窗口,再打开一个新的窗口,PATH就恢复过来了
八、归档压缩
-
归档,把若干个文件或目录简单的合并在一起,它并不对文件进行压缩,就是将多个文件前后连接 在一起,形成一个大文件。另外还会额外的添加一些信息,所以归档后的总文件的大小,反而往往比之前文件之和还要大一些。
-
压缩,是一种通过特定的算法来减小计算机文件大小的机制,Linux中的文件压缩命令有多种,其 中最常用的命令就是gzip。
1.把指定文件和目录进行归档
tar -cvf work.tar a b c test1 test2
2.解除归档文件到指定目录
tar -xvf work.tar -C dir1
3.tar命令常用的选项及其作用
选项 | 作用 |
---|---|
-c | 建立新的压缩文件 |
-r | 添加文件到已经压缩的文件 |
-u | 添加改变了和现有的文件到已经存在的压缩文件 |
-x | 从压缩的文件中提取文件 |
-t | 显示压缩文件的内容 |
-z | 支持gzip解压文件 |
-j | 支持bzip2解压文件 |
-v | 显示操作过程 |
-k | 保留源有文件不覆盖 |
-C | 切换到指定目录 |
-f | 指定压缩文件 |
4.将归档好的文件进行压缩
gzip work.tar
5.在tar进行归档之后直接进行压缩
rm work.tar.gz
tar -zcvf work.tar.gz a b c test1 test2
6.对gz文件进行解压,解压到当前目录
gunzip work.tar.gz
7.对tar.gz文件进行解压并解除归档
tar -zxvf work.tar.gz -C dir2