Linux基础及常用指令

1.Linux目录结构

  1. bin(usr/bin,user/local/bin) #存放常用指令,如cp、cat、chown等
  2. sbin(usr/sbin,user/local/sbin) #高权限指令,super或则高权限用户可以使用的指令
  3. boot #启动时的核心文件,包括连接文件以及镜像文件
  4. opt #安装软件,给主机额外安装的软件可以存放在该目录下,存放软件文件
  5. usr/local #另一个给主机安装软件的目录,一般是通过源码编译方式安装的程序
  6. home #家目录,当创建普通用户时,home目录下回创建对应文件
  7. root #系统管理员的用户主目录
  8. dev #设备管理,包含cpu、disk等
  9. etc #存放配置文件
  10. lib/lib64 #动态库,大多为.so文件
  11. media #设备,当插入u盘、光驱后,会挂载到此目录下
  12. mnt #挂载,可以将外部存储挂载到该目录下
  13. proc #虚拟目录,是系统内存的映射,访问该目录可获取系统信息
  14. selinux #安全子系统,控制程序只能访问特定文件
  15. srv #service简写,存放服务启动之后需要提取的数据
  16. sys #系统文件夹
  17. tmp #临时文件夹
  18. var #变量,习惯性将经常被修改的文件放在该目录,例如日志信息

2.vi/vim快捷键

  1. yy #拷贝当前行,5yy拷贝当前行向下5行,并粘贴[p]
  2. dd #删除当前行,5dd删除当前行向下5行
  3. /关键字 #命名行模式下,/关键字 回车查找,输入n查找下一个
  4. :set nu/:set nonu #命令行模式,设置/取消行号,回车生效
  5. G/gg #G到达文件末行,gg到达文件首行
  6. u #撤销操作
  7. :set nu –> 行号 –> shift+g #跳转到指定行

3.关机重启

  1. shutdown

    shutdown -h now #立即关机
    shutdown -h 1 #1分钟后关机
    shutdown -r now #立即重启

  2. halt #直接使用,等价于关机
  3. reboot #重启
  4. sync #将内存数据同步到磁盘

    我们在关机或者重启之前都应执行sync命令,避免数据丢失

4.用户管理

  1. 添加用户

    useradd 用户名 #添加指定用户
    useradd -d 指定目录 用户名 #添加用户名时指定其家目录

  2. 添加/修改密码

    passwd 用户名 #给指定用户添加或修改密码

  3. 删除用户

    userdel 用户名 #删除用户,但是保留家目录
    userdel -r 用户名 #删除用户及其家目录

  4. 查询用户

    id 用户名 #查询用户信息

  5. 切换用户

    su - 用户名 #切换用户,高权限切换低权限时无需密码,反之需要
    使用exit命名可以切换回原来的用户

  6. 增加用户组

    groupadd 组名 #增加用户组

  7. 删除组

    groupdel 组名 #删除组

  8. 增加用户时指定组

    useradd -g 组名 用户名 #增加用户时,指定组

  9. 修改用户组

    usermod -g 组名 用户名 #修改用户所属组

  10. 查看当前用户

    whoami #who am i,查看当前用户

5.实用指令

5.1.指定运行级别

  1. init命令

    init [0123456]
    0 #关机
    1 #单用户,可用于找回丢失密码
    2 #多用户状态,无网络
    3 #多用户状态,有网络
    4 #保留
    5 #图形化界面
    6 #重启

使用单用户模式,找回root密码步骤:
关机 ->>开机时,按enter键,进入引导 ->>输入e,编辑引导 ->>选择kernel,输入e编辑内核
->>输入(空格+1),设置运行级别为1,按enter完成编辑,返回上一级 ->>输入b,开启引导
->>启动后处于单用户模式,即root身份进入,输入指令passwd root,即可设置新密码

5.2.帮助指令

  1. man命令

    man [命令或配置文件] #获取帮助信息

  2. help命令

    help 命令 #获取shell内置命令的帮助信息

5.3.文件目录指令

  1. pwd指令 #显示当前工作目录的绝对路径
  2. ls指令

    ls [选项] [目录或文件]
    ls -a #显示当前目录所有的文件及目录,包括隐藏的
    ls -l #以列表模式展示所有的文件信息

  3. cd命令

    cd [参数] #切换到指定目录
    cd ~ #回到自己的家目录
    cd .. #返回上一级目录

  4. mkdir命令

    mkdir [选项] 要创建的目录
    mkdir -p [多级目录] #创建多级目录

  5. rmdir命令

    rmdir [选项] 要删除的空目录

    rmdir删除的是空目录,如果目录下有文件,则无法删除,此时可以使用: rm -rf 要删除的目录

  6. touch命名

    touch 文件名 #创建一个空文件

  7. cp命令

    cp [选项] source dest #拷贝文件到指定目录
    cp -r source dest #递归拷贝整个文件夹至指定目录,重复文件会提示覆盖
    \cp -r source dest #递归拷贝整个文件夹至指定目录,重复文件直接覆盖,不会提示

  8. rm命令

    rm [选项] 要删除的文件或目录
    rm -r #递归删除整个文件夹
    rm -f #强制删除不提示

  9. mv命令

    mv oldFileName newFileName #文件重名名
    mv source dest #移动文件

  10. cat命令

    cat [选项] 要查看的文件
    cat -n 文件 #查看文件时显示行号

    cat指令会直接加载整个文件,因此常与管道符配合使用:cat -n 文件 | more
    把文件内容交由more显示,可一页一页的加载
  11. more指令

    more 要查看的文件 #more指令是基于vi编辑器的文本过滤器,它以全屏方式按页展示内容
    快捷键:
    空白键(space) #代表向下翻页
    Enter #代表向下翻一行
    q #表示立刻离开more,不再展示文件信息
    Ctrl+F #向下滚动一屏
    Ctrl+B #返回上一屏
    = #输出当前行号
    :f #输出文件名和当前行号

  12. less指令

    less 要查看的文件 #用来分屏查看文件,与more类似,但是比more强大。
    less加载文件时,并不是一次性加载所有内容,而是根据显示需求加载文件,对大型文件具有较高效率。
    空白键(space) #代表向下翻页
    [pageDown] #向下翻 一页
    [pageUp] #向上翻一页
    /字串 #向下搜寻字串,n:向下查找,N:向上查找
    ?字串 #向上搜寻字串,n:向上查找,N:向下查找
    q #退出less

  13. 输出重定向与追加

    > #输出重定向,会将原来的文件内容覆盖
    >> #追加,不会覆盖原文件,而是追加到末尾
    ls -l > a.txt #将列表内容写入a.txt,覆盖写。如果文件不存在,则创建
    ls -l >> a.txt #将列表内容追加写入a.txt,
    cat 文件1 > 文件2 #将文件1的内容覆盖到文件2
    echo 内容 >>文件 #将内容追加到文件

  14. echo命令

    echo [选项] [输出内容] #输出内容到控制台
    echo $PATH #输出Path环境变量

  15. head命令

    head 文件 #显示文件开头部分,默认输出前10行
    head -n 5 文件 #查看文件前5行内容

  16. tail命令

    tail 文件 #显示文件尾部,默认输出后10行
    tail -n 5 文件 #显示文件后5行
    tail -f 文件 #实时追踪文件所有更新,工作中常用

  17. ln命令

    ln -s [原文件或目录] [软连接名] #给原文件创建软连接,相当于win的快捷方式
    rm -rf 软连接名 #删除软连接时,不能在软连接名后带/,否则提示资源忙
    当我们用cd查看软连接时,看到的是对应目录的内容
    当我们使用pwd查看目录时,任看到是软连接所在目录,而非指向的目录

  18. history命令

    history #查看所有历史命令
    history 10 #查看最近使用的10条命令
    history !5 #执行编号为5的命令

5.4.日期指令

  1. date命令

    date #显示当前时间
    date “+%Y-%m-%d %H:%M:%S” #显示年月日时分秒
    date -s “2019-07-15 11:11:11” #设置系统时间

  2. cal命令

    cal #显示当前日历
    cal 2020 #显示2020年的日历

5.5.搜索查找类

  1. find命令

    find 指令将从指定目录向下递归的遍历其各个子目录,将满足条件或目录显示在终端
    find /home -name *.txt #查找home目录下,所有的txt文件
    find /home -user nobody #查找home目录下,所有用户名称为nobody的文件
    find /home -size +20M #查找home目录下,所有大于20M的文件 (+n 大于、-n小于、n等于)

  2. locate指令

    locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称以及路径的locate数据库事先快速定位指定文件。locate指令无需遍历整个文件系统,速度快。为了保证查询结果的准确度,需要定时更新locate。
    locate hello.txt #搜索hello.txt,快速定位
    由于locate指令基于数据库查询,所以第一次运行前,必须使用updatedb创建数据库。

  3. grep命名与管道符|

    grep 过滤查找,管道符"|"表示将前一个命名处理结果输出传递给后面的命令处理。
    cat hello.txt | grep -ni yes #在hello.txt中查找“yes”所在行,不区分大小写,并显示行号。-n 显示匹配行以及行号,-i忽略字母大小写

5.6.压缩与解压类

  1. gzip/gunzip命令

    gzip 文件 #压缩文件,只能将文件压缩为.gz文件。gzip压缩文件后不会保留原来的文件
    gunzip 文件.gz #解压缩文件命令

  2. zip/unzip命令

    zip xxx.zip hello.txt #压缩hello.txt文件为xxx.zip
    zip -r xxx.zip /home/ #压缩/home目录下的所有文件为xxx.zip
    unzip -d /opt/tmp/ xxx.zip #解压文件到指定文件夹,-d指定解压后文件存放目录

  3. tar命令

    tar 指令是打包指令,最后打包的文件是.tar.gz的文件
    tar [选项] xxx.tar.gz 打包的内容
    -c #产生.tar打包文件
    -v #显示详细信息
    -f #指定压缩后的文件名
    -z #打包同时压缩
    -x #解包.tar文件
    tar -zcvf a.tar.gz a.txt b.txt #将a.txt b.txt两个文件压缩为a.tar.gz
    tar -zcvf a.tar.gz /home/ #将home目录压缩为a.tar.gz
    tar -zxvf a.tar.gz #解压a.tar.gz到当前目录
    tar -zxvf a.tar.gz -C /opt/tmp/ #将a.tar.gz解压到指定目录,该目录必须先存在

5.7组管理与权限管理

  1. 文件/目录所有者

    ls -ahl #查看文件所有者
    chown tom a.txt #修改a.txt的所有者为tom
    chown -R tom /home/abc #-R表示递归,对文件以及所有的子目录改变所有者
    chgrp root a.txt #修改a.txt的所在组为root

  2. 改变用户所在组

    usermod -g 组名 用户名 #改变用户所在组
    usermod -d 目录名 用户名 #改变用户登录的初始目录

  3. 权限管理

    文件权限: -rwxrw-r-- 1 root root 2 Feb 2 09:39 abc
    1) 第0位确定文件类型:- 普通文件、d 目录、l 软连接、c 字符设备【键盘、鼠标】、b 块文件或硬盘
    2) 第1-3位确定所有者拥有的文件权限:r 读、w 写、x 执行
    3) 第4-6位确定所在组拥有的文件权限
    4) 第7-9位确定其他用户拥有的文件权限
    5) 1表示文件大小,如果是目录则是4096
    6) 第一个root 表示文件所有者、第二个root表示文件所在组
    7) 2,如果是文件表示的是硬链接的数,如果是目录则表示该目录的子目录个数
    8) 时间表示上一次操作的时间
    9) abc 表示文件名

    rwx对于文件:r表示可以查看读取查看、w表示可以修改,但是不代表可以删除文件,删除文件的前提是对文件所在的目录具有写权限、x表示可以执行
    rwx对于目录:r表示可以读取,ls查看、w表示可以修改,目录内创建+删除+重命名文件

    chmod u=rwx,g=x,o=x 文件目录名 #改变文件目录权限 u:所有者 g:所在组 o:其他人 a:所有人
    chmod u+x #给所有者加上执行权限
    chmod a-x #给所有人去掉执行权限
    chmod 744 文件目录名 #等价于 chmod u=rwx,g=r,o=r 规则:r=4,w=2,x=1

6.任务调度

任务调度:是指系统在某个时间执行特定的命名或程序

    1. 语法

      crontab [选项]
      -e #编辑crontab任务
      -l #查询crontab任务
      -r #删除当前用户所有的crontab任务

    2. 具体用法

      */1 * * * * ls -l /etc >> /tmp/to.txt

    3. 占位符说明

      第一个* #一个小时中的第几分钟【0-59】
      第二个* #一天中的第几小时【0-23】
      第三个* #一个月中的第几天【1-31】
      第四个* #一年中的第几个月【1-12】
      第五个* #一周中的星期几【0-7,0和7都表示周日】

    4. 特殊符号说明

      1) * #代表任何时间,比如第一个*表示每个小时每一分钟都执行
      2), #代表不连续的时间,比如 0 8,10,12 * * * 表示每天的8点0分,10点0分都执行
      3) - #表示连续的时间范围,比如 0 5 * * 1-3 表示周一到周三每天5点执行命名
      4) */n #代表每隔多久执行一次,比如 */10 * * * * 代表每隔10分钟执行一次

posted @ 2019-08-01 10:46  市井俗人  阅读(161)  评论(0编辑  收藏  举报