• 2第一周部分笔记


    linux笔记

    需要补充:
    1、正则表达式
    查看之前从 /etc 目录下拷贝来的 passwd 文件:

    cd /home/shiyanlou
    cp /etc/passwd passwd
    cat passwd

    实验 2
    基本概念及操作

    实验 3用户及文件权限管理

    ### 常用命令
    ls /home
        ls -a 显示除了 .(当前目录)和 ..(上一级目录)之外的所有文件,包括隐藏文件(Linux 下以 . 开头的文件为隐藏文件)。
        ls -al 
        -alh
        ll
        ls -dl <目录名> 查看某一个目录的完整属性,而不是显示目录里面的文件属性:
        ls -asSh 显示所有文件大小,并以普通人类能看懂的方式呈现.小 s 为显示文件大小,大 S 为按文件大小排序
    
    cd 
    哪个方便用哪个
        # 绝对路径
        cd /usr/local/bin
        # 相对路径
        cd ../../usr/local/bin
    进入一个目录,可以使用绝对路径也可以使用相对路径
    
    文件操作
        cp、mkdic 当前路径操作
        cp 复制文件(当前路径)、复制目录(-r 或者 -R 参数,表示递归复制)
        rm 删除(目录-r参数)f 参数强制删除 -rf 
        mv (move or rename files)移动文件与单文件重命名(剪切)。
            命令格式是 mv 源目录文件 目的目录。
        rn 批量重命名 用 perl 正则表达式来作为参数(注意'半角,命令未闭合时的退出)
            可能在输入时出现命令未闭合的状态,命令行会出现 quote> 开头的提示符。这是因为上述命令中的 ' 未输入完成,这时按下 ctrl+c 即可退出该模式。
        查看文件 :
            cat,tac 和 nl  
                cat 为正序显示,tac 为倒序显示。
                    -n 参数显示行号
                nl 命令,添加行号并打印,这是个比 cat -n 更专业的行号打印命令
                    -b : 指定添加行号的方式,主要有两种:
                        -b a:表示无论是否为空行,同样列出行号("cat -n"就是这种方式)
                        -b t:只列出非空行的编号并列出(默认为这种方式)
                    -n : 设置行号的样式,主要有三种:
                        -n ln:在行号字段最左端显示
                        -n rn:在行号字段最右边显示,且不加 0
                        -n rz:在行号字段最右边显示,且加 0
                    -w : 行号字段占用的位数(默认为 6 位)
            more 和 less 命令分页查看文件
                打开后默认只显示一屏内容,终端底部显示当前阅读的进度。可以使用 Enter 键向下滚动一行,使用 Space 键向下滚动一屏,按下 h 显示帮助,q 退出。
            head 和 tail 只查看文件的头几行(默认为 10 行,不足 10 行则显示全部)和尾几行
                查看最近新增加的用户
                -n 1 参数n,后面紧跟行数
                tail  -f,这个参数可以实现不停地读取某个文件的内容并显示。这可以让我们动态查看日志,达到实时监视的目的
    
    
    
    pwd 获取当前路径
    获取帮助 man(Manual pages)
        手册通常被分为 8 个区段,安排如下:
    
        区段	说明
        1	一般命令
        2	系统调用
        3	库函数,涵盖了 C 标准函数库
        4	特殊文件(通常是/dev 中的设备)和驱动程序
        5	文件格式和约定
        6	游戏和屏保
        7	杂项
        8	系统管理命令和守护进程
        要查看相应区段的内容,就在 man 后面加上相应区段的数字即可,如:
    
        >man 1 ls
        会显示第一区段中的ls命令 man 页面。
    
    退出当前用户跟退出终端一样,可以使用 exit 命令或者使用快捷键 Ctrl+D。
    
    touch
        主要作用是来更改已有文件的时间戳的(比如,最近访问时间,最近修改时间),但其在不加任何参数的情况下,只指定一个文件名,则可以创建一个指定文件名的空白文件(不会覆盖已有同名文件),当然你也可以同时指定该文件的时间戳
    mkdir 
     -p 多级
    
    ###常用通配符
    Shell 常用通配符:
    
    字符	含义
    *	匹配 0 或多个字符
    ?	匹配任意一个字符
    [list]	匹配 list 中的任意单一字符
    [^list]	匹配 除 list 中的任意单一字符以外的字符
    [c1-c2]	匹配 c1-c2 中的任意单一字符 如:[0-9][a-z]
    {string1,string2,...}	匹配 string1 或 string2 (或更多)其一字符串
    {c1..c2}	匹配 c1-c2 中全部字符 如{1..10}
    
    
    ### 常用快捷键
    历史输入 up、自动补全tab、停止 Ctrl+C
    
    按键	作用
    Ctrl+d	键盘输入结束或退出终端
    Ctrl+s	暂停当前程序,暂停后按下任意键恢复运行
    Ctrl+z	将当前程序放到后台运行,恢复到前台为命令fg
    Ctrl+a	将光标移至输入行头,相当于Home键
    Ctrl+e	将光标移至输入行末,相当于End键
    Ctrl+k	删除从光标所在位置到行末
    Alt+Backspace	向前删除一个单词
    Shift+PgUp	将终端显示向上滚动
    Shift+PgDn	将终端显示向下滚动
    
    ### 通配符(创建多个文件、模糊搜索)
    Shell 常用通配符:
    
    字符	含义
    *	匹配 0 或多个字符
    ?	匹配任意一个字符
    [list]	匹配 list 中的任意单一字符
    [^list]	匹配 除 list 中的任意单一字符以外的字符
    [c1-c2]	匹配 c1-c2 中的任意单一字符 如:[0-9][a-z]
    {string1,string2,...}	匹配 string1 或 string2 (或更多)其一字符串
    {c1..c2}	匹配 c1-c2 中全部字符 如{1..10}
    
    用户及文件权限管理
    一、实验介绍
    二、Linux 用户管理
        2.1 用户
            查看用户 who am i /who mom likes(区别 伪终端序列号)
                who 命令其它常用参数
    
                参数	说明
                -a	打印能打印的全部
                -d	打印死掉的进程
                -m	同am i,mom likes
                -q	打印当前登录用户数及用户名
                -u	打印当前登录用户登录信息
                -r	打印运行等级
            创建用户  
                查看用户目录 ls /home
                新建用户 sudo adduser lilei
                改密码 sudo passwd lilei
                退出当前用户 跟退出终端一样,可以使用 exit or Ctrl+D。
                切换 su -l lilei
        2.3 用户组
            查看所属用户组 
                - 方法一:使用 groups 命令  groups shiyanlou
                    冒号之前表示用户,后面表示该用户所属的用户组。
                    默认情况下在 sudo 用户组里的可以使用 sudo 命令获得 root 权限
                - 方法二:查看 /etc/group 文件  cat /etc/group | 
                    cat 命令读取指定文件的内容并打印到终端输出
                    | sort 表示将读取的文本进行一个字典排序再输出
                    grep 命令过滤
                        包括用户组(Group)、用户组口令、GID(组 ID) 及该用户组所包含的用户(User),每个用户组一条记录。格式如下:
                        group_name:password:GID:user_list
                        如果用户的 GID 等于用户组的 GID,那么最后一个字段 user_list 就是空的
            将其它用户加入 sudo 用户组,获取 root 权限
                su -l lilei
                sudo ls
            使用 usermod 命令可以为用户添加用户组(权限需要root或sudo用户组)
                sudo usermod -G sudo lilei
                (groups lilei(发现多了sudo标签))
        2.4 删除用户和用户组
            删除用户 sudo deluser lilei --remove-home
                使用 --remove-home 参数在删除用户时候会一并将该用户的工作目录一并删除。如果不使用那么系统会自动在 /home 目录为该用户保留工作目录。
            删除用户组  groupdel 命令
                倘若该群组中仍包括某些用户,则必须先删除这些用户后,才能删除群组。
            
    三、Linux 文件权限
        3.1 查看文件权限(ls命令各种参数)
            使用较长格式列出文件,查看文件权限:
                ls -l
            文件类型和权限、连接数、所有者、所属用户组、文件大小、最后修改时间、文件名
            - 文件类型
            - 文件权限
                一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息。
            - 链接数
            - 文件大小
        3.2 变更文件所有者
            更改当前目录cd /home/lilei
            展示属性ls iphone11
            修改文件所有者(用户组不变)sudo chown shiyanlou iphone11
                3.3 修改文件权限(3个权限,拥有者,所属用户组,其他用户)  
                知识
                    文件的读写执行对应字母 rwx,以二进制表示就是 111,用十进制表示就是 7
                    权限是 rw-rw-rw-,换成对应的十进制表示就是 666,这就表示这个文件的拥有者,所属用户组和其他用户具有读写权限,不具有执行权限  
                输入内容/准备材料
                    echo "echo \"hello 
                    shiyanlou\"" > iphone11
                修改
                方式一:二进制数字表示       chmod 600 iphone11
                        (ls -alh iphone11)
    
                方式二:加减赋值操作 chmod go-rw iphone11 
                    g、o 还有 u 分别表示 group(用户组)、others(其他用户) 和 user(用户),+ 和 - 分别表示增加和去掉相应的权限。
    三、Linux 文件权限
    adduser 和 useradd 的区别是什么
    答:useradd 只创建用户,不会创建用户密码和工作目录,创建完了需要使用 passwd <username> 去设置新用户的密码。
    adduser 在创建用户的同时,会创建工作目录和密码(提示你设置),做这一系列的操作。
    其实 useradd、userdel 这类操作更像是一种命令,执行完了就返回。
    而 adduser 更像是一种程序,需要你输入、确定等一系列操作。
    

    实验 4Linux 目录结构及文件基本操作
    Linux 的文件组织目录结构。
    相对路径和绝对路径。
    1.1 实验知识点
    每个目录的大体内容
    文件的属性
    touch,file,rm,mv 等基本命令

    1. FHS 标准
    FHS(英文:Filesystem Hierarchy Standard 中文:文件系统层次结构标准),多数 Linux 版本采用这种文件组织形式,FHS 定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。
    FHS 定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如 /etc 应该放置设置文件,/bin 与 /sbin 则应该放置可执行文件等等。
    第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如 /var/log 放置系统日志文件,/usr/share 放置共享数据等等。
    
    文件常用的基本操作,
        包括:新建、复制、删除、移动文件与文件重命名、查看文件、查看文件类型、以及编辑文件。
    6. 在 Linux 中文件的类型不是根据文件后缀来判断的。当你在文件里输入内容后才会显示文件类型
    

    实验 5 环境变量与文件查找
    一、实验介绍
    二、环境变量
    变量
    declare 创建变量 declare tmp
    ( Shell 中的赋值操作,= 两边不可以输入空格,否则会报错。)
    echo $tmp 读取变量的值($ 符号用于表示引用一个变量的值
    1. 环境变量(变量名只能是英文字母、数字或者下划线,且不能以数字作为开头。)
    变量类型有三种:
    - 当前 Shell 进程私有用户自定义变量,如上面我们创建的 tmp 变量,只在当前 Shell 中有效。
    - Shell 本身内建的变量。
    - 从自定义变量导出的环境变量。
    三种环境变量相关的命令:set,env,export。这三个命令很相似,都是用于打印环境变量信息,区别在于涉及的变量范围不同。详见下表:
    命 令 说 明
    set 显示当前 Shell 所有变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。
    env 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。
    export 显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。

        # 错误的赋值
            tmp = shiyanlou 
        2. 命令的查找路径与顺序
        3. 添加自定义路径到“ PATH ”环境变量
        4. 修改和删除已有变量
        5. 如何让环境变量立即生效
    三、搜索文件
    

    whereis,which,find 和 locate
    whereis 简单快速
    搜索很快,因为它并没有从硬盘中依次查找,而是直接从数据库中查询。
    只能搜索二进制文件(-b),man 帮助文件(-m)和源代码文件(-s)
    locate 快而全
    查询 /var/lib/mlocate/mlocate.db 数据库来检索信息。不过这个数据库也不是实时更新的,系统会使用定时任务每天自动执行 updatedb 命令来更新数据库。所以有时候你刚添加的文件,它可能会找不到,需要手动执行一次 updatedb 命令(在我们的环境中必须先执行一次该命令)。注意这个命令也不是内置的命令,在部分环境中需要手动安装,然后执行更新
    查找指定目录下的不同文件类型,如查找 /etc 下所有以 sh 开头的文件:

    locate /etc/sh
    注意,它不只是在 /etc 目录下查找,还会自动递归子目录进行查找。

    查找 /usr/share/ 下所有 jpg 文件:

    locate /usr/share/*.jpg
    注意要添加 * 号前面的反斜杠转义,否则会无法找到

    想只统计数目可以加上 -c 参数,-i 参数可以忽略大小写进行查找,whereis 的 -b、-m、-s 同样可以使用。

    which 小而精
    find 精而细( find 命令的路径是作为第一个参数的, 基本命令格式为 find [path][option] [action] )
    通过文件类型、文件名进行查找而且可以根据文件的属性(如文件的时间戳,文件的权限等)进行搜索
    sudo 是因为 shiyanlou 只是普通用户,对 /etc 目录下的很多文件都没有访问的权限,如果是 root 用户则不用使用。
    与时间相关的命令参数:
    参数 说明
    -atime 最后访问时间
    -ctime 最后修改文件内容的时间
    -mtime 最后修改文件属性的时间

    以 -mtime 参数举例:
    -mtime n:n 为数字,表示为在 n 天之前的“一天之内”修改过的文件
    -mtime +n:列出在 n 天之前(不包含 n 天本身)被修改过的文件
    -mtime -n:列出在 n 天之内(包含 n 天本身)被修改过的文件
    -newer file:file 为一个已存在的文件,列出比 file 还要新的文件名
    

    列出 home 目录中,当天(24 小时之内)有改动的文件:
    find ~ -mtime 0

    列出用户家目录下比 /etc 目录新的文件:
    find ~ -newer /etc

    四、更多
    

    挑战 1
    挑战:寻找文件
    实验 6
    文件打包与解压缩
    实验 7
    文件系统操作与磁盘管理
    实验 8
    Linux下的帮助命令
    实验 9
    Linux任务计划crontab
    挑战 2
    挑战:备份日志
    实验 10
    命令执行顺序控制与管道
    实验 11
    简单的文本处理
    实验 12 数据流重定向
    挑战 3
    挑战:历史命令
    实验 13 正则表达式基础
    挑战 4
    挑战:数据提取
    实验 14 Linux下软件安装
    介绍 Ubuntu 下软件安装的几种方式,及 apt,dpkg 工具的使用。
    1.2 实验知识点
    通常 Linux 上的软件安装主要有四种方式:
    在线安装
    从磁盘安装 deb 软件包
    从二进制软件包安装
    从源代码编译安装
    dpkg常用参数介绍:

    参数	说明
    -i	安装指定 deb 包
    -R	后面加上目录名,用于安装该目录下的所有 deb 安装包
    -r	remove,移除某个已安装的软件包
    -I	显示 deb 包文件的信息
    -s	显示已安装软件的信息
    -S	搜索已安装的软件包
    -L	显示已安装软件包的目录信息
    
    sudo apt-get update
    sudo apt-get -d install -y emacs -d参数只下载不安装
    sudo apt-get -f install -y,修复依赖关系的安装
    

    实验 15
    Linux 进程概念
    实验 16
    Linux 进程管理
    实验 17
    Linux 日志系统

    +apt
    被用于安装、卸载和供给和 .deb 软件包相关的信息

    • apt-get工具的使用
      更新、安装、卸载+显示、搜索

    +"dpkg"是"Debian Package"
    被用于安装、卸载和供给和 .deb 软件包相关的信息
    从本地磁盘安装 deb 软件包

  • 相关阅读:
    104. 二叉树的最大深度
    1120. 子树的最大平均值
    1121. 将数组分成几个递增序列
    1118. 一月有多少天
    1110. 删点成林
    102. 二叉树的层次遍历
    145. 二叉树的后序遍历
    94. 二叉树的中序遍历
    144. 二叉树的前序遍历
    剑指offer-0x04
  • 原文地址:https://www.cnblogs.com/assignment/p/13798579.html
Copyright © 2020-2023  润新知