基础命令

  • ls list 查看当前文件夹下的内容

    • -a 显示指定目录下所有子目录与文件,包括隐藏文件
      -l 以列表方式显示文件的详细信息
      -h 配合 -l 以人性化的方式显示文件大小

      pwd print wrok directory 查看当前所在文件夹

      cd [目录名] change directory 切换文件夹

      cd 切换到当前用户的主目录(/home/用户目录)
      cd ~ 切换到当前用户的主目录(/home/用户目录)
      cd . 保持在当前目录不变
      cd .. 切换到上级目录
      cd - 可以在最近两次工作目录之间来回切换

  • 创建和删除操作

    • touch [文件名] touch 如果文件不存在,新建文件
      • 创建文件或修改文件时间
        • 如果文件 不存在,可以创建一个空白文件
        • 如果文件 已经存在,可以修改文件的末次修改日期
    • mkdir [目录名] make directory 创建目录
      • -p可以递归创建目录
        rm [文件名] remove 删除指定的文件名
        -f 强制删除,忽略不存在的文件,无需提示
        -r 递归地删除目录下的内容,删除文件夹 时必须加此参数
        clear    clear    清屏
        
  • 拷贝和移动文件

    • tree [目录名] tree 以树状图列出文件目录结构
      • -d只显示目录
        cp 源文件 目标文件    copy    复制文件或者目录
        
        -i 覆盖文件前提示
        -r 若给出的源文件是目录文件,则 cp 将递归复制该目录下的所有子目录和文件,目标 文件必须为一个目录名
        mv 源文件 目标文件 move 移动文件或者目录/文件或者目录重命名
      • -i覆盖文件前提示
  • 查看文件内容

    • cat 文件名 concatenate 查看文件内容、创建文件、文件合并、追加文件内容等

      cat 命令可以用来 查看文件内容、创建文件、文件合并、追加文件内容 等功能,cat 会一次显示所有的内容,适合 查看内容较少 的文本文件。

      - -b 对非空输出行编号
      -n 对输出的所有行编号

    • more 文件名 more 分屏显示文件内容

      more 命令可以用于分屏显示文件内容,每次只显示一页内容适合于 查看内容较多的文本文件。

      • 空格键 显示手册页的下一屏
        Enter 键 一次滚动手册页的一行
        b 回滚一屏
        f 前滚一屏
        q 退出
        /word 搜索 word 字符串

        grep 搜索文本 文件名      grep   搜索文本文件内容
        

      Linux 系统中 grep 命令是一种强大的文本搜索工具,grep允许对文本文件进行 模式查找,所谓模式查找,即正则表达式。

      • -n 显示匹配行及行号
        -v 显示不包含匹配文本的所有行(相当于求反)
        -i 忽略大小写
  • 其他

    • echo 文字内容

      • echo 会在终端中显示参数指定的文字,通常会和 重定向 联合使用
    • 重定向 > 和 >>

      Linux 允许将命令执行结果 重定向到一个 文件将本应显示在终端上的内容 输出/追加 到指定文件中

      • > 表示输出,会覆盖文件原有的内容
      • >> 表示追加,会将内容追加到已有文件的末尾
    • 管道 |

      Linux 允许将 一个命令的输出 可以通过管道 做为 另一个命令的输入

      • more:分屏显示内容
      • grep:在命令执行结果的基础上查询指定的文本
  • 小技巧

    • ctrl + - 缩小终端窗口的字体显示
    • ctrl + + 放大终端窗口的字体显示

远程管理常用命令

  • 关机/重启

    • shutdown

      不指定选项和参数,默认表示 1 分钟之后 关闭电脑远程维护服务器时,最好不要关闭系统,而应该重新启动系统

      • -r重新启动
      • # 重新启动操作系统,其中 now 表示现在 $ shutdown -r now
      • # 立刻关机,其中 now 表示现在 $ shutdown now
      • # 系统在今天的 20:25 会关机 $ shutdown 20:25
      • # 系统再过十分钟后自动关机 $ shutdown +10
      • # 取消之前指定的关机计划 $ shutdown -c
  • 查看或配置网卡信息

    • ifconfig

      一台计算机中有可能会有一个 物理网卡 和 多个虚拟网卡,在 Linux 中物理网卡的名字通常以 ensXX 表示127.0.0.1 被称为 本地回环/环回地址,一般用来测试本机网卡是否正常

      • # 查看网卡配置信息 $ ifconfig
      • # 查看网卡对应的 IP 地址 $ ifconfig | grep inet
    • ping

  • 远程登录和复制文件

    • ssh

      SSH 客户端是一种使用 Secure Shell(SSH) 协议连接到远程计算机的软件程序。SSH 是目前较可靠,专为远程登录会话和其他网络服务 提供安全性的协议,利用 SSH 协议可以有效防止远程管理过程中的信息泄露,通过 SSH 协议 可以对所有传输的数据进行加密,也能够防止 DNS 欺骗和 IP 欺骗;SSH 的另一项优点是传输的数据可以是经过压缩的,所以可以加快传输的速度。

      • 01 ssh 用户名@ip secure shell 关机/重新启动
        02 scp 用户名@ip:文件名或路径 用户名@ip:文件名或路径 secure copy 远程复制文件

      • SSH 客户端的简单使用

        • ssh [-p port] user@remote
      • 常见服务端口号列表:

        • 服务 端口号
          SSH 22
          Web 80

          HTTPS 443
          FTP 21

    • scp

      • 它的地址格式与 ssh 基本相同,需要注意的是,在指定端口时用的是大写的 -P 而不是小写的
        -r 若给出的源文件是目录文件,则 scp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
        -P 若远程 SSH 服务器的端口不是 22,需要使用大写字母 -P 选项指定端口
      • # 把本地当前目录下的 01.py 文件 复制到 远程 家目录下的 Desktop/01.py
        • # 注意:: 后面的路径如果不是绝对路径,则以用户的家目录作为参照路径
        • scp -P port 01.py user@remote:Desktop/01.py
      • # 把远程 家目录下的 Desktop/01.py 文件 复制到 本地当前目录下的 01.py
        • scp -P port user@remote:Desktop/01.py 01.py # 加上 -r 选项可以传送文件夹
      • # 把当前目录下的 demo 文件夹 复制到 远程 家目录下的 Desktop
        • scp -r demo user@remote:Desktop
      • # 把远程 家目录下的 Desktop 复制到 当前目录下的 demo 文件夹
        • scp -r user@remote:Desktop demo
    • SSH 高级

      • 免密码登录
        • 配置公钥
          • 执行 ssh-keygen 即可生成 SSH 钥匙,一路回车即可
        • 上传公钥到服务器
          • 执行 ssh-copy-id -p port user@remote,可以让远程服务器记住我们的公钥
      • 配置别名
        • 每次都输入 ssh -p port user@remote,时间久了会觉得很麻烦,特别是当 user, remote 和 port 都得输入,而且还不好记忆
        • 而 配置别名 可以让我们进一步偷懒,譬如用:ssh mac 来替代上面这么一长串,那么就在 ~/.ssh/config 里面追加以下内容:
        • Host mac HostName ip地址 User itheima Port 22
        • 保存之后,即可用 ssh mac 实现远程登录了,scp 同样可以使用

用户权限相关命令

  • ls -l 可以查看文件夹下文件的详细信息,从左到右依次是:

    • 权限,第 1 个字符如果是 d 表示目录
    • 硬链接数,通俗地讲,就是有多少种方式,可以访问到当前目录/文件
    • 拥有者,家目录下 文件/目录 的拥有者通常都是当前用户
    • 组,在 Linux 中,很多时候,会出现组名和用户名相同的情况,后续会讲
    • 大小
    • 时间
    • 名称
  • chmod 简单使用

    • chmod +/-rwx 文件名|目录名
  • sudo

    • su 是 substitute user 的缩写,表示 使用另一个用户的身份
    • sudo 命令用来以其他身份来执行命令,预设的身份为 root
    • 用户使用 sudo 时,必须先输入密码,之后有 5 分钟的有效期限,超过期限则必须重新输入密码
    • 若其未经授权的用户企图使用 sudo,则会发出警告邮件给管理员
  • 组管理 终端命令

    创建组 / 删除组 的终端命令都需要通过 sudo 执行

    • 01 groupadd 组名 添加组
      02 groupdel 组名 删除组
      03 cat /etc/group 确认组信息
      04 chgrp -R 组名 文件/目录名 递归修改文件/目录的所属组
    • 组信息保存在 /etc/group 文件中
    • /etc 目录是专门用来保存 系统配置信息 的目录
  • 用户管理 终端命令

    创建用户 / 删除用户 / 修改其他用户密码 的终端命令都需要通过 sudo 执行

    • 创建用户/设置密码/删除用户

      • 01 useradd -m -g 组 新建用户名 添加新用户 -m 自动建立用户家目录-g 指定用户所在的组,否则会建立一个和同名的组
        02 passwd 用户名 设置用户密码 如果是普通用户,直接用 passwd 可以修改自己的账户密码
        03 userdel -r 用户名 删除用户 -r 选项会自动删除用户家目录
        04 cat /etc/passwd | grep 用户名 确认用户信息 新建用户后,用户信息会保存在 /etc/passwd 文件中
      • 创建用户时,如果忘记添加 -m 选项指定新用户的家目录 —— 最简单的方法就是删除用户,重新创建
      • 创建用户时,默认会创建一个和用户名同名的组名
      • 用户信息保存在 /etc/passwd 文件中
    • 查看用户信息

      • 01 id [用户名] 查看用户 UID 和 GID 信息

        02 who 查看当前所有登录的用户列表

        03 whoami 查看当前登录用户的账户名

      • passwd 文件

        • /etc/passwd 文件存放的是用户的信息,由 6 个分号组成的 7 个信息,分别是
        • 用户名
        • 密码(x,表示加密的密码)
        • UID(用户标识)
        • GID(组标识)
        • 用户全名或本地帐号
        • 家目录
        • 登录使用的 Shell,就是登录之后,使用的终端命令,ubuntu 默认是 dash
      • usermod

        • usermod 可以用来设置 用户 的 主组 / 附加组 和 登录 Shell,命令格式如下:
        • 主组:通常在新建用户时指定,在 etc/passwd 的第 4 列 GID 对应的组
        • 附加组:在 etc/group 中最后一列表示该组的用户列表,用于指定 用户的附加权限
        • 提示:设置了用户的附加组之后,需要重新登录才能生效!
        • # 修改用户的主组(passwd 中的 GID)usermod -g 组 用户名
        • # 修改用户的附加组usermod -G 组 用户名
        • # 修改用户登录 Shellusermod -s /bin/bash 用户名
        • 注意:默认使用 useradd 添加的用户是没有权限使用 sudo 以 root 身份执行命令的,可以使用以下命令,将用户添加到 sudo 附加组中
          • usermod -G sudo 用户名
      • which

        /etc/passwd 是用于保存用户信息的文件/usr/bin/passwd 是用于修改用户密码的程序

        • which 命令可以查看执行命令所在位置
        • cd 这个终端命令是内置在系统内核中的,没有独立的文件,因此用 which 无法找到 cd 命令的位置
      • bin 和 sbin

        • 在 Linux 中,绝大多数可执行文件都是保存在 /bin、/sbin、/usr/bin、/usr/sbin
        • /bin(binary)是二进制执行文件目录,主要用于具体应用
        • /sbin(system binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理
        • /usr/bin(user commands for applications)后期安装的一些软件
        • /usr/sbin(super user commands for applications)超级用户的一些管理程序
      • 切换用户

        • 01 su - 用户名 切换用户,并且切换目录 - 可以切换到用户家目录,否则保持位置不变
          02 exit 退出当前登录账户
    • 修改文件权限

      • 01 chown 修改拥有者
        • # 修改文件|目录的拥有者
          • chown 用户名 文件名|目录名
            2 chgrp 修改组
        • # 递归修改文件|目录的组
          • chgrp -R 组名 文件名|目录名
            3 chmod 修改权限
        • # 递归修改文件权限
          • chmod -R 755 文件名|目录名
      • chmod 在设置权限时,可以简单地使用三个数字分别对应 拥有者 / 组 和 其他 用户的权限

系统信息相关命令

  • 时间和日期

    • date 查看系统时间
      cal calendar 查看日历,-y 选项可以查看一年的日历
  • 磁盘和目录空间

    • df -h disk free 显示磁盘剩余空间
      du -h [目录名] disk usage 显示目录下的文件大小
    • -h 以人性化的方式显示文件大小
  • 进程信息

    • ps aux process status 查看进程的详细状况

      ps 默认只会显示当前用户通过终端启动的应用程序

      • a 显示终端上的所有进程,包括其他用户的进程
        u 显示进程的详细状态
        x 显示没有控制终端的进程

        top    动态显示运行中的进程并且排序
        
      • 要退出 top 可以直接输入 q

    • kill [-9] 进程代号 终止指定代号的进程,-9 表示强行终止

  • 其他命令
    • 查找文件
      • find
        • find [路径] -name “*.py”查找指定路径下扩展名是 .py 的文件,包括子目录
        • 如果省略路径,表示在当前文件夹下查找
    • 软链接
      • ln
        • ln -s 被链接的源文件 链接文件
          建立文件的软链接,用通俗的方式讲类似于 Windows 下的快捷方式
        • 没有 -s 选项建立的是一个 硬链接文件
          两个文件占用相同大小的硬盘空间,工作中几乎不会建立文件的硬链接
        • 源文件要使用绝对路径,不能使用相对路径,这样可以方便移动链接文件后,仍然能够正常使用
        • 硬链接简介
          • 在 Linux 中,文件名 和 文件的数据 是分开存储的
          • 在 Linux 中,只有文件的 硬链接数 == 0 才会被删除
          • 使用 ls -l 可以查看一个文件的硬链接的数量
    • 打包和压缩
      • 打包 / 解包
        • # 打包文件 tar -cvf 打包文件.tar 被打包的文件/路径…
        • # 解包文件 tar -xvf 打包文件.tar
          c 生成档案文件,创建打包文件
          x 解开档案文件
          v 列出归档解档的详细过程,显示进度
          f 指定档案文件名称,f 后面一定是 .tar 文件,所以必须放选项最后
      • 压缩/解压缩
        • gzip
          • tar 与 gzip 命令结合可以使用实现文件 打包和压缩
            • tar 只负责打包文件,但不压缩
            • 用 gzip 压缩 tar 打包后的文件,其扩展名一般用 xxx.tar.gz
          • 在 Linux 中,最常见的压缩文件格式就是 xxx.tar.gz
          • 在 tar 命令中有一个选项 -z 可以调用 gzip,从而可以方便的实现压缩和解压缩的功能
          • # 压缩文件 tar -zcvf 打包文件.tar.gz 被压缩的文件/路径…
          • # 解压缩文件 tar -zxvf 打包文件.tar.gz
          • # 解压缩到指定路径 tar -zxvf 打包文件.tar.gz -C 目标路径
            • -C解压缩到指定目录,注意:要解压缩的目录必须存在
        • bzip2(two)
          • tar 与 bzip2 命令结合可以使用实现文件 打包和压缩(用法和 gzip 一样)
            • tar 只负责打包文件,但不压缩,
            • 用 bzip2 压缩 tar 打包后的文件,其扩展名一般用 xxx.tar.bz2
          • 在 tar 命令中有一个选项 -j 可以调用 bzip2,从而可以方便的实现压缩和解压缩的功能
          • # 压缩文件 tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径…
          • # 解压缩文件 tar -jxvf 打包文件.tar.bz2
    • 软件安装
      • apt-get
        • # 1. 安装软件 $ sudo apt install 软件包
        • # 2. 卸载软件 $ sudo apt remove 软件名
        • # 3. 更新已安装的包 $ sudo apt upgrade