Linux:入门基础 常用命令 面试必学

Stella981
• 阅读 464

操作系统

  • Windows 10

操作系统的分类

  • 桌面操作系统
  • 服务器操作系统
  • 嵌入式操作系统
  • 移动设备操作系统

桌面操作系统

  • Window 系列
  • macOS
  • Linux

服务器操作系统

  • Linux
  • Windows Server

嵌入式操作系统

  • Linux

Linux分类

  • 商业版 Redhat
  • 稳定版 6.4 6.6 6.8 7.0(偶数)
  • 开发板 6.5 5.7 6.9 (奇数)
  • 免费版 CentOS
  • 稳定版6.4 6.6 6.8 7.0
  • 开发板 6.5 5.7 6.9

界面最好的

  • Ubuntu

国内的

  • 红旗
  • 中标麒麟

Linux 系统需要记住的目录

  • /etc: 系统配置,启动程序
  • /home:普通用户的家,目录默认数据存放目录
  • /mnt:临时挂载储存设备的挂载点,u盘插入光驱无法使用,需要挂载然后使用
  • /opt:额外的应用软件包
  • /root:Linux超级权限用户root的家目录
  • /tmp:临时文件目录,这个目录被当作回收站使用

文件夹的增删改查

  • 添加:mkdir 文件夹名
    mkdir –p 文件夹名

  • 删除:rm –rf 文件夹路径

  • 修改:mv 要修改的文件夹路径(名) 修改后的文件夹路径 (名)

  • 查询:ll [-a]
    ls [-a] [-l]

  • 复制:cp [-a/-r] 原文件夹 目标文件夹

文件的增删改查

  • 添加:touch 空文本
    echo ‘内容’ > 或 >> 文本

  • 删除:rm –rf 文件路径(名)

  • 修改:mv 修改前文件路径(名) 修改后文件路径(名)

  • 查询:ll [-a]
    ls [-a] [-l]

  • 查看内容
    前10行:head 文件名
    head -10 文件名
    后10行:tail -10 文件名
    后n行:tail -n 文件名

  • 查看所有
    cat 文件名

  • 数据过滤
    grep [参数] 关键字 文件名

  • 编辑:vi 或者 vim

其他

  • 当前所在的目录:pwd
  • 清空屏幕:clear
  • 软连接:ln -s 目标文件绝对路径 快捷方式路径
  • 帮助文档:命令+ --help
  • &&:前面的命令执行成功再执行后面的。
  • ||:前面的命令执行失败再执行后面的。

Vi编辑器的常用命令

VI编辑器的三种模式

  • 命令模式
  • 编辑模式
  • 末行模式

末行模式

  • 保存并退出 :wq 或者 x!
  • 不保存强制退出 :q!

行内移动

  • 以单词为单位向后移动 w
  • 以单词为单位向前移动 b
  • 光标移动到行首 0 或者 ^
  • 光标移动到行尾 $

行数移动

  • 移动到首行 gg
  • 移动到尾行 G
  • 定位到某一行 数字gg 或者 数字G 或者 :数字

段落

  • 以段落为单位后移 }
  • 以段落为单位前移 {

撤销

  • 撤销命令 u
  • 取消撤销/恢复撤销 Ctrl+r

删除文本

  • 删除多行 数字dd
  • 删除一行 dd
  • 在光标所在的位置删除至行尾 D
  • 在光标所在的位置删除至行首 d0 或者 d^
  • 剪切 x

复制

  • 复制多行 数字yy
  • 复制一行 yy
  • 粘贴 p

替换的命令

  • 替换的是光标所在的位置以及后面的数据 R
  • 只替换光标右侧的第一个字符 r

文件夹内查找

  • 通过文件名指定路径查找 find 路径 -name *.txt
  • 通过文件名在当前路径查找 find -name *.txt

文件内查找

  • /查找的内容
  • 向上查找 N
  • 向下查找 n

文件内替换

  • :%s/旧文本/新文本/g [c]

压缩命令

  • gzip
    压缩文件 tar zcvf 压缩文件名.tar.gz 被压缩的文件/文件夹
    解压压缩文件 tar zxvf 压缩的文件名.tar.gz -C 路径

  • bzip2
    压缩文件 tar jcvf 压缩文件名.tar.bz2 被压缩的文件/文件夹
    解压压缩文件 tar jxvf 压缩的文件名.tar.bz2 -C 路径

关机

  • halt

重启

  • reboot

用户权限

  • drwxr-xr-x. 2 root root 4096 9月 14 23:15 aa (如下解释)

  • d:表示文件夹

  • rwx:当前用户具备的权限

  • r-x:当前用户所属的组具备的权限

  • r-x:其他用户所具备的权限

  • root:文件所属的用户

  • root:文件所属的用户所属的组

  • 4096 :文件大小

  • 9月:文件创建的月份

  • 14 23:15:文件创建的日期

  • aa:文件名

  • 读权限:数字表示4

  • 写权限:数字表示2

  • 执行权限:数字表示1

  • 读写执行能够构成的数字和是1、2、3、4、5、6、7

用户和组的添加

  • 组的操作

    • 添加组 groupadd 组名
    • 删除组 groupdel 组名
    • 查询当前所有的组 cat /etc/group
    • 修改组 chgrp 组名 文件/目录名
  • 用户的操作

    • 添加用户同时指定组 useradd -g 组名 用户名
    • 添加用户 useradd 用户名 【未指定组时,创建一个与用户名相同的组】
    • 删除用户(删除家目录):userdel –r 用户名
    • 查看当前用户 cat /etc/passwd
    • 为用户设置密码 passwd 用户名

用户切换

  • Su 用户名
  • Root用户 切换到普通用户无需密码,普通用户之间切换需要密码
  • 退出用户 exit
  • 普通用户临时借用root权限使用sudo 命令【普通用户已经添加到/etc/sudoers文件中】

修改权限

  • chmod [-R] 777 文件名/文件夹名
  • chmod +/- rwx 文件名|目录名
  • chmod -R u=rwx,g=rwx,o=rwx 文件名|目录名

修改文件所属的组

  • chown -R 新用户:新用户的组 文件名/文件夹名

其他命令

  • 获取当前日期:date
  • 更新当前日期:date -s “yyyy-MM-dd HH:mm:ss”
  • 查看磁盘空间:df -h
  • 查看某一目录所占空间大小:du -h
  • 查看进程详细信息:ps aux
  • 查看cpu内存等使用情况:top
  • 杀死某一进程:kill [-9] 进程号
  • 查看内存使用率:free –h [-m/-g]

Cut

  • 按照字符提取 head -2 1.txt | cut -c 5
  • 指定分隔符 head -2 1.txt | cut -d ‘:’ -f 1,2

Sort

  • 文本排序 sort 文件名
  • 文本排序反转 sort -r 文件名
  • 文本排序去重 sort -u 文件名
  • 数值按大小排序 sort -n 文件名
  • 指定分隔符、指定排序列 sort -t ‘分隔符’ -k2nr 文件名

Wc

  • 查看文件基本信息 wc 文件名
  • 查看文件行数 wc – l 文件名
  • 查看文件单词数 wc -w 文件名
  • 查看文件字节 wc -c 文件名
  • 查看多个文件信息 wc 文件1 文件2 文件3

Uniq

  • 与sort连用
  • 排序、去重 cat 5.txt | sort | uniq
  • 排序、去重计算总数 cat 5.txt | sort | uniq -c

Tee

  • 数据定位到多个文件 cat 5.txt | tee a.txt b.txt c.txt

Tr

  • 小写i 替换成 echo “itheima” | tr ‘i’ ‘I’
  • 把 HELLO 转成 小写 echo “HELLO” |tr ‘[A-Z]’ ‘[a-z]’
  • 删除数字 echo ‘abc1d4e5f’ | tr -d ‘[0-9]’

Split

  • 按照文件大小切分 split -b 10k 被切分的文件
  • 按照行数进行切分 split -l 1000 被切分的文件

Awk

  • 模糊查询 awk ‘/条件/’ 文本名
  • 按照分隔符拆分,根据角标显示

awk -F ‘,’ ‘{print $1, $2, $3}’ 1.txt

  • 按照分隔符拆分,根据角标显示并指定分隔符
    awk -F ‘,’ ’ {OFS="==="}{print $1, $2, $3}’ 1.txt

  • 支持函数
    _awk -F ‘,’ '{print toupper($2),$3_100}’ 1.txt

If判断语句

  • awk -F ‘,’ ‘{if($4>60) print $1, $4, “及格”; else print $1, $4, “不及格”}’ score.txt

Shell编程

Shell 脚本的解释器

  • /bin/sh
  • /bin/bash
  • /sbin/nologin
  • /bin/dash
  • /bin/tcsh
  • /bin/csh

脚本的编写规范

  • 首行描述解释器 #!/bin/bash

执行脚本的三种方式

  • bash 脚本名称 脚本参数
  • sh 脚本名称 脚本参数
  • /脚本名称 脚本参数【./脚本名称之间没有空格】【chmod 777 脚本名称】

变量的声明

  • 变量名=”值”【中间不能有空格】
  • 变量名要求 字母或下划线或数字(开头不能是数字)构成

变量的引用

  • 使用$ 或 ${}引用变量
  • 删除变量 只读变量
  • 删除 unset 变量名
  • 只读 readonly 变量名

字符串使用

  • 双引号(””):内部可以使用变量
  • 单引号(‘’):内部所有的原样输出
  • 反引号(``):表示可执行

字符串长度及截取

  • 长度: echo ${#skill}
  • 截取: echo ${str:2:2} 【在第二个字符开始截取截取两位】

脚本参数传递

  • bash 脚本名 参数1 参数2 参数3 。。。。。。
  • 脚本内
  • $0 脚本名称
  • $1 参数1
  • $2 参数2
  • $n 参数n
  • $* 所有参数
  • $# 参数的个数

算数运算符

  • 加法计算 expr 2 + 2
  • 乘法计算 expr 2 \* 2

流程控制if

  • if [ $a -gt 10 ];then
    代码1
    elif [ $a -lt 10 ];then
    代码2
    else
    代码3
    fi

关系运算符

  • 大于:-gt
  • 小于:-lt
  • 大于等于:-ge
  • 小于等于 :-le
  • 小于:-eq
  • 不等于 :-ne

循环

  • For 循环:
    For aa in XXXX
    do
    循环体
    done

  • While循环:
    While 条件 ;
    do
    循环体
    done

跳出循环

  • 跳出所有循环:break
  • 跳出当前循环,进入下一次循环:continue

case ()

  • case 值 in
    结果1)
    结果1对应的操作;;
    结果2)
    结果2对应的操作;;
    结果3)
    结果3对应的操作;;
    esac

接收控制台数据

  • read 变量名

函数的使用

  • 函数声明:
    [function] 函数名(){
    函数体
    $参数1
    $参数2
    $参数3
    }

函数调用

  • 函数名 参数1 参数2 参数3

数组

  • 数组声明: 数组名称=(元素1 元素2 元素3 元素4)

数组的使用

  • 单个使用 echo 数组名[角标] 【角标从0开始】
  • 遍历数组
    for var in ${my_arr[*]}
    do
    echo $var
    done

文件加载

  • 在文件中添加 . 脚本名称 或者 source 脚本名称
    #!/bin/bash

  • source ./test1.sh :加载test1.sh 的文件内容

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Wesley13 Wesley13
2年前
VirtualBox导入已安装好的操作系统的方法
VirtualBox导入已安装好的操作系统的方法1、修改UUID进入VirtualBox安装目录,运行VBoxManage修改UUID,命令运行如下:D:\\VirtualBoxVBoxManage.exe internalcommands setvdiuuid E:\\VirtualX
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这