0%

02linux_03day

=================================
2022-7-13
=================================

一.温故知新

    命令的补充
    ln						//用来创建链接文件
    ln 源文件 目标文件			//创建的是硬链接文件
    ln -s 源文件 目标文件		//创建的是符号链接文件

    find					//查找文件

    grep					//检索文件内容

    man手册的使用

    Ubuntu系统软件的安装
    1.sudo apt-get install
    2.从官网下载软件包,进行安装
        sudo dpkg -i
    3.从官网下载源码包,进行安装
        ./config
        make -j4
        make install

二.编辑器和编译器

    1.编辑器(编写程序)
        vi vim gedit emacs
        vim : 是vi编辑器的高级版本
        注意 :
                1.vim后边需要加文件名
                2.vim除了可以打开文件以外也可以创建文件
                3.保存退出,不要直接关闭终端,否则会生成交换文件
                vim 文件名
                    |
        按iIoOaA		V	按 :
编辑模式(插入)<-----命令模式----->命令行模式(底行)
            ----->		<-----
        按 esc			删除 :
        1)在命令模式下的操作
            1>光标的定位
                h(向左) j(向下) k(向上) l(向右)
                gg			光标回到首行
                G			光标回到末行
                23G			光标定位到第23行
                /要找的内容	光标直接定位到出现要找的内容的位置
                            (n向下查找 N向上查找)
            2>文本的编辑
                yy			复制(把光标所在行的内容进行复制)
                p			粘贴(把复制的内容粘贴到光标所在行的下面)
                P			粘贴(把复制的内容粘贴到光标所在行的上面)
                dd			剪切/删除(把光标所在行的内容进行剪切)
                3yy			复制3行内容
                3dd			剪切/删除3行内容
                3p			粘贴3次(粘贴到光标所在行的下面)
                3P			粘贴3次(粘贴到光标所在行的上面)
                ygg			从首行到光标所在行进行复制
                yG			从光标所在行到末行进行复制
                x			删除光标所在位置的内容
                D			从光标所在位置到行末进行删除
                u			撤销(undo)
                ctrl + r	重做(redo)
                r			替换(只能替换一个字符)
            3>模式的切换
                iIoOaA		进入编辑模式(插入模式)
                :			进入命令行模式(底行模式)
                v			进入可视模式
                --------------------------------
                调整代码格式
                    a.	进入到可视模式中
                    b.	把需要调整格式的代码通过上下键选中
                    c.	按 = 进行调整
                注意 : 让张老师调代码,先把代码格式调整好了
                --------------------------------
                V			进入可视行模式
                ctrl+v		进入可视块模式
                --------------------------------
                块插入
                    a.ctrl + v进入到可视块模式
                    b.通过上下键选择要插入的块
                    c.进入编辑模式(I在选择的块前插入A在选择的块后插入)
                    d.录入要插入的内容
                    e.按两下 esc
                块删除
                    a.ctrl + v进入到可视块模式
                    b.通过上下键选择要删除的块
                    c.按 d 进行删除
                块替换
                    a.ctrl + v进入到可视块模式
                    b.通过上下键选择要替换的块
                    c.按 r 进入替换的操作
                    d.录入要替换的字符
                --------------------------------
                R			进入替换模式
        2)在编辑模式下的操作
            1>文本补齐的功能
                ctrl + p
        3)在命令行模式下的操作
            1>保存退出
                :w			保存
                :q			退出
                :wq			保存并且退出
                :q!			强制退出
                :wqa		保存所有文件,退出所有文件
            2>查找和替换
                :3,7 s/root/zack/	
                        把3-7行第一次出现的root替换成zack
                :3,7 s/root/zack/g
                        把3-7行出现的所有的root替换成zack
                        g	代表的是全局的意思
                :% s/root/zack/g
                        把全文出现的所有的root替换成zack
                        %	代表的是全文的意思
        4)修改vim的配置文件
            vim /etc/vim/vimrc		会影响所有用户
            vim ~/.vimrc			会影响当前用户
            可以从网上找各种vim的配置方法
        5)使用vim打开多个文件
            注意 : 不要用vim一次性打开多个文件,否则vim会崩溃
            vim -O 多个文件		//以纵向的标签栏打开多个文件
            vim -o 多个文件		//以横向的标签栏打开多个文件
                可以使用ctrl + w(两下)切换文件
            vim -p 多个文件		//以标签页的形式打开多个文件	
                可以使用ctrl + alt + pgup/pgdn切换文件
    2.编译器
        在X86环境中有gcc编译器和cc编译器
        gcc编译器依赖于cc编译器
        在ARM环境中需要使用交叉编译工具链 : arm-linux-gcc
        X86环境和ARM环境会有大端格式和小端格式的区分
        --------------------------------------------
        设计一套程序,测试当前环境是大端格式和小端格式
        --------------------------------------------
        
        gcc .c文件
        1.编译之后什么都没有提示,代表程序没有语法错误,会生成可执行文件
        2.编译之后报出警告,代表程序有点问题,但是不是致命的错误,
                也会生成可执行文件
        3.编译之后报出错误,代表程序有致命的问题,不会生成可执行文件
        默认生成的可执行文件的名字是a.out
        以 ./a.out 的方式执行可执行文件
        gcc hello.c -o hello	//可以指定生成的可执行文件的文件名
        gcc -Wall hello.c		//可以列出所有警告

三.用户管理

    1.用户的分类
        功能上区分 : 超级用户 和 普通用户
        超级用户是在安装Linux操作系统时自动创建的用户
        普通用户是由超级用户或者普通用户创建出来的
        范围上区分 : 本地用户 和 网络用户
        创建在本地计算机上的用户是本地用户
        创建在远端服务器上的用户是网络用户
    2.用户创建的描述
        注意 : 虽然都是Linux操作系统,但是不同公司有不同区别
        当创建用户时,伴随着会创建一系列的东西
        1)系统会为新创建的用户分配一个唯一的编号,叫做UID
        2)系统会为新创建的用户,创建一个同名的组,
            并且分配一个唯一的编号,叫做GID
        3)系统会把新创建的用户加入到同名的组中,这个组也叫做这个用户的主组
        4)系统会在/home/目录中创建一个同名的目录,作为新用户的家目录使用
        5)系统会把/etc/skel目录中的文件拷贝到新用户的家目录中,
            作为基础的配置文件进行使用
        6)系统会把新用户的信息记录到/etc/passwd文件中
            查看/etc/passwd文件
            注意:
            1>/etc/passwd文件中每一行就是一个用户的信息
            2>/etc/passwd文件中每个信息通过 : 分割
            root:x:0:0:root:/root:/bin/bash
                1>root		代表的是用户名
                2>x			代表的是密码(密码移到了/etc/shadow文件)
                3>0			代表的是UID
                ----------------------
                UID : 0			是超级用户
                UID : 1 - 499	是系统用户
                UID : >= 500	是普通用户
                ----------------------
                4>0			代表的是GID
                5>root		代表对于该用户的描述
                6>/root		代表该用户的家目录
                7>/bin/bash	代表该用户登陆Linux终端时使用的命令解释器
        7)系统会把用户的密码记录到/etc/shadow文件中			
            查看/etc/shadow文件
zack:$6$1bVyc6zY$GrJ/9j8jngCDD54QkuDEgZqQJnlWV.MG2ngEFvHkQ    dLlkC7AINt6jsm74f8FZvFRuWK5zcz1kf29/LnzakCkd/:19182:0:9999    9:7:::
                1>zack		代表的是用户名
                2>$6$		代表的是加密之后的密码
                3>19182		上次更改密码的日期(从1970-1-1开始算)
                4>0			最短的密码期限(按天算,0代表无最短期限)
                5>99999		最长的密码期限(按天算)
                6>7			密码的警告期限
        8)系统会把新用户的组的信息记录到/etc/group文件中
    3.用户的创建
        sudo useradd 用户名			//创建用户(用户名不能重复)
        sudo passwd 用户名			//修改用户的密码
        sudo su 用户名				//切换用户
        ctrl + d					//结束当前终端用户的登陆
        sudo userdel 用户名			//删除用户(只删除用户)
        sudo userdel -r 用户名//除了删除用户,伴随着会删除创建的东西

四.文件权限的管理

    1.文件权限的介绍
        在Linux操作系统中用户访问的任何文件都是有权限的
        权限可以分为基本权限和特殊权限
        1)基本权限
            rwx				rw-				r--
            文件所属者的权限	文件所属组的权限	其他用户的权限
符号	数字	含义		对于普通文件的影响		对于目录文件的影响
r	4	可读		是否可以读取文件内容	是否可以列出目录的子文件
w	2	可写		是否可以修改文件内容	是否可以创建或删除子文件
x	1	可执行	是否可以执行文件内容	是否可以访问目录内容
        2)修改文件的权限
        sudo chmod 权限 文件名		//修改文件的权限
    //由于权限的表示方法有符号表示和数字表示,所以本身修改权限的方法有很多
    //如果修改目录的权限想要影响子文件或者子目录,需要加-R
        sudo chmod -R 权限 文件名
            1>使用符号表示法
            rwx				rw-				r--
            文件所属者的权限	文件所属组的权限	其他用户的权限
            u				g				o
            u	表示文件所属者的权限
            g	表示文件所属组的权限
            o	表示其他用户的权限
            a	表示所有用户的权限
                       u+r 
            sudo chmod g-w 文件名
                       o=x
            2>使用数字表示法
            数字表示法也叫做八进制表示法
            sudo chmod 456 test
            //test的文件所属者是r--
            //test的文件所属组是r-x
            //test的其他用户是rw-
        3)修改文件的属主和属组
            sudo chown 名字 文件		//用来修改文件的属主
            sudo chown .名字 文件		//用来修改文件的属组
            sudo chown 名字.名字 文件	
                //既修改文件的属主也修改文件的属组
==============================================
实验
1.创建用户			sudo useradd tom
2.修改用户密码			sudo passwd tom
3.创建家目录			sudo mkdir /home/tom
                    (tom目录创建之后本来属于root用户)
4.拷贝模板配置文件		sudo cp /etc/skel/.* /home/tom
5.修改家目录的属主属组	sudo chown -R tom.tom /home/tom
6.修改命令解释器		sudo vim /etc/passwd
                    把tom用户的命令解释器修改成/bin/bash
                    保存退出
7.切换用户->做实验
==============================================