写在前面
首先,大家要知道我们为什么要学习Linux。通常对于一个项目而言,在开发期间,使用Windows居多,因为windows方便且适配度更高;而项目的上线必须是在Linux系统或Unix系统或其子系统。而对于用户来讲,个人通常使用Windows系统,方便用户操作;而企业用户则两者都会选择使用。Ubuntu可以说是Linux的发行版,接下来我们一起来学习Ubuntu的使用。加粗样式
一、什么是Linux,他的特点是什么
Linux,是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统。
Linux的特点: 1. 安全 2. 稳定性 3. 高效
二、系统(Linux操作系统,由三个重要的部分组成。内核、shell、文件系统)
1.内核Kernel
- 管理硬件
- 管理内存(内存分配)
- 交互空间:从硬盘启动一部分空间,操作系统频繁进行换入换出达到内存够使用的效果。
- 管理进程:
程序,静态的 线程,争对功能的,功能之间是独立的并且不受影响,使用的就是线程机制 进程,启动程序成为进程,对应也是多进程每一个进程里边有多线程 - 管理系统硬件和系统程序(驱动)
- 管理守护进程——>运行在后台,特点:在主系统启动时启动,关闭时关闭
- 管理文件系统
2.终端shell
shell是用户和内核之间的接口,充当解释翻译的功能,输入用户发送命令的界面,对应的就是终端。
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命令——移动文件和目录(只有移动功能,没有覆盖旧文件的功能)
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命令——删除文件和目录
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命令的时候,系统是怎么找到这个ls文件所在位置的? -
这里系统就是通过PATH这个环境变量来查找的,使用echo可以看到,PATH环境变量中配置的是一个个的 路径,多个路径之间使用冒号(:)分割 注意,必须是英文输入法下的冒号(:),windows系统中path
变量的路径分割使用的是英文输入法 下的分号(;)
-
which 命令,可以查看某个命令所在的路径: Windows系统中类似的命令 where,例如 where java
-
临时把PATH的值设置为空之后,ls以及其他命令都是无法使用的,除非我们把当前路径切换到/bin目录 中,因为默认会在当前目录下查找是否有要执行的命令文件: 注意,cd切换目录是系统内置的默认命令,不受PATH变量配置的影响。
- 这里只是把PATH临时设置为空了,只要关闭这个命令窗口,再打开一个新的窗口,PATH就恢复过来了
八、归档压缩
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
|