Linux基础知识(必知必会)

Linux基础知识及常用命令(必知必会)

文章目录

  • Linux基础知识及常用命令(必知必会)
      • Linux基础知识及命令
      • Vim编辑器
      • Shell
      • Linux常用命令、工具(find、sed、sort、grep、nc...)
      • Linux练习题

Linux基础知识及命令

  1. 常用快捷键

    ctrl + c 停止进程

    ctrl + l 清屏

    ↑ ↓键 查找执行过的命令

    tab键 补全、提示

    \ 从下行继续输入

  2. whereis、which、whoami

    1. whereis:该命令用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径

      whereis python

    2. which:查询该命令所在的目录,即执行的是哪一个位置的命令

      which python

    3. whoami:查询所登录用户的用户名

      whoami

  3. man

    基本语法:man [命令或配置文件] (作用:获取帮助信息)

    例:man ls

  4. pwd:显示当前工作目录的绝对路径

  5. hostname:显示主机名

  6. useradd、passwd、userdel

    1. useradd:添加新用户

      useradd hadoop01

    2. passwd:设置用户的密码

      passwd

    3. userdel:删除用户

      userdel hadoop01

  7. groupadd、groupdel

    1. groupadd:添加组

      groupadd hadoop01

    2. groupdel:删除组

      groupdel hadoop01

  8. ls:列出目录的内容

    例: ls -a 列出当前目录下的所有文件(包括隐藏文件,以 . 开头的)

    ​ ls -l (相当于 ll) 长数据串列出,每行列出的信息依次是 文件类型与权限 链接数 文件所属用户 文件所属组 文件大小用byte来表示 建立或最近修改的时间 名字

    ​ 文件权限:r w x - 的含义,r是读权限,w是写权限,x是写权限,-是没有对应的权限;也可以用数字表示读、写、执行权限,依次为4、2、1

    [hadoop01@hadoop01 shell]$ ll
    total 40
    drwxrwxr-x 2 hadoop01 hadoop01 4096 Nov  5 19:00 b
    lrwxrwxrwx 1 hadoop01 hadoop01    5 Nov  5 19:00 bbb -> b.txt
    -rw-rw-r-- 1 hadoop01 hadoop01    2 Nov  4 05:13 b.txt
    # -	        rw-	       rw-	       r--
    #文件类型  所属用户权限  所属组权限  其他用户权限
    #第一个字符  - 表示是一个文件  d 表示是一个目录  l 表示是一个软连接
    
  9. cd:Change Directory切换路径

    例: cd … 返回上级目录( … 表示上级目录,. 表示当前目录)

    ​ cd ./tmp 切换到当前目录下的tmp目录

    ​ cd /opt/data 切换到根目录下的data目录

    ​ cd ~ 或 cd 切换到用户家目录

    ​ cd - 切换到上一次所在目录

  10. mkdir:创建目录,加 -p 选项创建多级目录

    例: mkdir tmp 在当前目录下创建一个tmp目录

    ​ mkdir -p /opt/data/hive 在根目录的opt目录下创建data目录,data目录下再创建hive目录

  11. rmdir:删除空目录,只有目录为空时才可删除

  12. rm:删除文件;-r (recursion)递归删除,-f (force)强制删除,不需要询问

    例:rm -rf /opt/data/hive 删除/opt/data/hive目录及目录下的所有文件

  13. touch:创建一个空的文件

    例:touch student.txt 在当前目录下创建一个内容为空的student.txt

  14. vim:编辑文件

    例:vim teacher.txt 在当前目录下编辑teacher.txt文件;如果当前目录下没有这个文件,使用vim编辑并保存后也会存在

  15. cp:复制文件; -r 递归复制整个文件夹

    例:cp teacher.txt /opt/data/school/ 复制当前目录下的teacher.txt文件到/opt/data/school/目录下

    ​ cp -r /opt/data/school/ /opt/data/school2 复制school文件夹下的所有文件到school2目录下

  16. mv:移动文件或重命名文件 源目录和目的目录一样的话就是重命名文件

    例:mv /opt/data/demo01.txt /opt/data/demo02.txt 对文件demo01.txt重命名为demo02.txt

    ​ mv demo01.txt /tmp 把当前目录下的demo01.txt 移动到 /tmp 目录

  17. cat、more、less、head、tail

    1. cat:查看文件内容,一般小文件用 cat 查看,加 -n 参数可以显示行号

      cat student.txt

    2. more:分页显示文本文件的内容;空格键向下翻一页,enter键向下翻一行,q 或 ctrl+c 退出more

      more student.txt

    3. less:和more功能相似;↑ ↓ 键翻页,与more有以下几点区别

      less student.txt

      1. more不能后退,只能向下翻页;less可以查看前面的,也可以查看后面的
      2. less不必读取整个文件,加载速度会比more快,对于显示大型文件具有较高的效率
      3. less退出后,不会在shell留下刚显示的内容,而more会
    4. head:不加参数时默认查看文件前10行;加 -n数字 表示从第一行开始显示多少行

      head -n5 student.txt

    5. tail:不加参数时默认查看文件后10行;加 -n数字 表示从最后一行开始显示多少行

      tail -n5 student.txt

  18. echo:输出内容到控制台

    echo "hello world"
    
  19. su、sudo:

    1. su:切换用户

      su hadoop01 切换到hadoop01用户

      su 切换到root用户

    2. sudo:临时切换到root用户来执行当前命令
      sudo vim /etc/sudoers 临时切换到root用户来编辑/etc/sudoers文件

      普通用户使用sudo 须在 /etc/sudoers 文件中添加:

      用户名 ALL=(ALL) NOPASSWD: ALL

  20. >、>>

    1. >:覆盖目标文件,文件原有内容将被覆盖;如果目标文件不存在的话会被创建

      echo "helloworld" > hello.txt
      
    2. >>:追加到目标文件;如果目标文件不存在的话会被创建

      echo "helloworld" >> hello.txt
      
  21. history:查看执行过的历史命令

    history
    
  22. ln:连接; -s 软连接,相当于windows里的快捷方式,不指定参数时创建硬连接相当于复制一份文件

    #在当前目录下创建一个student.txt文件的软连接
    ln -s  student.txt  student.ln  
    
    #相当于复制当前目录下的student.txt 到 student文件
    ln  ./student.txt  student    
    
  23. date、cal:

    1. date:显示系统时间
    2. cal:查看日历
  24. chmod、chown、chgrp

    1. chmod:更改文件权限

      #将/opt/data目录下的所有文件改为777权限
      chmod  -R 777 /opt/data  
      
      #所属用户增加可执行权限
      chmod u+x student.txt
      
      #所属用户、所属组、其他人都去掉写权限
      chmod -w  student.txt
      
    2. chown:更改文件所属用户 -R 递归

      #将student.txt文件的所属用户和所属组改为hadoop01
      chown -R hadoop01:hadoop01  student.txt   
      
    3. chgrp:更改文件所属组 -R

  25. exit:退出当前登录的用户

  26. kill:杀死进程

    kill -9 10111 强制杀死进程号为10111的进程

Vim编辑器

vim分为三种模式:一般模式(默认模式,使用vim编辑文件时直接进入一般模式)

​ 编辑模式(可以对文档进行编辑,输入 i、I、o、O、a、A从一般模式进入编辑模式,esc返回一般模式)

​ 指令模式(也叫最后行模式,通过输入:从一般模式进入指令模式,esc返回一般模式)

一般模式:可以进行复制、粘贴、删除行、移动光标等操作( 需以英文输入法输入)

语法 功能
yy 复制光标当前所在行
数字yy 复制从当前光标所在行开始的几行
dd 删除光标当前所在行
数字dd 删除从当前光标所在行开始的几行
p 从当前光标所在行的下一行开始粘贴
u 撤销上一步的操作
gg 移动光标到文件的第一行
G 移动光标到文件的最后一行
数字 +G 移动到第几行(先按3,再按G,移动到第三行)
shift + ^ 移动光标到行首
shift + $ 移动光标到行尾
i 、I (进入编辑模式) i 从光标前开始插入、I 从光标所在行首开始插入
a、A(进入编辑模式) a从光标后开始插入、A从光标所在行尾开始插入
o、O(进入编辑模式) o 从光标所在行的下一行插入、O从光标所在行的上一行插入

编辑模式:在一般模式下按i、I、a、A、o、O对文件进行编辑,按esc返回一般模式

最后行模式:进行显示行号、查找、替换、退出并保存(:wq)、强制退出(:q!)等操作

:set nu 显示行号 (临时显示)
:set nonu 取消显示行号
:/关键词 或 :?关键词 搜索关键词并高亮显示(切换搜索结果:n下一个 N上一个 next;?搜索中n为上一个)
:nohl 取消高亮显示(no high light)
:s/搜索的关键词/替换的关键词 对光标所在行的第一个搜索结果进行替换
:%s/搜索的关键词/替换的关键词/g 对整篇文档所有行的所有搜索结果进行替换 %表示整篇文档,g表示全局global

Shell

  1. 变量

    1. 系统变量:系统已经定义好的

      例:$SHELL $HOME $PWD

    2. 自定义变量:

      定义变量:变量名=值

      ​ readonly 变量名=值

      ​ =两边不能有空格; 只读变量,不能用unset删除;变量名由字母数字下划线组成,不能以数字开头;值中有空 格,需用括号括起来

      删除变量:unset 变量名

  2. $n、$#、$*、$@、 $?

    $n: 命令行参数 $1表示命令行输入的第一个参数 从第十个参数开始用{}括起来 ${10}

    $#: 命令行输入的参数个数

    $*: 代表命令行中所有的参数,把所有的参数看成一个整体

    $@:代表命令行中所有的参数,每个参数区分对待,可迭代

    $?: 最后一次执行的命令的返回状态 0执行成功 非0执行失败

  3. 运算符

    $((运算式)) 或 $[运算式] 或 expr

    例:echo $(( 3 + 2))
    例:expr 3 + 2

  4. 条件判断

     [ condition ](注意condition前后要有空格)
    

    ​ 1.字符串判断

    ​ [ 字符串 ] 字符串不为空则true

    ​ = 字符串是否相等 != 字符串是否不相等

    ​ [ -z 字符串 ] 如果字符串的长度为零则为真 ,即判断是否为空,空为真;zero
    ​ [ -n 字符串 ] 如果字符串的长度非零则为真 ,即判断是否为非空,非空为真;

    ​ 2.整数数值大小判断

    ​ -lt 小于(less than) -le 小于等于(less equal)

    ​ -eq 等于(equal) -gt 大于(greater than)

    ​ -ge 大于等于(greater equal) -ne 不等于(Not equal)

    ​ 3.文件权限判断

    ​ -r 有读的权限(read) -w 有写的权限(write)

    ​ -x 有执行的权限(execute)

    ​ 4.文件类型判断

    ​ -f 文件存在并且是一个常规的文件(file)

    ​ -e 文件存在(existence) -d 文件存在并是一个目录(directory)

  5. 流程控制:

    1. if

      if [条件判断] then elif then else then fi

    2. case

      case [变量] 值1)命令 ;; 值2)命令 ;; *)命令 ;; esac

    3. while

      while [条件] do 命令 done

    4. for

      for (( 初始值;循环控制条件;变量变化 )) do 命令 done

      for i in 集合 do 命令 done

  6. read从控制台读取:

    read -p “请输入一个数字:” -t 10

    -p 读取时的提示符 -t 读取等待的时间(秒)

Linux常用命令、工具(find、sed、sort、grep、nc…)

  1. find:查找文件

    语法:find [搜索范围] [选项] -name 按名称匹配查找 -size 按文件大小查找 -user 按用户名查找

    find / -name “*.tmp” 查找根目录下 后缀为 .tmp 的文件

    find ./ -size +100 查找当前目录下大于100M的文件 +大于 -小于 否则等于

    find ./ -size -6k 查找当前目录下小于6k的文件,k得为小写 M G 为大写

    find ./ -user hadoop01 查找当前目录下所属用户为hadoop01的文件

    find ./ -mtime 0 查找近24小时内修改过的文件

    find ./ -atime 1 查找之前48~24小时内进入过的文件

    find ./ -cmin -30 查找30分钟前创建的文件

  2. grep:用正则表达式搜索,并把匹配的行打印出来;常与管道符“|” 一起用

    用法:grep [参数] 正则 filename

    -E 解释正则表达式为扩展正则表达式

    -i 搜索时忽略大小写

    -v 选择没有被匹配到的行

    -w 匹配整个单词,即单词的两边是非字符符号(不能是字母数字下划线)

    -o 只输出匹配的具体字符串,匹配行的其他内容不会被输出

    –color 高亮显示

    -A 数字 匹配搜索到的行及该行下面的几行

    -B 数字 匹配搜索到的行及该行上面的几行

    -C 数字 匹配搜索到的行及该行的上下个几行

    例:ps -ef | grep java 查找java相关进程

  3. sort:对文本文件内容进行排序

    -n 按照数值进行排序

    -r 以相反的顺序排序(默认升序)

    -k1 按照分区1 进行排序(同理k2、k3…)

  4. uniq:去重(注意去重规则是前后行进行比较看是否相同,当重复的行不相邻时uniq是不起作用的)

    -c 在每列旁边显示该行重复出现的次数

  5. cut:剪切文件中的数据

    用法:cut [选项参数] filename (默认分隔符为制表符)

    ​ -d 指定分隔符 -f 指定提取切割后的第几列 -c 指定具体字符

    例:使用冒号为分割符切开 然后取第6列
    cat /etc/passwd | grep hadoop01 | cut -d : -f 6     
    
  6. sed:流编辑器,一次处理一行,并将处理后的数据输出,源文件的内容并不会改变( 加 -i 参数就可以直接对文件进行修改)

    用法:sed [选项参数] ‘command’ filename

    ​ 选项参数:-i 编辑文件 -e 直接在指令列模式上进行sed的动作编辑

    ​ command参数: a 在下一行添加 d 删除匹配行 s 替换

    #例:在第三行后添加一行 libai
    sed '3a libai' hello.txt   
    
    #替换匹配到apache改为dog    g是全局替换
    sed 's/apache/dog/g' /etc/passwd
    
    #直接在文件第三行后添加一行libai   文件内容改变
    sed  -i  '3a libai' hello.txt  
    
    #模式匹配以apache开头的行并d删除    /模式匹配/
    sed '/^apache/d' /etc/passwd
    
  7. awk:把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理,一行处理完输出一次

    用法:awk [选项参数] ‘pattern1{action1} pattern2{action2}…’ filename pattern模式匹配的模板 action是执行的命令

    ​ -F 指定输入行的分割符

    #例:一行如果可以匹配多个模式匹配的话,会执行相对应的action
    awk '/^apache/{print} /^apache/{print "two"}' /etc/passwd    
    
    # 读入文件/etc/passwd的每一行匹配以apache开头的行并以:切分,打印第6段
    awk -F : '/^apache/{print $6}'  /etc/passwd
    
    # 读入文件/etc/passwd,先定义sum = 0,然后对按:切分的第三段求和,每处理一行输出一次$3" "sum,最后都处理完在输出"sum = "sum
    awk -F : 'BEGIN{sum = 0}{sum += $3}{print $3" "sum}END{print "sum = "sum}'  /etc/passwd
    
  8. crontab:定时任务

    用法:crontab [-u username] [参数] (省略用户时,表示在当前用户下操作定时任务)

    -e 编辑任务 -l 列出任务 -r 删除任务

    crontab -e 进入当前用户的定时任务编辑时,每行是一条任务,由 时间 + 命令 组成

    ​ 时间组成为: 分 时 日 月 周 *表示所有 / 表示每 - 表示范围,从几到几 ,表示散列值

    例:* * * * * echo “hello” >> /opt/data/hello.txt 每分钟向/opt/data/hello.txt追加"hello"

    ​ 0,30 7-11 * * * /bin/bash /opt/data/echo.sh 每天的七点到十一点的第0和第30分 执行echo.sh脚本

    ​ * 23-5/1 * * * echo “hello” >> /opt/data/hello.txt 每天的晚上11点到凌晨5点期间,每隔一小时追加hello到hello.txt

  9. netstat:查看网络信息和端口占用情况

    使用方式:netstat -tunlp

    ​ netstat -anlp

    ​ sudo netstat -tunlp | grep mysqld 以进程名或PID来过滤

    t 表示通信协议为tcp u 为udp n 以数字显示 a 显示所有连线中的socket l 仅列出在监听listen状态 p 显示哪个进程在调用

  10. nc:网络工具,可以作为server等待连接

    用法: nc [参数] [hostname] [port]

    ​ nc -lk hadoop01 44444

    ​ l 作为server监听等待连接 k 强制nc待命连接;当连接断了之后,nc过一段时间也会停止监听,-k使server保持监听

  11. ps:显示进程信息

    ps -ef 显示所有进程信息,连同命令行

  12. top:显示进程信息,显示cpu、内存等信息

    top -p 123 显示123进程号的进程信息

  13. free:查看内存使用情况

    free -m 以M为单位显示内存信息

  14. df:查看磁盘的使用情况

    df -h

Linux练习题

  1. 找出10天前修改过的文件

    find ./ -mtime 0 -o -mtime 1 -o -mtime 2 ……-o -mtime 10

  2. 统计文件中单词的出现次数

    #文件内容
    hello world
    hello
    name hello hello
    zhangsan zhang
    zhangsan zhangsan
    

    cat wordcount.txt | grep -o -E ‘[a-z]*’ | sort | uniq -c | sort -nr -k1

  3. 查询文件 b.txt 中空行所在的行号
    awk ‘/^$/{print NR}’ b.txt

  4. Shell脚本里如何检查一个文件是否存在

    #!/bin/bash
    if [ -e b.txt ]
    then
            echo "文件存在"
    else
            echo "文件不存在"
    fi
    
  5. 使用grep命令匹配有hello的行及其下面1行内容并显示行号

    [hadoop01@hadoop01 shell]$ cat wordcount.txt | grep -A 1 -n 'hello'
    1:hello world
    2:hello
    3:name hello hello
    4-zhangsan zhang
    
    

此为个人学习笔记,更多知识点细节、参数、使用方式请到网上查找

个人推荐:
https://zhuanlan.zhihu.com/p/74935718

https://blog.csdn.net/xie_qi_chao/article/details/92772171

你可能感兴趣的:(linux)