由内核、shell、文件系统组成。
1.Kernel:内核,管理硬件设备、内存、进程、交互空间、文件系统、系统程序等。 2.Shell: Shell是用户和kernel之间的接口,它也是一个命令解释器,当用户在linux界面发出一个指令时,命令先传到shell,然后在将这个指令翻译成计算机可以识别的二进制语言,然后传给计算机内核,告诉他要做什么事情。计算机内核将结果返还给shell,shell翻译成人所熟悉的语言,将结果展示出来 . 几种常用的shell: Bourne shell(sh)是一个快捷方式,已经被/bin/bash所取代 Korn shell(ksh)语法和Bourne shell 相同,同时具备了C shell的易用特点 C shell (csh)使用的是类C语法,csh是具有C语言风格的一种shell borune-again shell(bash) 大多数Linux系统默认使用的shell 是Bourne shell的一个免费版本,是最早的Unix Shell 3.File System 文件系统,将硬件和软件都映射成文件,统一进行管理。
目录作用/根目录,所有目录的父目录/bin包含普通用户和系统管理员可以共享的各种通用程序/boot包含系统引导程序GRUB及其配置文件、linux内核文件vmlinuz和磁盘内存映 像文件initrd.img等重要引导文件/dev包含系统支持的所有设备文件/etc包含系统管理和维护方面的所有配置文件/home包含所有普通用户的家目录/lost+found用于存储fsck命令在检测与修复文件系统时删除的文件和目录/media包含移动存储介质的挂载点/mnt包含所有自定义的文件系统的挂载点,可以挂载任何文件系统/opt应用程序等附加软件的安装目录/proc虚拟文件目录,系统关闭时为空目录,系统运行时进程文件系统根目录,其 中的部分文件系统分别对应当前正在运行的进程,可用于访问当前进程的地 址空间/root超级用户root的家目录/sbin超级用户管理员的常用工具、如管理和维护、系统引导和恢复命令集合/srv分担了var目录的一些功能,保存了一些网络服务所需的数据文件/sys和proc一样是虚拟目录,系统各种设备配置信息的根目录/tmp临时文件目录,用于存储系统运行过程生成的临时文件/usr既可以作为根目录下的一个子目录,其中保存系统提供的各种共享数据(用 户命令、库函数、头文件、文档等),又可以作为一个单独的文件系统,可 以认为是对根目录的一个递归目录,使得文件系统具有更大的灵活性/var该目录和usr 类似,首先是根目录下的子目录,也可以作为单独的文件系 统,用于存储各种可变长的数据文件(如日志文件)、暂存文件或待处理的 临时文件查看用户默认使用的shell: *echo $SHELL* 普通用户会显示$符号,root账号会显示#符号
使用点(.)来表示当前目录,使用点点(…)来表示当前目录的上一级目录。
使用cat命令来查看目录中的文件
如: cat ./hello.txt 查看当前目录中的hello.txt文件
cat …/hello.txt 查看当前目录的父目录中的hello.txt文件
绝对路径:以根目录/开头的路径
相对路径:在当前路径的条件下去表示另外的路径
命令格式:Command(命令关键字) [option(s)(可以有多个选项) [argument](可以有多个参数)
大小写非常敏感不能出错,需要用空格隔开常用命令
clear 清屏
pwd 显示当前工作目录
cd 切换目录,如果只使用cd会默认回到家目录
touch 创建文件
ls 显示当前目录下的内容列表
ls -a 显示隐藏文件和隐藏目录,就是以点(.)开头的文件和目录
ls -R 递归显示目录中的内容
ls -a -l 这些参数可以一起写,也可以分开
ls -t 显示目录中的内容列表,并使用时间排序
ls -l 显示详细的信息
-rw-rw-r-- 1 briup briup 199 7月16 12:16 a.txt 从左到右
文件类型,普通文件是- 目录是d 链接文件是l 块设备文件是b 字符设备文件是c 命令管道文件是p sock文件是s rw-rw-r-- 权限设置,这里是分三组,分别为拥有者权限、同组人权限、其他人权限 1 链接号 briup 拥有者 briup 拥有组 199 文件大小 7月 16 12:16 最后修改时间 a.txt 文件名字
三种权限:r 读权限、w 写权限、x执行权限 添加或者删除某个权限:u表示拥有者、g表示同组的人、o表示其他人、a表示所有人 使用数字来表示权限:0000 0001 x 执行权限 十进制数字 1 0000 0010 w 写权限 十进制数字 2 0000 0100 r 读权限 十进制数字 4 如:chmod 777 b.txt 表示修改b.txt这个文件的权限为拥有者、同组人、其他人都是可读可写可执行
touch命令
touch a.txt 当a.txt 文件不存在则创建,存在则更新文件修改时间touch a.txt b.txt c.txt d.txt 连续创建a,b,c,d四个txt文件mkdir命令
创建一个test目录:mkdir test创建多个目录:mkdir test1 test2 test3创建多级子目录,-p表示子目录不存在则创建 mkdir -p test1/test2/test3cp命令
cp a.txt b.txt 如果b.txt 不存在则自动创建b.txt 文件,存在则覆盖b.txt文件中的内容cp -i a.txt b.txt 这个有-i会提示是不是要覆盖b.txt中的内容,是的话就输入y,不是就输入n或者回车cp -r test1 test2 复制test1文件及其内容到test2目录中,如果test2目录不存在,则会自动创建test2目录,并把test1目录中的文件复制到test2目录,但是不会包括test1目录,如果test2目录是存在的,就会包括test1目录cp -r test test4/temp 把test目录复制到test4目录中,并且修改目录名字为temp,这个要求test4目录是存在,不存在的话就是上面的情况cp a.txt b.txt test 把a.txt b.txt文件复制到test目录中,无论cp命令后面有多少个文件或目录,都是复制到最后一个文件或目录中,这个需要这里的文件和目录都是存在的mv命令
mv a.txt test 将a.txt 文件移动到test目录中mv a.txt b.txt c.txt test将a.txt b.txt c.txt移动到test目录中mv a.txt b.txt 将a.txt修改为b.txtmv dir1 dir2 如果dir2存在则是把dir1移动到dir2中,不存在就是修改名字为dir2rm命令
rm a.txt 删除a.txt文件rm a b c d 删除a b c d 四个文件rmdir test 删除空目录testrm -r test 删除非空目录testrm -r -f test 强制删除非空test目录,没有提示man命令
man ls 查看ls命令的使用手册telnet命令
使用telnet命令进行远程登录服务器
ifconfig 查看ip地址
telnet远程登录服务器的要求:本机有telnet客户端可以使用telnet命令;服务器主机安装了telnet服务器端并开启服务;本机可以ping通服务器主机的ip地址
*表示通配符,可以代表0~n个字符
ls *.txt 显示所有的txt文件?表示任意一个字符
ls a?.txt 显示以a开头 且文件名只有两个字符长度的txt文件; 表示一行语句汇总连续执行多个命令,命令之间使用分号分割
cd;ls 回到家目录后在执行ls命令date;cal;pwd 先显示时间,再显示日历,最后显示当前路径>和>> 输出重定向符
>表示向文件中写入内容会覆盖掉之前的东西
>>表示向文件中写入内容不会覆盖掉之前的东西
echo "hello" >a 把hello写入到a文件中,a文件不存在则创建,存在则覆盖
cal 12 2020 > a 把2020年12月的日历写入到a文件中会覆盖掉之前的内容
cal 12 2020 >> a 把2020年12月的日历写入到a文件中不会覆盖掉之前的内容
| 管道符
管道符可以把第一个命令的结果,交给第二个命令作为参数进行操作
cat /etc/passwd | grep "briup" 查看/etc/passwd中的内容并且筛选出briup相关的信息
三大模式:命令模式、命令行模式、编辑模式
使用vi 进入的就是命令模式,按下命令i或a或o进入到编辑,在编辑完成后,按下esc 退出编辑模式到命令模式,在按下(shift+:)进入到命令行模式,输入wq是保存并且退出
i 表示在光标当前位置处插入,并变为编辑模式 a 表示在光标所在位置后插入,并变为编辑模式 o 表示在光标所在行的下方插入空行,并变为编辑模式
命令模式
命 令作用x删除一个字符dw删除一个单词3dw删除3个单词dd删除一行,光所在行2dd删除2行,光标所在行和下一行r替换一个字符,在某个字符上按r,然后再按另一个新字符,这样新字符就会替换原来的 老字符cw先删除这个单词,再进入到编辑模式cc先删除当前行,再进入到编辑模式C大写C(shift+c),删除光标所在位置到当前行的末尾,然后进入编辑模式 yy复制当前行yw复制一个单词p粘贴复制的内容~shift+~,把字符进行大小写转换Jshift+j,把当前行和下一行进行连接u撤销之前的操作Gshift+g,将光标定位到文件末尾nG将光标定位到文件第n行,这里n代表的是行号/hello查找和hello的位置,然后使用n可以定位到下一个匹配的地方,从上往下查找?test查找和test的位置,然后使用n可以定位到下一个匹配的地方,从下往上查找将把光标移动到下一个字的字尾w将光标移至下一个字的字首b将光标移至上一个字的字首h将光标左移l将光标右移j将光标下移k将光标上移命令行模式
命令作用: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.临时变量的设置,一旦关闭命令创建,这个环境变量就是失效了 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gqkxi1kG-1603290299523)(C:\Users\斌\AppData\Roaming\Typora\typora-user-images\image-20201021214206059.png)] 2.设置用户级别的环境变量:把环境变量配置到用户家目录中的.bashrc中 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qApxSa9A-1603290299527)(C:\Users\斌\AppData\Roaming\Typora\typora-user-images\image-20201021214255720.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i732doFc-1603290299529)(C:\Users\斌\AppData\Roaming\Typora\typora-user-images\image-20201021214304674.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SVWQI3wQ-1603290299533)(C:\Users\斌\AppData\Roaming\Typora\typora-user-images\image-20201021214415035.png)] PS1:shell内置的环境变量,起主提示符的作用 which:打印命令的全路径 PATH:可执行程序的搜索路径 如果想设置全局的环境变量,就是所以用户都可以访问到,那么就需要在 /etc/profile 中进行配置环境 变量,但是需要使用root权限才能修改,或者使用sudo命令。修改方式和上面一样。 建议一般在~/.bashrc中进行配置即可。
当在命令窗口中执行命令的时候,例如执行ls命令,其实是运行了一个执行文件/bin/ls文件: ls -l /bin/ls [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kON56pUu-1603290299535)(C:\Users\斌\AppData\Roaming\Typora\typora-user-images\image-20201021215840813.png)]
问题:执行ls命令的时候,系统是怎么找到这个ls文件所在位置的? 这里系统就是通过PATH这个环境变量来查找的,使用echo可以看到,PATH环境变量中配置的是一个个 的路径,多个路径之间使用冒号(:)分割 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eVn5YRzl-1603290299538)(C:\Users\斌\AppData\Roaming\Typora\typora-user-images\image-20201021215856510.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lKLMP1cN-1603290299540)(C:\Users\斌\AppData\Roaming\Typora\typora-user-images\image-20201021220655074.png)]
归档,把若干个文件或目录简单的合并在一起,它并不对文件进行压缩,就是将多个文件前后连接在一起,形成一个大文件。另外还会额外的添加一些信息,所以归档后的总文件的大小,反而往往比之前文件之和还要大一些
tar -cvf work.tar a b c test1 test2 把文件a b c 和test1 test2 归档成一个work.tar 包
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nin0aG4V-1603290299544)(C:\Users\斌\AppData\Roaming\Typora\typora-user-images\image-20201021221650563.png)]
tar -xvf work.tar -C dir1 其中的-C是说解压到指定的文件夹,把work.tar 解压到dir1目录中 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K9Kxbfr7-1603290299547)(C:\Users\斌\AppData\Roaming\Typora\typora-user-images\image-20201021221707309.png)]
压缩,是一种通过特定的算法来减小计算机文件大小的机制,Linux中的文件压缩命令有多种,其中最常用的命令就是gzip
gzip work.tar 把work.tar进行压缩
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AUvy3MYm-1603290299553)(C:\Users\斌\AppData\Roaming\Typora\typora-user-images\image-20201021221737549.png)]
tar -zcvf work.tar.gz a b c test1 test2 在tar进行归档之后直接进行压缩 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-13mBZxnh-1603290299556)(C:\Users\斌\AppData\Roaming\Typora\typora-user-images\image-20201021221751206.png)]
gunzip work.tar.gz 对gz文件进行解压,解压到当前目录 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-riHs56zz-1603290299559)(C:\Users\斌\AppData\Roaming\Typora\typora-user-images\image-20201021221801241.png)]
tar -zxvf work.tar.gz -C dir2 对tar.gz文件进行解压并解除归档 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kibRQYbn-1603290299560)(C:\Users\斌\AppData\Roaming\Typora\typora-user-images\image-20201021221856784.png)]
…(img-AUvy3MYm-1603290299553)]
tar -zcvf work.tar.gz a b c test1 test2 在tar进行归档之后直接进行压缩 [外链图片转存中…(img-13mBZxnh-1603290299556)]
gunzip work.tar.gz 对gz文件进行解压,解压到当前目录 [外链图片转存中…(img-riHs56zz-1603290299559)]
tar -zxvf work.tar.gz -C dir2 对tar.gz文件进行解压并解除归档 [外链图片转存中…(img-kibRQYbn-1603290299560)]