一.用户与权限

  • sudo(Substitute User do)超级用户

    1
    2
    3
    4
    sudo command    # 运行root才可以运行的命令
    sudo su # 成为root用户(exit或Ctrl+D退出)
    sudo su # 成为root用户并定位到家目录
    sudo -i
  • adduser 命令:添加新用户

    1
    adduser user1    # 添加一个名为user1的用户
  • passwd 命令:修改密码

    1
    passwd user1    # 修改用户user1的密码
  • deluser 命令:删除用户

    1
    2
    deluser user1    # 删除用户user1
    deluser --remove-home user1 # 删除用户同时删除用户的家目录

二.群组管理和文件权限管理

群组管理

  • addgroup 命令:添加群组

    1
    addgroup friends    # 添加一个名为"friends"的群组
  • usermod 命令:修改用户账户

    1
    2
    3
    4
    usermod -g friends user1          # 将用户user1置入名为"friends"的群组
    usermod -G friends,happy user1 # 将用户user1置入多个群组(先移出原来的群组再置入)
    usermod -aG happy user1 # 将用户user1追加至新群组(不移出原来的群组)
    groups user1 # 查询用户user1属于哪个群组
  • delgroup 命令:删除群组

    1
    delgroup friends    # 删除名为"friends"的群组

文件管理

  • chown (change owner)命令:改变文件所有者

    1
    2
    3
    chown user1 file.txt            # 将文件所有者改为user1
    chown user1:friends file.txt # 将文件所有者改为user1,群组改为friends
    chown -R ... # 使用-R递归更改
  • chgrp (change group)命令:改变文件群组

    1
    chgrp friends file.txt    # 将文件所属群组改为"friends"
  • chmod 命令:修改访问权限

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    首先要知道:
    使用ls -l时,显示的第一列其实就是文件访问权限符

    d(directory):目录
    l(link):链接
    - :普通文件

    r(read):可读
    w(write):可写
    x(execute):可运行

    Linux中,访问权限按照用户来划分,即:
    d rwx rwx rwx
    • 下面一张图说明访问权限的标志符划分:

    Linux-用户权限标志符划分

    • 若rwx处对应的位置若为 - ,则表示没有相应权限,下面回到chmod命令的介绍

    • chmod不需要root来执行,但需要你是文件的所有者

    • chmod用法一:数字来分配权限

      然后使用三个数字组合在一起,代表三组用户rwx权限,例如(777):所有者,群组用户,其他用户均有读写和运行的权限。

      1
      chmod 777 file    # 改变file的权限为777
    • chmod用法二:字母

      1
      2
      3
      4
      5
      6
      7
      8
      u(user),表示所有者
      g(group),表示群组用户
      o(other),表示其他用户
      a(all),表示所有用户

      +:添加权限
      -:去除权限
      =:分配权限

    用法举例:

    文件file.txt的所有者添加读和运行的权限

    1
    chmod u+rx file.txt

    文件file.txt的群组用户移除写的权限

    1
    chmod g-w file.txt

    文件file.txt的所有用户添加运行权限

    1
    chmod +x file.txt

    -R 递归修改访问权限

    1
    chmod -R ...

三.文本编辑器——Nano

  • Ubuntu启动Nano

    1
    nano

    进入nano后,底部会有快捷键提示,^是Ctrl键

    1
    2
    # 用nano打开file.txt
    nano file.txt

    nano参数

    1
    2
    3
    -m		激活鼠标,可通过鼠标控制光标位置
    -i 激活自动缩进功能
    -A 激活智能Home键,光标自动回到缩进后
  • 设置Nano默认参数

    1
    2
    3
    4
    5
    6
    nano .nanorc
    set mouse
    set autoindent
    set smarthome

    # 上面设置等同于开启nano后默认参数为-miA
  • 修改全局Nano配置文件

    1
    sudo nano /etc/nanorc

    去除文件前的注释(#)即可

  • 通过.bashrc配置终端

    1
    2
    3
    4
    5
    #.bashrc文件位于家目录下
    nano ~/.bashrc

    #全局的.bashrc文件
    sudo nano /etc/bash.bashrc

    设置别名

    1
    alias name='command'

    还有很多可以修改的东西,不一一举例

    家目录下的.bashrc文件优先级要比系统/etc/bash.bashrc文件高

  • profile配置文件(非图形界面终端的配置文件)

    1
    2
    3
    4
    5
    #家目录下
    nano .profile

    #全局下
    sudo nano /etc/profile
  • 修改.bashrc和profile文件,重启生效,或者使用source命令:

    1
    source .bashrc

四.软件的安装

  • Debian一族软件包后缀为.deb,RedHat一族为.rpm

  • package:软件二进制安装包

  • dependency:软件包需要其他软件包作为运行基础,为依赖关系

  • repository:软件的仓库

  • 常用命令

    常用命令 描述
    sudo nano /etc/apt/sources.list 管理软件仓库
    sudo apt update 更新可安装的软件列表
    sudo apt search … 搜索软件
    sudo apt install … 安装软件
    sudo apt autoremove … 删除软件
    sudo apt upgrade 升级所有已安装的软件
    apt-cache show package_name 查询软件包信息
    sudo dpkg -i *.deb dpkg安装本地.deb软件包
    sudo dpkg -r … dpkg卸载软件

五.RTFM(Read The Fucking Manual)阅读手册

  • Ubuntu中使用命令安装一些缺失的手册

    1
    sudo apt-get install manpages-de manpages-de-dev manpages-dev glibc-doc manpages-posix-dev manpages-posix
  • 使用man命令查询

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 使用man命令查询ls命令使用手册
    man ls

    NAME:手册页对应的命令或函数名字,后接简单描述
    SYNOPSIS:概要
    DESCRIPTION:描述:包括所有参数及用法
    AUTHOR:命令的作者
    REPORTING BUGS:故障报告联系方式
    COPYRIGHT:版权(许可证)
    SEE ALSO:拓展阅读

    一般来说,前三个区域是最重要的
  • SYNOPSIS区域(以man mkdir为例)

    • mkdir:使用mkdir命令
    • [option]:选项,即参数
    • DIRECTORY:目录,必须参数
  • 小总结

    • 省略号代表可以拥有多个此类型参数
    • 粗体表示必须原封不动输入的字段,下划线表示要替换的实际内容,**[ ]**表示可选内容
    • a | b表示可以输入a或b选项,但不能同时输入
    • 具体可添加的参数在DESCRIPTION中查找
  • apropos 命令:查找命令

    1
    2
    # 举例:我想知道如何使用终端命令控制音量
    apropos sound
  • 其他查找命令(-h / whatis)

    1
    2
    3
    4
    5
    # 举例 使用-h查找man命令帮助文档
    man -h

    # 举例 使用whatis查找ls命令简单解释
    whatis ls

六.查找文件

  • locate 命令:快速查找

    1
    2
    # 搜索包含关键字的所有文件和目录(file.txt)
    locate file.txt

    但是这有个缺点:locate只能在文件数据库中查找,而Linux系统一般一天更新一次文件数据库,意味着你刚创建的文件是无法被locate查找到的,下面是解决办法

  • updatedb 命令:强制更新文件数据库(root用户可执行)

    1
    sudo updatedb
  • find 命令:深入查找

    1
    2
    find "where""what""what to do"
    其中"what"是必须指定的

    举例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #查找文件(file.txt)
    find file.txt
    find -name file.txt # 加上-name表示查找的是文件名

    #限定目录查找文件
    find /var/log -name "syslog"

    #使用通配符查找来匹配名字的多个文件
    find /var/log -name "syslog*"

    #根据文件大小查找 -size(正负 k/M/G)
    find / -size +10k

    #根据最近访问时间查找 -atime(几天内)
    find / -name "file" -atime -3

    #只查找文件或目录 -type(d/f)
    find / -name "file" -type -d

    #注意:以上命令没有限定位置查找,则会在当前目录及其子目录查找
    #输出Permission denied表示没有权限查找
  • find命令的"what to do"

    1
    2
    3
    find -name "file"
    find -name "file" -print
    # 上述命令等价,下面介绍一些其他的"what to do"参数
    • 格式化打印

      1
      find -name "file" -printf "%p - %u\n"
      • %p:文件名
      • %u:文件所有者
      • \n:换行
    • 删除查找到的文件(不会有确认提示)

      1
      find -name "file" -delete
    • 执行文件 (-exec / -ok)

      1
      find -name "file" -exec chmod 777 {} \;
      • 执行语句:{}会被查找到的文件替换,必须以;结尾
      • -ok可用来替换-exec,会对每个文件操作进行确认提示
  • locate命令与find命令差异

    • locate会查找所有包含关键字的文件,而find查找完全匹配"what"的文件

    • 下面用两张图比较locate与find命令

      Linux-locate查找文件

      Linux-find查找文件


下一篇文章推荐:Linux学习之旅3——数据流与进程(上)