Linux命令基础

一、 Linux命令基础
1、 Linux命令基础
  1. Linux介绍

  2. Linux系统的安装与配置

  3. 命令提示符

  4. Linux命令基本格式

(1)Linux命令的组成:命令名称,选项,

参数 (2)基本格式:命令名 [选项] [参数] (3)规则:命令的各组成部分之间用空格分隔;命令的输入以回车键结束;一般一行输入一条命令


2、熟练使用文件、目录(文件夹)类命令
  1. 浏览目录(文件夹)类命令 (1)pwd命令: ① 功能:显示用户当前所处的目录 ② 示例:pwd (2)cd命令: ① 功能:在不同目录间进行切换 ② 示例:cd /etc # 切换目录到/etc下 cd ~ 或 cd # 切换到用户目录 ③ 绝对路径和相对路径 a. 绝对路径:从根目录开始,表示一个文件或目录(文件夹)的位置路径 # 始终以根目录为参考起始点 b. 相对路径:从当前位置开始,表示一个文件或目录(文件夹)的位置路径 # 始终以当前位置为参考起始点 “.” 代表当前目录 “..” 代表当前目录的父目录(上一级目录) c. 示例: 当前路径在: /etc/gdb 查看/etc/passwd文件的详细信息: ls -l /etc/passwd # 绝对路径表示文件位置路径 ls -l ../passwd # 相对路径表示文件位置路径 (3)ls命令: ① 功能:列出文件或目录(文件夹)信息 ② 命令格式:ls 【选项】【目录或文件】 ls命令的常用选项如下。 -a:显示所有文件,包括以“.”开头的隐藏文件。 -A:显示指定目录下所有的子目录及文件,包括隐藏文件。但不显示“.”和“..”。 -c:按文件的修改时间排序。 -C:分成多列显示各行。 -d:如果参数是目录,则只显示其名称而不显示其下的各个文件。往往与“-l”选项一起使用,以得到目录的详细信息。 -l:以长格形式显示文件的详细信息。 -i:在输出的第一列显示文件的i节点号。 ③ 示例: 详细信息方式查看/etc目录: ls -l etc/

  2. 浏览文件类命令 查看文件内容的命令:5个 (1)cat命令 ① 功能:主要用于滚屏显示文件内容或是将多个文件合并成一个文件 ② 命令格式:cat [选项] 文件名 常用选项如下: -b:对输出内容中的非空行标注行号。 -n:对输出内容中的所有行标注行号。 ③ 示例: cat /etc/passwd # 查看/etc/passwd文件的内容 cat -n /etc/passwd # 查看/etc/passwd文件的内容,输出所有内容行并显示每行行号

    (2)more命令 ① 功能:查看文件内容,控制向下一行(Enter)、一页(Space空格)翻动,退出(Q) ② 命令格式:more [选项] 文件名 常用选项: -num:这里的num是一个数字,用来指定分页显示时每页的行数。 +num:指定从文件的第num行开始显示 ③ 示例:more /etc/passwd (3)less命令 ① 功能:查看文件内容,控制向下一行(Enter)、一页(Space空格)翻动,向上一页(B),退出(Q) ② 命令格式:less [选项] 文件名 ③ 示例:less /etc/passwd (4)head命令 ① 功能:查看文件内容(查看文件前面n行,默认前10行) ② 命令格式:head [选项] 文件名 常用选项: -n num:显示指定文件的前num行。 -c num:显示指定文件的前num个字符。 ③ 示例1:head /etc/passwd # 默认前10行 示例2:head -n 2 /etc/passwd # 查看前2行 示例3:head -c 2 /etc/passwd # 查看前2个字符 (5)tail命令 ① 功能:查看文件内容(查看文件尾n行,默认尾10行) ② 命令格式:tail [选项] 文件名 常用选项: -n num:显示指定文件的前num行。 -c num:显示指定文件的前num个字符。 +num:从第num行开始显示指定文件的内容。 ③ 示例1:tail /etc/passwd # 默认尾10行 示例2:tail -n 2 /etc/passwd # 查看尾2行 示例3:tail -c 2 /etc/passwd # 查看尾2个字符


    3、目录操作类命令

    (1)mkdir命令

    ① 功能:用于创建一个目录(文件夹) ② 命令格式:mkdir [选项] 目录名 常用选项: -p:在创建目录时,如果父目录不存在,则同时创建该目录及该目录的父目录。 ③ 示例1:直接创建目录文件:mkdir /mydir # 在根目录直接创建一个目录文件mydir 示例2:创建多级目录文件:mkdir -p /d1/d2/d3/d4 # 一次创建多级的目录 (2)rmdir命令 ① 功能:用于删除空目录 ② 命令格式:rmdir [选项] 目录名 常用选项: -p:在创建目录时,如果父目录不存在,则同时创建该目录及该目录的父目录。 ③ 示例1:rmdir /f1 # 删除空目录/f1 示例1:rmdir -p /d1/d2/d3/d4 # 删除多级的空目录(如果被删目录的父目录也是空目录,则一同删除)


    4、文件操作类命令

    (1)touch命令 ① 功能:用于建立文件或更新文件的修改日期 ② 命令格式:touch [选项] 文件名 常用选项: -d yyyymmdd:把文件的存取或修改时间改为yyyy年mm月dd日。 -a:只把文件的存取时间改为当前时间。 -m:只把文件的修改时间改为当前时间 ③ 示例1:touch /mydir/f1 # 直接创建文件/mydir/f1 (2)cp命令 ① 功能:意为copy,用于复制(或改名)文件或目录 ② 命令格式:cp [选项] 源 目标位置 常用选项: -a:尽可能将文件状态、权限等属性照原状予以复制。 -f:如果目标文件或目录存在,先删除它们再进行复制(即覆盖),并且不提示用户。 -i:如果目标文件或目录存在,提示是否覆盖已有的文件。 -R:递归复制目录,即包含目录下的各级子目录。 ③ 示例1:基本使用: # 把源文件/etc/passwd复制到/mydir目录下 cp /etc/passwd /mydir 或 cp /etc/passwd /mydir/ 示例2:选项 -a: cp -a /etc/passwd /mydir 示例3:选项 -f: cp -f /etc/passwd /mydir 示例4:选项 -i: cp -i /etc/passwd /mydir 示例5:选项 -R:cp -R /etc/yum /mydir # 复制一个具有多级子目录的文件夹 ④ 改名:文件和目录(文件夹) 说明:复制命令中,如果目录位置是目录,则文件或目录复制过去,还是原名; 如果目录位置给了文件名,则文件或目录复制过去,文件名为新给的名字; 示例1: cp /etc/passwd /mydir/ppp # 复制后文件名为ppp (3)mv命令 ① 功能:用于文件或目录的移动或改名 ② 命令格式:mv [选项] 源文件或目录 目标文件或目录 常用选项: -a:尽可能将文件状态、权限等属性照原状予以复制。 -f:如果目标文件或目录存在,先删除它们再进行复制(即覆盖),并且不提示用户。 -i:如果目标文件或目录存在,提示是否覆盖已有的文件。 -R:递归复制目录,即包含目录下的各级子目录。 ③ 示例参照cp命令(注意:系统文件、目录,如/etc/passwd,/etc/yum不要移动)

    (4)rm命令 ① 功能:主要用于文件或目录的删除 ② 命令格式:rm [选项] 文件名或目录名 常用选项: -i:删除文件或目录时提示用户。 -f:删除文件或目录时不提示用户。 -R:递归删除目录,即包含目录下的文件和各级子目录。 ③ 例1:删除/md/f1文件 rm /md/f1 或者 rm -i /md/f1 # 删除文件,有提示 rm -f /md/f1 # 直接删除文件,没有提示 例2:删除/md 目录(文件夹) cd / rm -fR /md # 删除/md目录(文件夹) (5)命令 :whereis命令 ① 功能:whereis命令用来寻找命令的可执行文件所在的位置 ② 语法:whereis [选项] 命令名称 常用选项: -b:只查找二进制文件。 -m:只查找命令的联机帮助手册部分。 -s:只查找源代码文件 (6)whatis命令 ① 功能:whatis命令用于获取命令简介 ② 语法:whatis 命令名称 (7)find命令 ① 功能:find命令用于文件查找。它的功能非常强大。 ② 语法:find [路径] [匹配表达式] -name filename:查找指定名称的文件 -user username:查找属于指定用户的文件 -group grpname:查找属于指定组的文件 -size n:查找大小为n块的文件 -inum n:查找索引节点号为n的文件 -type:查找指定类型的文件 -mtime n, -ctime n :类似于atime,但检查的是文件内容、文件索引节点被修改的时间 -newer file:查找比指定文件新的文件,即最后修改时间离现在较近 -exec command {} \;:对匹配指定条件的文件执行command命令 -ok command {} \;:与exec相同,但执行command命令时请求用户确认 ③ 例:查找文件名为passwd的文件 cd / find -name passwd # 从当前根目录开始,按文件名查找文件名为passwd的文件 find /etc -name passwd # 从指定的/etc目录开始找 ④ 通配符: a. * # 任意个数的任意字符 b. ? # 任意一个字符

       例:

    cd /

    字符开头的

    find -name pass* # 根目录下,查找文件名以pass字符开头的文件 find /etc -name pass* # 指定的/etc目录查找

    字符结尾的

    find -name *wd # 根目录下,查找文件名以wd字符结尾的文件

    包含字符 find -name ass # 根目录下,查找文件名包含ass字符的文件 find /etc -name pass?? (8)locate命令 ① 功能:locate命令 ,也用于在Linux系统中查找文件,和find相比其功能要弱很多,不能够进行精确查寻, 但locate命令的查找速度很快,其工作原理与find不同:find命令是直接在文件系统中进行查找; 而locate命令是在一个索引库中进行查找,索引库中存放系统中所有文件名称信息 ② 例:locate passwd (9)grep命令 ① 功能:用于查找文件中包含有指定字符串的行 ② 语法:grep [选项] 要查找的字符串 文件名 常用选项: -v:列出不匹配的行。 -c:对匹配的行计数。 -l:只显示包含匹配模式的文件名。 -h:抑制包含匹配模式的文件名的显示。 -i:对匹配模式不区分大小写 ③ 例: grep root /etc/passwd # 从/etc/passwd文件内容中查找返回包含root字符的行 grep -i ROOt /etc/passwd # -i 查找的字符串root不区分大小写 (10)管道命令符: | ① 功能:grep命令也常和符号“|”一起使用,符号“|”为管道命令符,其作用是连接两个命令, 将前面一个命令的输出作为后面一个命令的输入。 ② 例:grep root /etc/passwd 使用管道命令符重新实现下 cat /etc/passwd | grep root


  1. 浏览目录(文件夹)类命令

 (1)pwd命令:
         ① 功能:显示用户当前所处的目录
         ② 示例:pwd
 (2)cd命令:
         ① 功能:在不同目录间进行切换
         ② 示例:cd  /etc       # 切换目录到/etc下
            cd ~ 或   cd  # 切换到用户目录
         ③ 绝对路径和相对路径
     a. 绝对路径:从根目录开始,表示一个文件或目录(文件夹)的位置路径      # 始终以根目录为参考起始点
     b. 相对路径:从当前位置开始,表示一个文件或目录(文件夹)的位置路径 # 始终以当前位置为参考起始点
         “.”   代表当前目录
         “..”  代表当前目录的父目录(上一级目录)
     c. 示例:
        当前路径在:           /etc/gdb
                   查看/etc/passwd文件的详细信息: ls -l  /etc/passwd  # 绝对路径表示文件位置路径
                 ls -l  ../passwd    # 相对路径表示文件位置路径
 (3)ls命令:
         ① 功能:列出文件或目录(文件夹)信息
         ② 命令格式:ls 【选项】【目录或文件】
  ls命令的常用选项如下:
         -a:显示所有文件,包括以“.”开头的隐藏文件。
         -A:显示指定目录下所有的子目录及文件,包括隐藏文件。但不显示“.”和“..”。
         -c:按文件的修改时间排序。
         -C:分成多列显示各行。
         -d:如果参数是目录,则只显示其名称而不显示其下的各个文件。往往与“-l”选项一起使用,以得到目录的详细信息。
         -l:以长格形式显示文件的详细信息。
         -i:在输出的第一列显示文件的i节点号。
                 ③ 示例:
                 详细信息方式查看/etc目录: ls  -l  etc/
  1. 浏览文件类命令 查看文件内容的命令:(1)cat命令 ① 功能:主要用于滚屏显示文件内容或是将多个文件合并成一个文件 ② 命令格式:cat [选项] 文件名 常用选项如下: -b:对输出内容中的非空行标注行号。 -n:对输出内容中的所有行标注行号。 ③ 示例: cat /etc/passwd # 查看/etc/passwd文件的内容 cat -n /etc/passwd # 查看/etc/passwd文件的内容,输出所有内容行并显示每行行号

  2. (2)more命令 ① 功能:查看文件内容,控制向下一行(Enter)、一页(Space空格)翻动,退出(Q) ② 命令格式:more [选项] 文件名 常用选项: -num:这里的num是一个数字,用来指定分页显示时每页的行数。 +num:指定从文件的第num行开始显示 ③ 示例:more /etc/passwd (3)less命令 ① 功能:查看文件内容,控制向下一行(Enter)、一页(Space空格)翻动,向上一页(B),退出(Q) ② 命令格式:less [选项] 文件名 ③ 示例:less /etc/passwd (4)head命令 ① 功能:查看文件内容(查看文件前面n行,默认前10行) ② 命令格式:head [选项] 文件名 常用选项: -n num:显示指定文件的前num行。 -c num:显示指定文件的前num个字符。 ③ 示例1:head /etc/passwd # 默认前10行 示例2:head -n 2 /etc/passwd # 查看前2行 示例3:head -c 2 /etc/passwd # 查看前2个字符 (5)tail命令 ① 功能:查看文件内容(查看文件尾n行,默认尾10行) ② 命令格式:tail [选项] 文件名 常用选项: -n num:显示指定文件的前num行。 -c num:显示指定文件的前num个字符。 +num:从第num行开始显示指定文件的内容。 ③ 示例1:tail /etc/passwd # 默认尾10行 示例2:tail -n 2 /etc/passwd # 查看尾2行 示例3:tail -c 2 /etc/passwd # 查看尾2个字符

  3. 目录操作类命令 (1)mkdir命令 ① 功能:用于创建一个目录(文件夹) ② 命令格式:mkdir [选项] 目录名 常用选项:

         -p:在创建目录时,如果父目录不存在,则同时创建该目录及该目录的父目录。    
         ③ 示例1:直接创建目录文件:mkdir /mydir     # 在根目录直接创建一个目录文件mydir
             示例2:创建多级目录文件:mkdir -p /d1/d2/d3/d4  #  一次创建多级的目录 

(2)rmdir命令 ① 功能:用于删除空目录 ② 命令格式:rmdir [选项] 目录名 常用选项: -p:在创建目录时,如果父目录不存在,则同时创建该目录及该目录的父目录。 ③ 示例1:rmdir /f1 # 删除空目录/f1 示例1:rmdir -p /d1/d2/d3/d4 # 删除多级的空目录(如果被删目录的父目录也是空目录,则一同删除)

文件操作类命令           

(1)touch命令 ① 功能:用于建立文件或更新文件的修改日期 ② 命令格式:touch [选项] 文件名 常用选项:

         -d yyyymmdd:把文件的存取或修改时间改为yyyy年mm月dd日。
         -a:只把文件的存取时间改为当前时间。
         -m:只把文件的修改时间改为当前时间  
         ③ 示例1:touch /mydir/f1  # 直接创建文件/mydir/f1

(2)cp命令 ① 功能:意为copy,用于复制(或改名)文件或目录 ② 命令格式:cp [选项] 源 目标位置 常用选项: -a:尽可能将文件状态、权限等属性照原状予以复制。 -f:如果目标文件或目录存在,先删除它们再进行复制(即覆盖),并且不提示用户。 -i:如果目标文件或目录存在,提示是否覆盖已有的文件。 -R:递归复制目录,即包含目录下的各级子目录。 ③ 示例1:基本使用: # 把源文件/etc/passwd复制到/mydir目录下 cp /etc/passwd /mydir 或 cp /etc/passwd /mydir/ 示例2:选项 -a: cp -a /etc/passwd /mydir 示例3:选项 -f: cp -f /etc/passwd /mydir 示例4:选项 -i: cp -i /etc/passwd /mydir 示例5:选项 -R:cp -R /etc/yum /mydir # 复制一个具有多级子目录的文件夹 ④ 改名:文件和目录(文件夹) 说明:复制命令中,如果目录位置是目录,则文件或目录复制过去,还是原名; 如果目录位置给了文件名,则文件或目录复制过去,文件名为新给的名字; 示例1: cp /etc/passwd /mydir/ppp # 复制后文件名为ppp

(3)mv命令 ① 功能:用于文件或目录的移动或改名 ② 命令格式:mv [选项] 源文件或目录 目标文件或目录 常用选项: -a:尽可能将文件状态、权限等属性照原状予以复制。 -f:如果目标文件或目录存在,先删除它们再进行复制(即覆盖),并且不提示用户。 -i:如果目标文件或目录存在,提示是否覆盖已有的文件。 -R:递归复制目录,即包含目录下的各级子目录。 ③ 示例参照cp命令(注意:系统文件、目录,如/etc/passwd,/etc/yum不要移动)

(4)rm命令 ① 功能:主要用于文件或目录的删除 ② 命令格式:rm [选项] 文件名或目录名 常用选项: -i:删除文件或目录时提示用户。 -f:删除文件或目录时不提示用户。 -R:递归删除目录,即包含目录下的文件和各级子目录。 ③ 例1:删除/md/f1文件 rm /md/f1 或者 rm -i /md/f1 # 删除文件,有提示 rm -f /md/f1 # 直接删除文件,没有提示 例2:删除/md 目录(文件夹) cd / rm -fR /md # 删除/md目录(文件夹) (5)命令

二、云课笔记

获取视频下载方法

C:\Users\14949\Desktop\新建文件夹>pip install you-get

C:\Users\14949\Desktop\新建文件夹>you-get +视频链接

Linux系统命令使用体验

1、uname命令
 # 使用uname查看当前系统的内核
 shiyanlou:-/$ uname
 ​
 # uname跟参数查看参数详情
 shiyanlou:-/$ uname -a
 ​
 # 查看当前命令如:uname 有哪些参数,以及这些参数的作用
 shiyanlou:-/$ uname --help

 # 安装一个figlet,作用:将输入的文本转化为大字体的工具  shiyanlou:-/$ sudo apt-get install figlet  ​  # 显示大字体  # 查看当前命令如:uname 有哪些参数,以及这些参数的作用  shiyanlou:-/$ figlet gu jin long

2、ls命令

在Linux中使用是最多的,查看当前目录的文件或目录

 # 查看当前操作系统根目录下的所有文件或目录
 shiyanlou:-/$ ls /
 ​
 # 查看当前操作系统根目录下的home目录中文件或文件夹
 shiyanlou:-/$ ls /home/
 ​
 # -l的作用:长数据串列出:包含文件的属性与权限等相关信息(常用),l表示(length)
 shiyanlou:-/$ ls -l /home/
 ​
 #-a的作用:显示隐藏文件或目录
 shiyanlou:-/$ ls -a /home/
 ​
 # -al的作用:以长数据方式显示隐藏的文件或目录
 shiyanlou:-/$ ls -al /home/
 ​
 ​
 # -R的作用:查看/home/目录下的文件和文件夹包含的子目录
 shiyanlou:-/$ ls -R /home/
3、man命令

查看"说明书"

 # 命令:man 指令名称(如:ls),这时就可以去看它的说明。参数说明
 shiyanlou:-/$ man ls
 ​
 # 查看完"说明书"后按键盘上的 q 键就可以退出,q的意思是:quit

4、mkdir命令

创建目录的操作命令,在windos系统中称为“文件夹”专业用语为“目录”

# 查看当前目录的完整路径
shiyanlou:project/ $ pwd

# 创建一个目录
shiyanlou:project/ $ mkdir /home/project/demo01/

要求:需要在 /home/project/web/game/lol/ 在Windows的C盘创建/web/game/lol/ 比较麻烦,如果层级多了就很麻烦

# 递归创建多级目录结构
shiyanlou:project/ $ mkdir -p /home/project/web/game/lol/ 

-p: 递归创建目录,即创建目录的上一级目录尚未创建,则先创建上一级目录

要求:需要在 /home/project/study/html/js/home/project/study/login/js, /home/project/study/student/js,我们怎么来进行创建?

# 递归创建多层目录分层创建结构
shiyanlou:project/ $ mkdir -p /home/project/study/{html,login,student}/js/

注意:{html,login,student}不能有任何空格以,逗号进行分隔

扩展思考1: 需要创建/home/project/student/20220015~ /home/project/student/20220078 的所有目录

# 递归创建多层目录分层创建结构
shiyanlou:project/ $ mkdir -p /home/project/student/{20220015..20220078}/

扩展思考2:需要创建/home/project/student/id20220015info~ /home/project/student/id20220078info的所有目录

shiyanlou:project/ $ mkdir -p /home/project/student/id{20220015..20220078}info/

5、cd命令

目录切换命令

未切换前的目录

切换目录后

..表示:退回上一级目录

~ 通常表示当前用户的 home 目录

进入上一次所在的工作目录(-

cd ~
cd /etc
cd -

这个命令还可以返回多层的上级目录,只需要组合使用即可:

cd ../..

6、touch命令

创建文件的相关命令

# 查看当前目录的完整路径
shiyanlou:project/ $ pwd
/home/project

# 在当前目录创建文件
shiyanlou:project/ $ touch demo.py

# 通过相对路径在其它目录创建文件
shiyanlou:project/ $ touch ../shiyanlou/test01.txt
shiyanlou:project/ $ ls ../shiyanlou 
Code  Desktop  test01.txt  test02.txt

# 通过绝对路径在其它目录创建文件
shiyanlou:project/ $ touch /home/shiyanlou/test02.txt
shiyanlou:project/ $ ls ../shiyanlou 
Code  Desktop  test01.txt  test02.txt

# 在当前目录批量创建文件1
shiyanlou:project/ $ touch {1..5}.py

# 在当前目录批量创建文件2
shiyanlou:project/ $ touch demo{1..5}.py
7、查看命令 cat 、head 、tail
3 查看指定文件的内容
shiyanlou:project/ $ cat /etc/passwd

# 查看指定文件的内容并显示行号
shiyanlou:project/ $ cat -n /etc/passwd

# 查看指定文件所有的内容,包括一些不可见的符号,比如换行符。
shiyanlou:project/ $ cat -A /etc/passwd

#  除此以外,cat 还可以作为输入,需要配合重定向符号 >>,可以将获取的内容重定向到另一个文件里。
shiyanlou:project/ $ touch 1.txt
shiyanlou:project/ $ cat 1.txt 
shiyanlou:project/ $ cat /etc/passwd >> 1.txt
shiyanlou:project/ $ cat 1.txt

head 命令,它可用于查看文件的开头部分的内容,默认情况下显示前 10 行的内容。

head /etc/passwd

head 也有几个常用的参数,如下:

选项说明
-n <数字>指定显示头部内容的行数
-c <字符数>指定显示头部内容的字符数
-v总是显示文件名的头信息
-q不显示文件名的头信息

比如只显示前五行的内容:

head -n 5 /etc/passwd

tail 命令用于输入文件中的尾部内容,默认在终端上显示指定文件的末尾 10 行。

tail /etc/passwd

head 命令类似,tail 命令也可以使用 -n 参数来指定查看的行数。如查看末尾的 5 行内容:

tail -n 5 /etc/passwd

8、匹配指定字符grep命令

作用:在指定的文件里面查找包含指定内容的部分

语法:grep 要查找的内容 在那个文件进行查找

shiyanlou:project/ $ grep shiyanlou /etc/passwd
shiyanlou:x:5000:5000::/home/shiyanlou:/usr/bin/zsh
9、echo命令(了解)

作用:主要是输出字符串和查找变量

# 使用 echo 我们可以便捷的输出一串字符串。
shiyanlou:project/ $ echo "hello world"
hello world

# 查看环境变量 PATH
shiyanlou:project/ $ echo $PATH

# echo 还可以在字符串里使用一些特殊符号,比如换行符和指标符号等
echo "hello\tworld"
echo "hello\nworld"

对于此类型的字符串,我们通常使用双引号 " 包裹,如果使用单引号,则会原样输出:
shiyanlou:project/ $ echo 'hello\tworrld'
hello   worrld
shiyanlou:project/ $ echo 'hello\nworld'
hello
world

10、重定向命令的特殊性

含义:改变标准的输入源(键盘)和标准的输出源(显示器)

>, >>, <, <<

>输出到指定的文件里面(覆盖)

>>输出到指定的文件里面(追加)

<将原来需要键盘输入的数据,改为由文件内容取代

<<标准输入中读取数据,一直到遇到分界符为止

shiyanlou:project/ $ touch test
shiyanlou:project/ $ cat /etc/passwd > test
shiyanlou:project/ $ cat /etc/passwd >> test01
shiyanlou:project/ $ echo "hello you do" >> test01

# 一下内容做了解
shiyanlou:project/ $ sort 
zahngsan
lisi
wangwu
a
b
c
a
b
c
lisi
wangwu
zahngsan

11、阶段形回顾

1、请问创建目录的命令是什么? mkdir

2、创建目录时最常用的参数时什么? -p

3、请问从当前目录切换到指定目录的命令时什么? cd

4、请问创建文件的命令是什么? touch, 常用参数时什么?{}

5、请问查看某个文件的命令是什么? cat

6、cat命令最常用的参数又哪些? -n, -A

7、请问查看文件内容前指定行数或尾数的命令是什么? head, tail

8、请问匹配文件中相关字符的命令是什么? grep

12、文本编辑器 vim简单使用

语法:vim [文件名称],注意:如果文件存在打开进行编辑,如果不存在自动创建

shiyanlou:project/ $ vim test.txt

1.按i键进入插入状态,可以在文件中进行编辑内容

2.编辑完成后,按ESC键,退出编辑状态

3.输入:wq进行保存内容, :wq(write quit [中文含义:写入并保存])

13、复制命令

cp命令带的功能主要是复制,同时具备粘贴性

语法:cp[参数] [需要复制的文件] [复制的具体位置]

shiyanlou:project/ $ touch hello.css
shiyanlou:project/ $ ls
hello.css
shiyanlou:project/ $ ls ../
project  shiyanlou
shiyanlou:project/ $ ls ../shiyanlou 
Code  Desktop
shiyanlou:project/ $ cp hello.css /home/shiyanlou 
shiyanlou:project/ $ ls ../shiyanlou 
Code  Desktop  hello.css

目录复制操作

shiyanlou:project/ $ mkdir html
shiyanlou:project/ $ touch html/demo.html
shiyanlou:project/ $ cp -r html /home/shiyanlou 
shiyanlou:project/ $ ls ../shiyanlou 
Code  Desktop  html
shiyanlou:project/ $ ls ../shiyanlou/html
demo.html
shiyanlou:project/ $ 

14、移动文件或目录mv命令

mv命令的作用:move file (移动文件或目录)

语法:mv [参数] [需要移动的文件或目录] [移动到的位置]

shiyanlou:project/ $ touch index.html
shiyanlou:project/ $ ls ../shiyanlou 
Code  Desktop
shiyanlou:project/ $ mv index.html /home/shiyanlou 
shiyanlou:project/ $ ls ../shiyanlou 
Code  Desktop  index.html

提问:mv命令在Linux中称为:移动文件或目录,请问在Windows跟mv同一个意思的操作 是什么相操作?

Windows中:剪切 + 粘贴

移动目录的操作 加重命名

shiyanlou:project/ $ touch user.css
shiyanlou:project/ $ mv user.css /home/shiyanlou/index.css
shiyanlou:project/ $ ls ../shiyanlou 
Code  Desktop  index.css  index.html

shiyanlou:project/ $ mkdir test
shiyanlou:project/ $ touch test/test.java
shiyanlou:project/ $ mv test /home/shiyanlou/kechuang
shiyanlou:project/ $ ls ../shiyanlou 
Code  Desktop  index.css  index.html  kechuang  lanqiao

15、删除rm命令

作用:remove(移除)的缩写,用于删除文件或目录

Linux删除文件或目录与windows 删除的区别:Linux直接删除,Windows中有一种操作是 先删除到回收站,

# 删除文件
shiyanlou:project/ $ touch demo.txt
shiyanlou:project/ $ rm demo.txt

# 删除目录
shiyanlou:project/ $ mkdir lanqiao
shiyanlou:project/ $ touch lanqiao/demo{1..5}.html
shiyanlou:project/ $ rm -r lanqiao

shiyanlou:project/ $ mkdir lanqiao
shiyanlou:project/ $ touch demo{1..10}.html
shiyanlou:project/ $ rm demo{1..10}.html

shiyanlou:project/ $ mkdir test
shiyanlou:project/ $ touch test/test{1..5}.txt
shiyanlou:project/ $ rm test/test{1..5}.txt


shiyanlou:project/ $ mkdir test
shiyanlou:project/ $ touch test/test{1..5}.java
shiyanlou:project/ $ rm -ri test
# 参数i的作用:在删除前逐个询问是否删除,输入y表示删除,而输入n表示不删除
rm:是否进入目录'test'? y
rm:是否删除普通空文件 'test/test1.java'? n
rm:是否删除普通空文件 'test/test2.java'? n
rm:是否删除普通空文件 'test/test3.java'? y
rm:是否删除普通空文件 'test/test4.java'? n
rm:是否删除普通空文件 'test/test5.java'? n
rm:是否删除目录 'test'? y
rm: 无法删除 'test': 目录非空

16、文件下载命令wget

wget命令主要通过指定的URL(网址)进行下载文件

# 下载图片文件


# 下载js文件
wget https://labfile.oss.aliyuncs.com/courses/1379/jquery.min.js
  • -O 保存为指定的文件名(大写的字母 o)

  • -c 启用断点续传,在下载大文件的时候建议(超过200M)

17、打包解包命令tar

tar(磁带归档),打包文件的命令。打包格式:.tar.gz, .tar.bz2 等都是压缩后的.tra

# 打包文件
shiyanlou:project/ $ tar -cf bin.tar /usr/local/bin
tar: 从成员名中删除开头的“/”

# shiyanlou:project/ $ tar -fc bin.tar /usr/local/bin 
# tar: 您必须从"-Acdtrux", "--delete"或是"--test-label"中指定一个选项
#请用“tar --help”或“tar --usage”获得更多信息。
# 错误点:-f参数必须跟文件名

# 打包为gzip格式文件,需要添加参数z
shiyanlou:project/ $ tar -czf bin_gzip.tar /usr/local/bin
tar: 从成员名中删除开头的“/”


# 解包.gzip文件
# x 表示从打包文件中释放文件
# -C 表示指定要释放的目录位置
shiyanlou:project/ $ tar -zxf bin_gzip.tar.gz -C /home/shiyanlou/
shiyanlou:project/ $ ls ../shiyanlou/
Code  Desktop  usr

tar 有几个常用的参数,如下:

  • -c 建立新的打包文件

  • -f 指定包文件

  • -v 显示打包/释放的过程

  • -z 支持 gzip 处理文件

  • -j 支持 bzip2 处理文件

  • -t 显示打包的文件的内容

  • -r 添加文件到已经打包的文件

  • -x 从打包的文件中释放文件

  • -C 释放到指定目录

18、多平台解压缩命令zip和unzip

zip命令:多平台之间的解压缩操作

# -r 表示递归处理,将指定目录下的所有文件和 子文件目录进行一起打包
# -q 表示安静模式,不显示执行的过程
# -o 表示输出文件的名称,需要在所有参数最后,文件名的前面
shiyanlou:project/ $ zip -r -q -o zipbin.zip /usr/local/bin

# 要显示整个打包执行的过程
shiyanlou:project/ $ zip -r -o test.zip /usr/local/bin

# -9 表示压缩的级别,9体积较小但是压缩耗时最长
shiyanlou:project/ $ zip -r -9 -q -o ltest.zip /usr/local/bin 
# -1 表示研所的级别,1体积较大但是压缩耗时最短
shiyanlou:project/ $ zip -r -1 -q -o 9test.zip /usr/local/bin

总用量 121964
-rw-r--r-- 1 shiyanlou shiyanlou 64854627 4月  25 14:55 9test.zip
-rw-r--r-- 1 shiyanlou shiyanlou 60031054 4月  25 14:55 ltest.zip

# -e表示创建加密,在压缩过程需要我们输入二次密码,注意:密码必须要一致
shiyanlou:project/ $ zip -r -e -o pwdtest.zip /usr/local/bin 
shiyanlou:project/ $ touch file.txt 
shiyanlou:project/ $ zip -r -e -o pwdtest.zip file.txt

unzip解压操作

# 直接解压,有查看解压的执行过程
shiyanlou:project/ $ unzip pwdtest.zip

# 解压操作,但是不显示解压的执行过程,同时将解压存放到指定的目录(如果目录不存在就新建)
shiyanlou:project/ $ unzip pwdtest.zip -d mydir

19、文件类型和权限
shiyanlou:project/ $ ls  -alh ~

shiyanlou:project/ $ touch log.txt
shiyanlou:project/ $ ls -lh log.txt
-rw-r--r-- 1 shiyanlou shiyanlou 0 6月  15 17:03 log.txt
shiyanlou:project/ $ chmod u=rwx,g=rwx,o=rw- log.txt
shiyanlou:project/ $ ls -lh log.txt
-rwxrwxrw- 1 shiyanlou shiyanlou 0 6月  15 17:03 log.txt
  • 使用操作符形式修改权限

操作符形式是在字符形式的基础上对文件或目录使用 +/- 操作符来设置权限。

通过 + 符号增加相应的权限,- 符号减去相应的权限。

chmod u+x,g+x,o-rw install.log
  • 使用数字形式修改权限

# 修改文件权限为 `rwxrwxrwx`
chmod 777 install.log
# 修改文件权限为 `rwx------`
chmod 700 install.log
# 修改文件权限为 `rwxr-xr-x`
chmod 755 install.log

20、归属关系(权限设置命令chown)

chown主要作用改变文件或目录的所有权,注意:该命令需要超级管理员root的权限才能执行该命令

# sudo命令表示临时调用root权限
# sudo chown root test 这个语法的作用:sudo(临时调用root权限) chown(权限设置命令) root(需要设置用户名) test(需要修改权限的文件或目录的命令)
shiyanlou:project/ $ mkdir test
shiyanlou:project/ $ sudo chown root test     
shiyanlou:project/ $ ls -l
总用量 0
drwxr-xr-x 2 root shiyanlou 6 6月  16 11:22 tes

# root:root的作用:冒号左边root表示所有者权限,右边root表示所属组权限
shiyanlou:project/ $ mkdir test01
shiyanlou:project/ $ sudo chown root:root test01
shiyanlou:project/ $ ls  -l
总用量 0
drwxr-xr-x 2 root root      6 6月  16 11:33 test01


shiyanlou:project/ $ mkdir -p test02/log
shiyanlou:project/ $ ls -l test02
总用量 0
drwxr-xr-x 2 shiyanlou shiyanlou 6 6月  16 11:37 lo
# -R参数的作用表示递归修改目录下所有的
shiyanlou:project/ $ sudo chown -R root:root test02
shiyanlou:project/ $ ls -l test02
总用量 0
drwxr-xr-x 2 root root 6 6月  16 11:37 log
  • 使用字符形式修改权限

chmod 命令参数中,u 代表所有者,g 代表所属组,o 代表其他用户,a 代表所有人。

修改 install.log 文件的权限设置成全部为可读、可写、可执行。

chmod u=rwx,g=rwx,o=rwx install.log
  • 使用操作符形式修改权限

操作符形式是在字符形式的基础上对文件或目录使用 +/- 操作符来设置权限。

通过 + 符号增加相应的权限,- 符号减去相应的权限。

chmod u+x,g+x,o-rw install.log
  • 使用数字形式修改权限

# 修改文件权限为 `rwxrwxrwx`
chmod 777 install.log
# 修改文件权限为 `rwx------`
chmod 700 install.log
# 修改文件权限为 `rwxr-xr-x`
chmod 755 install.log

权限编码

数字字符文件/目录
4r查看文件内容/查看目录下的文件或目录名称
2w修改文件内容/在目录下增删改
1x执行一些程序或脚本/可以用命令切换目录
21、文件查找命令whereis

whereis作用:通过一个保存有系统中所有文件名和目录名的数据库中去查找

#搜索Java命令相关的文件
shiyanlou:project/ $ whereis java
java: /usr/bin/java /usr/share/java /usr/lib/jvm/java-11-openjdk-amd64/bin/java /usr/share/man/man1/java.1.gz

#搜索ls 命令它的"说明书"man的文件
shiyanlou:project/ $ whereis -m ls
ls: /usr/share/man/man1/ls.1.gz

#搜索date命令二进制文件
shiyanlou:project/ $ whereis -b date
date: /usr/bin/date

#指定目录搜索date二进制文件
shiyanlou:project/ $ whereis /usr date -B
usr:
date: /usr/bin/date /usr/share/man/man1/date.1.gz
  • -f:定义搜索范围。

  • -b:仅搜索二进制文件。

  • -m:仅搜索 man 手册。

  • -s:仅搜索源。

22、环境变量export和source命令

export命令:主要是标记和导出相关环境变量(

类似于在Windows中新建环境变量)

source命令:bash(cmd),通常用于重新执行修改后的初始文档(类似于在Windows中环境变量建立好以后进行保存的过程 )

# 创建变量
shiyanlou:project/ $ export testenv=lanqiao
# 输出变量的值
shiyanlou:project/ $ echo $testenv
lanqiao
# 查看系统的环境变量文件的内容
shiyanlou:project/ $ cat ~/.zshrc

# -p是输出当前生效的环境变量
shiyanlou:project/ $ export -p

# 将自己编写的环境变量用过重定向追加到 ~/.zshrc 文件尾部
shiyanlou:project/ $ echo "export NEWENV=lanqiao" >> ~/.zshrc

#让生效系统的环境变量
shiyanlou:project/ $ source ~/.zshrc

# 查看环境变量的值
shiyanlou:project/ $ echo $NEWENV
lanqiao

# 检查 ~/.zshrc 文件内容是否有export newenv=lanqiao 的相关变量
shiyanlou:project/ $ cat ~/.zshrc

23、巩固环境变量

问题:大家通过学习我们在哪些地方运用过环境变量?

(1)、Java JDK windows MySQL

(2)、Linux它也有 环境变量的运用

问题:请描述一下Windows环境变量定义的流程

是什么?再给大家去比较Linux相同原理之处

(1)、Windows设置环境变量的操作流程:进入高级系统设置 --> 环境变量 --> 设置 --> 新建 --> 确定 --> 应用(保存执行)

(2)、Linux设置环境变量操作流程:进入(写入)~/.zshrc --> export --> source

24、Linux软件安装

Linux发行版本基本都各自的软件包管理,Ubuntu使用apt和dpkg,企业CentOS使用yum和rpm。

dpkg(包管理工具),下载和已安装的.deb软件包进行管理。

安装软件的基本语句:sudo dpkg -i [filename].deb (-i 对应的英文 intall)

卸载软件的基本语句:sudo dpkg -r [filename].deb (-r 对应的英文 remove)

查看系统中已经安装的包语句:dpkg -l (-l 对应的英文 list)

提示:dpkg的缺点:无法进行依赖关系的对应安装

重点:安装命令 apt

安装语法:sudo apt install SoftwareName (SoftwareName:安装包名)

卸载语法:sudo apt remove SoftwareName

25、综合巩固训练

见五练习题

26、再次讲解存在问题

1.打包解压工具tar,参数如下: 打包常用参数 c:表示创建新的打包文件 f:表示指定包文件,一般在文件名前面 z:表示文件类型为tar.gz格式 j:表示文件类型为tar.bz2格式 注意:参数只有-cf时,打包格式为tar

 shiyanlou:project/ $ tar -cf testbin.tar /usr/local/bin

 shiyanlou:project/ $ tar -zcf testbin.tar.gz /usr/local/bin

 shiyanlou:project/ $ tar -jcf testbin.tar.bz2 /usr/local/bin

解包常用参数: x:表示需要释放的文件 f:表示指定需要释放的包文件,一般在文件名前面 z:表示需要释放的文件类型为tar.gz格式 j:表示需要释放的文件类型为tar.bz2格式 c:表示指定要释放到的目录位置(目录必须存在)

shiyanlou:project/ $ tar -xf testbin.tar

shiyanlou:project/ $ tar -zxf testbin.tar.gz -C /home/shiyanlou

shiyanlou:project/ $ ls -l /home/shiyanlou

2.权限修改和设置 r 表示读取权限 对应数字为4 w 表示写入权限 对应数字为2 x表示执行权限 对应数字为1

shiyanlou:project/ $ sudo chmod u=rwx,g=rw,o=x testbin.tar

shiyanlou:project/ $ ls -l

shiyanlou:project/ $ sudo chmod 761 usr

shiyanlou:project/ $ ls -l


三、基本概念
简单分类
  1. Windows: 微软公司的操作系统。

  2. Mac: 苹果公司的类 Unix 操作系统。

  3. Linux: 基于 Linux 内核的类 Unix 操作系统总称,如 Ubuntu 和 CentOS 。

Unix 是最早的多用户、多任务操作系统。


文件管理

在 Linux 操作系统中,所有作系统管理的资源,例如网络接口卡、磁盘驱动器、输入输出设备、普通文件或是目录都被看作是一个文件。

文件类型

Linux 支持 5 种文件类型 :

文件类型描述示例
普通文件存储信息和数据代码、可执行文件、图片
目录文件管理文件和子目录文件夹
链接文件不同目录下文件共享对于每个符号链接,都由系统创建链接文件指向具体位置
设备文件访问硬件设备键盘、鼠标
命名管道进程之间的通信
目录结构

Linux 文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录 /root

常见子目录说明:

  • /bin: 存放二进制可执行文件(ls、cat、mkdir等),常用命令一般都在这里;

  • /etc: 存放系统管理和配置文件;

  • /home: 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示;

  • /usr : 用于存放系统应用程序;

  • /opt: 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里;

  • /proc: 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;

  • /root: 超级用户(系统管理员)的主目录(特权阶级^o^);

  • /sbin: 存放二进制可执行文件,只有 root 才能访问。通常存放系统管理员使用的系统级别的管理命令和程序。如ifconfig等;

  • /dev: 用于存放设备文件;

  • /mnt: 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;

  • /boot: 存放用于系统引导时使用的各种文件;

  • /lib : 存放着和系统运行相关的库文件 ;

  • /tmp: 用于存放各种临时文件,是公用的临时文件存储点;

  • /var: 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;

  • /lost+found: 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里。

四、基本命令

Linux命令大全:http://man.linuxde.net/

目录切换命令
  • CD USR 切换到该目录下usr目录

  • 光盘..(或光盘../) 切换到上一层目录

  • cd / 切换到系统根目录

  • cd ~ 切换到用户主目录

  • cd - 切换到上一个操作所在目录

目录操作命令
  1. mkdir 目录名称: 增加目录

  2. ls或者ll(ll是ls -l的别名,ll命令可以看到该目录下的所有目录和文件的详细信息):查看目录信息

  3. 查找目录 参数 寻找目录(查)

    示例:

    • 列出当前目录及子目录下所有文件和文件夹:find .

    • 在目录下查找以.txt结尾的文件名:/home``find /home -name "*.txt"

    • 同上,但忽略大小写:find /home -iname "*.txt"

    • 当前目录及子目录下查找所有以.txt和.pdf结尾的文件:或find . \( -name "*.txt" -o -name "*.pdf" \)``find . -name "*.txt" -o -name "*.pdf"

  4. mv 目录名称 新目录名称: 修改目录的名称(改)

    注意:mv的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行 重命名的操作。mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。后面会介绍到MV命令的另一个用法。

  5. mv 目录名称 目录的新位置: 移动目录的位置---剪切(改)

    注意:mv语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作。另外mv与CP的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。

  6. cp -r 目录名称 目录拷贝的目标位置: 拷贝目录(改),-r代表递归拷贝

    注意:cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不 用写-r递归

  7. rm [-rf] 目录: 删除目录(删)

    注意:rm不仅可以删除目录,也可以删除其他文件或压缩包,为了增强大家的记忆, 无论删除任何目录或文件,都直接使用 目录/文件/压缩包rm -rf

文件操作命令
  1. touch 文件名称 文件的创建(增)

  2. cat/more/less/tail 文件名称 文件的查看(查)

    • cat 查看显示文件内容

    • more 可以显示百分比,回车可以向下一行, 空格可以向下一页,q可以退出查看

    • less 可以使用键盘上的PgUp和PgDn向上 和向下翻页,q结束查看

    • tail-10 查看文件的后10行,Ctrl+C结束

    注意:命令 tail -f 文件 可以对某个文件进行动态监控,例如tomcat的日志文件, 会随着程序的运行,日志会变化,可以使用tail -f catalina-2016-11-11.log 监控 文 件的变化

  3. vim 文件: 修改文件的内容(改)

    vim编辑器是Linux中的强大组件,是vi编辑器的加强版,vim编辑器的命令和快捷方式有很多,但此处不一阐述,大家也无需研究的很透彻,使用vim编辑修改文件的方式基本会使用就可以了。

    在实际开发中,使用vim编辑器主要作用就是修改配置文件,下面是一般步骤:

    vim 文件------>进入文件----->命令模式------>按i进入编辑模式----->编辑文件 ------->按Esc进入底行模式----->输入:wq/q!(输入wq代表写入内容并退出,即保存;输入q!代表强制退出不保存。)

  4. rm -rf 文件: 删除文件(删)

    同目录删除:熟记 文件 即可rm -rf

文件压缩命令

1)打包并压缩文件:

Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。

而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。 命令:tar -zcvf 打包压缩后的文件名 要打包压缩的文件 其中:

z:调用gzip压缩命令进行压缩

c:打包文件

v:显示运行过程

f:指定文件名

比如:假如test目录下有三个文件分别是:aaa.txt bbb.txt ccc.txt,如果我们要打包test目录并指定压缩后的压缩包名称为test.tar.gz可以使用命令:tar -zcvf test.tar.gz aaa.txt bbb.txt ccc.txt或:tar -zcvf test.tar.gz /test/

2)解压压缩包:

命令:tar [-xvf] 压缩文件

其中:x:代表解压

示例:

1 将/test下的test.tar.gz解压到当前目录下可以使用命令:tar -xvf test.tar.gz

2 将/test下的test.tar.gz解压到根目录/usr下:tar -xvf test.tar.gz -C /usr(- C代表指定解压的位置)

操作权限命令

操作系统中每个文件都拥有特定的权限、所属用户和所属组。权限是操作系统用来限制资源访问的机制,在Linux中权限一般分为读(readable)、写(writable)和执行(excutable),分为三组。分别对应文件的属主(owner),属组(group)和其他用户(other),通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。通过 ls -l 命令我们可以 查看某个目录下的文件或目录的权限

示例:在随意某个目录下ls -l

第一列的内容的信息解释如下:

下面将详细讲解文件的类型、Linux中权限以及文件有所有者、所在组、其它组具体是什么?

文件的类型:

  • d: 代表目录

  • -: 代表文件

  • l: 代表软链接(可以认为是window中的快捷方式)

Linux中权限分为以下几种:

  • r:代表权限是可读,r也可以用数字4表示

  • w:代表权限是可写,w也可以用数字2表示

  • x:代表权限是可执行,x也可以用数字1表示

文件和目录权限的区别:

对文件和目录而言,读写执行表示不同的意义。

对于文件:

权限名称可执行操作
r可以使用cat查看文件的内容
w可以修改文件的内容
x可以将其运行为二进制文件

对于目录:

权限名称可执行操作
r可以查看目录下列表
w可以创建和删除目录下文件
x可以使用cd进入目录

需要注意的是超级用户可以无视普通用户的权限,即使文件目录权限是000,依旧可以访问。 在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念。

  • 所有者

    一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者,用ls ‐ahl命令可以看到文件的所有者 也可以使用chown 用户名 文件名来修改文件的所有者 。

  • 文件所在组

    当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组 用ls ‐ahl命令可以看到文件的所有组 也可以使用chgrp 组名 文件名来修改文件所在的组。

  • 其它组

    除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

我们再来看看如何修改文件/目录的权限。

修改文件/目录的权限的命令:chmod

示例:修改/test下的aaa.txt的权限为属主有全部权限,属主所在的组有读写权限, 其他用户只有读的权限

chmod u=rwx,g=rw,o=r aaa.txt

上述示例还可以使用数字表示:

chmod 764 aaa.txt

补充一个比较常用的东西:

假如我们装了一个zookeeper,我们每次开机到要求其自动启动该怎么办?

  1. 新建一个脚本zookeeper

  2. 为新建的脚本zookeeper添加可执行权限,命令是:chmod +x zookeeper

  3. 把zookeeper这个脚本添加到开机启动项里面,命令是:chkconfig --add zookeeper

  4. 如果想看看是否添加成功,命令是:chkconfig --list

用户管理命令

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

Linux用户管理相关命令:

  • useradd 选项 用户名:添加用户账号

  • userdel 选项 用户名:删除用户帐号

  • usermod 选项 用户名:修改帐号

  • passwd 用户名:更改或创建用户的密码

  • passwd -S 用户名 :显示用户账号密码信息

  • passwd -d 用户名: 清除用户密码

useradd命令用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。

passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。

用户组

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

Linux系统用户组的管理相关命令:

  • groupadd 选项 用户组:增加一个新的用户组

  • groupdel 用户组:要删除一个已有的用户组

  • groupmod 选项 用户组: 修改用户组的属性

其他常用命令
  • PWD 显示当前所在位置

  • sudo + 其他命令:以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

  • grep 要搜索的字符串 要搜索的文件 --color 搜索命令,--color代表高亮显示

  • ps -ef/ps -``aux 这两个命令都是查看当前系统正在运行进程,两者的区别是展示格式不同。如果想要查看特定的进程可以使用这样的格式:ps aux|grep redis (查看包括 redis 字符串的进程),也可使用 。pgrep redis -a

    注意:如果直接用ps((Process Status))命令,会显示所有进程的状态,通常结合grep命令查看某进程的状态。

  • kill -9 进程的 pid: 杀死进程(-9 表示强制终止。)

    先用ps查找进程,然后用kill杀掉

  • 网络通信命令:

    • 查看当前系统的网卡信息:ifconfig

    • 查看与某台机器的连接情况:ping

    • 查看当前系统的端口使用:netstat -an

  • net-tools 和 iproute2 : 起源于BSD的TCP/IP工具箱,后来成为老版本Linux内核中配置网络功能的工具。但自2001年起,Linux社区已经对其停止维护。同时,一些Linux发行版比如Arch Linux和CentOS/RHEL 7则已经完全抛弃了net-tools,只支持。Linux IP命令类似于ifconfig,但功能更强大,旨在替代它。更多详情请阅读如何在Linux中使用IP命令和示例net-tools``iproute2

  • shutdown: : 指定现在立即关机;:指定5分钟后关机,同时送出警告信息给登入用户。shutdown -h now``shutdown +5 "System will shutdown after 5 minutes"

  • 重启重启 重开机。reboot -w 做个重开机的模拟(只有纪录并不会真的重开机)。

五、练习题

Linux抽问:

1~9

1、使用帮助参数查看ls命令的使用方法

shiyanlou:project/ $ ls --help

2、查看Linux内核发行号

shiyanlou:project/ $ uname -r

3、查看Linux内核完整信息

shiyanlou:project/ $ uname -a

4、查看Linux根目录下面的所有文件或目录

shiyanlou:project/ $ ls /

5、查看Linux根目录下的home目录中文件或目录,显示文件的属性与权限等相关信息

shiyanlou:-/$ ls -l /home/

6、查看Linux根目录下的home目录中文件或目录,长数据方式显示隐藏的文件或目录

shiyanlou:project/ $ ls -al /home/

7、查看 /home/ 目录下的文件和目录包含的子目录

shiyanlou:-/$ ls -R /home/

8、使用"说明书"命令查看ls命令的信息,查阅完成后退出

shiyanlou:-/$ man ls
# 查看完"说明书"后按键盘上的 q 键就可以退出,q的意思是:quit

9、在/home/project/目录中创建 MyStudy目录

shiyanlou:project/ $ mkdir MyStudy
10~19

10、在/home/project/目录中创建 web/lib/css多层目录结构

shiyanlou:project/ $ mkdir -p /home/project/web/lib/css/

11、在/home/project/目录中创建 site/bin/java,site/src/java,site/test/java 相关多层目录结构

shiyanlou:project/ $ mkdir -p /home/project/site/{bin,src,test}/java

12、在/home/project/目录中创建 log/20230101 ~ log/20230112 相关多层目录结构

shiyanlou:project/ $ mkdir -p /home/project/log/{20230101..20230112}/

13、将登录用户当前使用目录切换到 10 题的css目录中

shiyanlou:project/ $ cd /home/project/web/lib/css/

14、在css目录中创建一个reset.css文件

shiyanlou:css/ $ touch reset.css
# 或
shiyanlou:css/ $ touch /home/project/web/lib/css/reset.css

15、在css目录中创建test01.css ~ test10.css的文件

shiyanlou:css/ $ touch /home/project/web/lib/css/test{01..10}.css

16、查看/etc/passwd的内容并显示行号

shiyanlou:project/ $ cat -n /etc/passwd

17、查看/etc/passwd的内容包括一些不可见的符号,如:换行符

shiyanlou:project/ $ cat -A /etc/passwd

18、在/home/project/ 新建 data.txt文件,然后将/etc/passwd内容重定向到data.txt中

shiyanlou:project/ $ cat /etc/passwd >> data.txt

19、查看/etc/passwd 前8行内容

shiyanlou:project/ $ head -n 8 /etc/passwd
20~29

20、查看/etc/passwd 前 50个字节内容

shiyanlou:project/ $ head -c 50 /etc/passwd

21、查看/etc/passwd 后9行内容

shiyanlou:project/ $ tail -n 9 /etc/passwd

22、查找/etc/passwd 能匹配到 shiyanlou的相关内容

shiyanlou:project/ $ grep shiyanlou /etc/passwd

23、在/home/project/ 新建 file.txt文件,然后将/etc/passwd 能匹配到 shiyanlou的相关内容重定向到file.txt文件中,最后查看 file.txt内容

shiyanlou:project/ $ touch /home/project/file.txt
shiyanlou:project/ $ grep shiyanlou /etc/passwd > /home/project/file.txt 
shiyanlou:project/ $ cat /home/project/file.txt

24、将/home/project/web/lib/css/reset.css文件 复制到 /home/shiyanlou/目录中

shiyanlou:project/ $ cp /home/project/web/lib/css/reset.css /home/shiyanlou/

25、将/home/project/site/bin/目录中的java目录复制到 /home/shiyanlou/目录中

shiyanlou:project/ $ cp -r /home/project/site/bin/java /home/shiyanlou/

26、将/home/project/web/lib/css/reset.css文件 移动到 /home/shiyanlou/目录中并重命名为index.css

shiyanlou:project/ $ mv /home/project/web/lib/css/reset.css /home/shiyanlou/index.css

27、将/home/project/site/bin/目录中的java目录移动到 /home/shiyanlou/目录中并重命名为python

shiyanlou:project/ $ mv /home/project/site/bin/java /home/shiyanlou/python

28、删除/home/shiyanlou/index.css文件

shiyanlou:project/ $ rm /home/shiyanlou/index.css

29、删除/home/shiyanlou/python目录

shiyanlou:project/ $ rm -r /home/shiyanlou/python

30~35

30、将/home/shiyanlou 目录打包到当前project目录下,打包格式为:shiyanshou.tar.gz

shiyanlou:project/ $ tar -czvf shiyanshou.tar.gz /home/shiyanlou/

31、将/home/shiyanlou 目录打包到当前project目录下,打包格式为:shiyanshou.tar.bz2

shiyanlou:project/ $ tar -cjvf shiyanshou.tar.bz2 /home/shiyanlou/

32、将 /usr/local/man 目录加密打包到 当前project目录下,密码为 123456,并命名为 man.zip。

shiyanlou:project/ $ zip -P 123456 -r man.zip /usr/local/man/
# 或
shiyanlou:project/ $ zip -r -e man.zip /usr/local/man 

33、将project目录下man.zip解压到project目录man路径下

shiyanlou:project/ $ unzip -P 123456 man.zip -d /home/project/man/
# 或
shiyanlou:project/ $ unzip man.zip -d /home/project/man

34、将project目录下web目录权限修改为所有者只能读写执行,所属组只能读写,所有人能读的相关权限。

shiyanlou:project/ $ chmod 764 /home/project/web

35、将project目录下web目录及其文件和子目录的归属修改为所有者root,所属组root

shiyanlou:project/ $ sudo chown -R root:root /home/project/web/

Linux 常用命令速查表
目录操作
  • cd:返回自己 $HOME 目录

  • cd {dirname}:进入目录

  • pwd:显示当前所在目录

  • mkdir {dirname}:创建目录

  • mkdir -p {dirname}:递归创建目录

  • pushd {dirname}:目录压栈并进入新目录

  • popd:弹出并进入栈顶的目录

  • dirs -v:列出当前目录栈

  • cd -:回到之前的目录

  • cd -{N}:切换到目录栈中的第 N 个目录,比如 cd -2 将切换到第二个

文件操作
  • ls:显示当前目录内容,后面可接目录名:ls {dir} 显示指定目录

  • ls -l:列表方式显示目录内容,包括文件日期,大小,权限等信息

  • ls -1:列表方式显示目录内容,只显示文件名称,减号后面是数字 1

  • ls -a:显示所有文件和目录,包括隐藏文件(.开头的文件/目录名)

  • ln -s {fn} {link}:给指定文件创建一个软链接

  • cp {src} {dest}:拷贝文件,cp -r dir1 dir2 可以递归拷贝(目录)

  • rm {fn}:删除文件,rm -r 递归删除目录,rm -f 强制删除

  • mv {src} {dest}:移动文件,如果 dest 是目录,则移动,是文件名则覆盖

  • touch {fn}:创建或者更新一下制定文件

  • cat {fn}:输出文件原始内容

  • any_cmd > {fn}:执行任意命令并将标准输出重定向到指定文件

  • more {fn}:逐屏显示某文件内容,空格翻页,q 退出

  • less {fn}:更高级点的 more,更多操作,q 退出

  • head {fn}:显示文件头部数行,可用 head -3 abc.txt 显示头三行

  • tail {fn}:显示文件尾部数行,可用 tail -3 abc.txt 显示尾部三行

  • tail -f {fn}:持续显示文件尾部数据,可用于监控日志

  • nano {fn}:使用 nano 编辑器编辑文件

  • vim {fn}:使用 vim 编辑文件

  • diff {f1} {f2}:比较两个文件的内容

  • wc {fn}:统计文件有多少行,多少个单词

  • chmod 644 {fn}:修改文件权限为 644,可以接 -R 对目录循环改权限

  • chgrp group {fn}:修改文件所属的用户组

  • chown user1 {fn}:修改文件所有人为 user1, chown user1:group1 fn 可以修改组

  • file {fn}:检测文件的类型和编码

  • basename {fn}:查看文件的名字(不包括路径)

  • dirname {fn}:查看文件的路径(不包括名字)

  • grep {pat} {fn}:在文件中查找出现过 pat 的内容

  • grep -r {pat} .:在当前目录下递归查找所有出现过 pat 的文件内容

  • stat {fn}:显示文件的详细信息

用户管理
  • whoami:显示我的用户名

  • who:显示已登陆用户信息,w / who / users 内容略有不同

  • w:显示已登陆用户信息,w / who / users 内容略有不同

  • users:显示已登陆用户信息,w / who / users 内容略有不同

  • passwd:修改密码,passwd {user} 可以用于 root 修改别人密码

  • finger {user}:显示某用户信息,包括 id, 名字, 登陆状态等

  • adduser {user}:添加用户

  • deluser {user}:删除用户

  • w:查看谁在线

  • su:切换到 root 用户

  • su -:切换到 root 用户并登陆(执行登陆脚本)

  • su {user}:切换到某用户

  • su -{user}:切换到某用户并登陆(执行登陆脚本)

  • id {user}:查看用户的 uid,gid 以及所属其他用户组

  • id -u {user}:打印用户 uid

  • id -g {user}:打印用户 gid

  • write {user}:向某用户发送一句消息

  • last:显示最近用户登陆列表

  • last {user}:显示登陆记录

  • lastb:显示失败登陆记录

  • lastlog:显示所有用户的最近登陆记录

  • sudo {command}:以 root 权限执行某命令

进程管理
  • ps:查看当前会话进程

  • ps ax:查看所有进程,类似 ps -e

  • ps aux:查看所有进程详细信息,类似 ps -ef

  • ps auxww:查看所有进程,并且显示进程的完整启动命令

  • ps -u {user}:查看某用户进程

  • ps axjf:列出进程树

  • ps xjf -u {user}:列出某用户的进程树

  • ps -eo pid,user,command:按用户指定的格式查看进程

  • ps aux | grep httpd:查看名为 httpd 的所有进程

  • ps --ppid {pid}:查看父进程为 pid 的所有进程

  • pstree:树形列出所有进程,pstree 默认一般不带,需安装

  • pstree {user}:进程树列出某用户的进程

  • pstree -u:树形列出所有进程以及所属用户

  • pgrep {procname}:搜索名字匹配的进程的 pid,比如 pgrep apache2

  • kill {pid}:结束进程

  • kill -9 {pid}:强制结束进程,9/SIGKILL 是强制不可捕获结束信号

  • kill -KILL {pid}:强制执行进程,kill -9 的另外一种写法

  • kill -l:查看所有信号

  • kill -l TERM:查看 TERM 信号的编号

  • killall {procname}:按名称结束所有进程

  • pkill {procname}:按名称结束进程,除名称外还可以有其他参数

  • top:查看最活跃的进程

  • top -u {user}:查看某用户最活跃的进程

  • any_command &:在后台运行某命令,也可用 CTRL+Z 将当前进程挂到后台

  • jobs:查看所有后台进程(jobs)

  • bg:查看后台进程,并切换过去

  • nohup {command}:长期运行某程序,在你退出登陆都保持它运行

  • nohup {command} &:在后台长期运行某程序

  • wait:等待所有后台进程任务结束

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巐癈瞓攞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值