Linux基础知识(必知必会)

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

内容简介 本书论及了嵌入式工程师职业生涯的方方面面。首先分析了嵌入式工程师必备的技能条件,讲述了掌握这些技能的学习途径。然后结合实际讨论了设计小型嵌入式系统时经济使用的自底向上方法和设计大型嵌入式系统时经常使用的自顶向下方法。最后讲述了嵌入式工程师的3 种职业道路—做自由职业者、为小公司工作以及为大公司工作,分别讨论了每种职业道路的优热和风险,为嵌入式工程师的职业选择提供了理论指导和借鉴参考。 本书不仅适合各层次嵌入式技术人员阅读,而且对于想要成为嵌入式工程师的其他职位人员,甚至是在校学生,都具有实际的指导意义。 目录 第1章 引言 1 1.1 关于本书 1 1.2 什么是嵌入式工程师 2 第2章 学习与教育 4 2.1 进入嵌入式工程领域的传统教育模式 4 2.2 非传统教育模式进入嵌入式工程领域 9 2.3 如果想编写嵌入式软件,那么至少要学习多少电子学知识 18 2.4 教育方面的陷阱、死胡同,以及必须规避的培训骗局 21 2.5 必需掌握的实践技能 25 第3章 自学自底向上的设计方法(小型嵌入式系统) 28 3.1 目标读者 28 3.2 intel 8051微控制器及其变种 31 3.3 atmel avr微控制器 39 3.4 ti msp430微控制器 46 3.5 microchip picmicro微控制器 52 3.6 满足特殊需求的异常架构微控制器 58 3.7 我应该学习什么编程语言呢?c++、c、汇编语言在小型嵌入式系统中 61 3.8 防盗版开发工具简介 65 3.9 基于avr微控制器和免费工具的8位嵌入式项目实例 67 第4章 自学自顶向下的设计方法(大型嵌入式系统) 93 .4.1 目标读者 93 4.2 嵌入式x86解决方案 94 4.3 arm处理器 103 4.4 powerpc 112 4.5 linux操作系统 114 4.6 ecos操作系统 121 4.7 面向大型嵌入式系统开发,应该学习什么编程语言 123 4.8 处理器选择的最后建议 124 第5章 做自由职业者 127 5.1 你适合做自由职业者吗?其中的风险与好处 127 5.2 从兼职工作到自由职业者——记账、纳税与工作量 128 5.3 寻找并维护客户的方法 130 5.4 迭代式项目:无休无止的噩梦 133 5.5 适当地为自己的服务定价 136 5.6 为自己建立良好的工作实践 138 5.7 不仅仅是握手:合同的重要性 140 第6章 在小公司工作 143 6.1 分析自己的目标:小公司的优势和风险 143 6.2 如何获得一份工作 144 6.3 小公司里的责任和压力 146 6.4 在小公司里的个人原动力 148 6.5 严格管理有限的资源 149 6.6 任务细目分类:一周的典型工作 153 第7章 在大公司工作 154 7.1 分析自己的目标:大公司的优势与风险 154 7.2 如何获得一份工作 155 7.3 全球化:项目外包与临时工作签证 157 7.4 管理规程与个人:不要触犯了公司的管理规程 162 7.5 管理与营销的关系 166 7.6 任务细目分类:一周常见工作 168 第8章 结束语 170
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值