• Linux基本认识及指令


    1. Linux用户管理

    1.1 创建用户

    在root用户下:

    //创建用户
    	adduser zhangsan
    //给用户设置密码
        passwd zhangsan
    
    • 1
    • 2
    • 3
    • 4

    此时按照提升输入密码即可,以后就可以用此账号登录Linux。可以自己用,也可以账号共享。

    1.2 删除用户

    在root用户下:

    //删除用户
    userdel -r zhangsan
    
    • 1
    • 2

    2. 什么是操作系统?

    OS是一款用来对软硬件资源进行管理的软件。管理目的:对上,对下,提高操作效率。

    2.1 为什么要有操作系统(OS)?

    (1)单纯的硬件计算机,操作起来效率特别低下,难度特别高。我们平常使用printf,cout(软件)向显示器(硬件)打印,本质上就是向硬件写入数据。

    (2)对下要管理好软硬件资源。

    (3)对上给用户提供一个良好的、稳定的、高效的运行环境。

    2.2计算机体系结构

    底层是硬件,其上是驱动软件层。很显然,软件可以操作硬件。

    驱动软件层可以帮上层实现对硬件的基本访问,它能为上层提供访问硬件的接口。就好比我们写了一个类,类中各种各样的成员函数为外界提供了各种各样的接口,以便类可以很好地使用。

    一般而言,一种硬件,都会有厂商提供相应的驱动软件,并且获取驱动的方式是有OS帮我们获取和安装的。

    再往上就是OS kernel层。狭义上讲就是我们所说的操作系统。

    它包括四层:1. 进程管理 2.文件管理 3.内存管理 4.驱动管理

    最上层就是用户层。它包括图形化界面、各种库以及应用程序。

    我们可以类比一下银行系统:

    image-20220708143821185

    Linux操作系统也是操作系统的一种,也要遵循以上操作系统的规则。

    企业的后端就是Linux操作系统。

    3. 基本指令

    (1)为什么要进行指令操作:非专业人员没必要。专业人员,可以必要,也可以不必要。

    但是对于我们学习OS原理、编程,指令操作必须要掌握。

    (2)图形化界面不香吗?

    我们要使用图形化界面,就必须要有鼠标。要敲指令,就必须得有键盘。而键盘是先出现的。

    所有的操作系统,刚开始都是指令操作。但是为了让计算机商业化,必须讨好用户,才有了图形化界面。

    (3)因为指令距离OS更近,便于我们更好的掌握OS。

    3.1 ls

    **语法:**ls 【选项】【目录或文件】

    文件 = 文件内容 + 文件属性

    我们曾经或将来要学的所有文件操作,无非两类:

    1. 对文件的内容操作
    2. 对文件的属性操作

    在任意目录下,都会存在两个隐藏文件 (**.**当前路径 **…**上级路径)

    Linux的路径分隔符是**/**,Windows的路径分隔符是 \

    我们可以一路cd .. 回到上级路径,当我们回到**/**(根目录)就不能回退了。回来就必须用cd 路径回来。

    ./a.out表示执行当前路径下的a.out程序(gcc/g++源文件获得)。如果不加点会报错:command not found

    ls      	// 只显示文件名
    ls -l   	// 显示文件的更多属性
    ls -a       // 显示隐藏文件(linux中以.开头的)
    ls -al      // 2和3指令的组合
    ls -i       // 显示文件编号(索引)
    ls -n       // 显示用户编号(索引)
    ls -F       // 在文件名后带标定符  '*'表示可执行程序 “/”表示目录
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.2 pwd

    显示用户当前所在的目录。

    3.3 cd

    Linux系统中,磁盘上的文件和目录被组成一棵目录树,每 个节点都是目录或文件 。

    (1)每一个子节点,既可以是一个目录(再放目录或者普通文件,递归式定义),也可以是一个普通文件

    (2)这棵树的叶子节点一定是一个普通文件或者空目录。

    (3)任何一个节点可以有多个子节点,但都只有一个父节点。常规的从根目录开始的路径定位具有唯一性(绝对路径)。

    (4)通过cd … 去往上级目录的另一个文件或目录称为相对路径。

    如果是日常使用,推荐相对路径

    如果是添加配置文件等,推荐绝对路径

    image-20220708152946593

    cd 跟上任何以绝对或相对路径构建的路径
    cd ~			// ~当前用户的家目录
    cd -			// -跳转至上一次所处的路径
    
    • 1
    • 2
    • 3

    3.4 touch

    touch file.txt			// 我们当前只掌握创建文件
    
    • 1

    3.4 mkdir

    mkdir dir			// 创建目录
    mkdir -p dir1/dir2	// 创建一串路径
    
    • 1
    • 2

    3.5 rmdir和rm

    rmdir dir			// 只能删除空目录
    rm file.txt			// rm默认删普通文件
    rm -r dir1			// 对不为空的目录递归删除
    rm -rf file.txt		// 强力删除
    
    • 1
    • 2
    • 3
    • 4

    rm -rf / 删库跑路

    3.6 man

    man 1				// 查命令
    man 2				// 查系统调用
    man 3				// 查C语言函数(Linux自带C语言库)
    
    • 1
    • 2
    • 3

    3.7 cp

    在同一个路径下文件名不能相同,不同路径可以相同。

    cp file.txt file-bak.txt			// 复制文件生成文件副本file-bak.txt
    cp file.txt ../file.txt1			// 将文件副本file.txt1拷贝到上级目录
    cp -rf lesson3 lesson3-bak			// 复制目录必须带-r,f表示强制拷贝
    
    • 1
    • 2
    • 3

    3.8 mv

    语法: mv [选项] 源文件或目录 目标文件或目录

    类似剪切功能:a.可以剪切普通文件 b.可以整体剪切目录

    mv file.txt ..					// 将文件剪切到上级目录
    mv lesson3 ..					// 将目录剪切到上级目录   
    mv lesson3 lesson2				// 将目录剪切到指定目录 
    mv file.txt lesson2 			// 将文件剪切到指定目录
    
    • 1
    • 2
    • 3
    • 4

    类似win中的重命名,可以对普通文件,也可以对目录文件进行重命名。

    mv file-bak.txt file.txt-bak	// 对文件重命名
    mv dir mycode					// 对目录重命名
    
    • 1
    • 2

    3.9 cat

    比较适合查看短文本,或者代码。

    cat file.txt			// 正向显示文件内容
    tac file.txt			// 反向显示文件内容
    cat -n file.txt			// 正向显示文件内容且显示行号,tac不支持   
    
    • 1
    • 2
    • 3

    cat如果后面什么都不跟,会默认从键盘(标准输入)当做文件,即你输入什么显示什么。

    cat
    
    • 1

    3.10 more和less

    对于长文本,我们想看具体第几行怎么办?

    more和less都只会把一个屏幕显示满。

    more file.txt			// 显示1~31行,按回车下翻,q退出
    
    • 1

    /7773跳转至7773行。

    less file.txt			// 按回车支持↑↓前后翻
    
    • 1

    less可以帮助我们进行查看文本,可以用它来进行日志查看。

    3.11 >(输出重定向)

    本来应该写入到显示器的内容,把它写入到文件中,输出重定向。会清空原始文件的内容,进行重新写入。

    echo "hello Yuucho" > hello.txt
    
    • 1

    3.12 >>(追加重定向)

    不会清空原始内容,而是在原始文件的结尾进行新增式的写入。

    echo "hello world" >> hello.txt
    echo "hello shopee" >> hello.txt    
    
    • 1
    • 2

    3.13 <(输入重定向)

    输入重定向,把本来应该从键盘文件中读取数据的方式,改成从指定的文件中读取。

    cat < hello.txt
    
    • 1

    3.14 Ctrl + z

    Ctrl + z会暂停任务,jobs可以显示你暂停的任务,且带有编号。

    fg 1			// fg + 任务编号即可回到任务
    
    • 1

    Ctrl+c即可终止任务。

    3.15 head和tail

    head file.txt				// 默认显示前10行
    head -20 file.txt			// 显示前20行    
    
    • 1
    • 2
    tail file.txt					// 默认显示后10行
    tail -20 file.txt				// 显示后20行    
    
    • 1
    • 2

    如果我想查看文本的[30000,30020]怎么办?

    管道:|称之为管道,|之前是传输的数据,|之后是输出的数据。

    head -30020 file.txt | tail -21
    
    • 1

    我们还可以级联多条命令进行流水式处理数据:

    head -30020 file.txt | tail -21 | head -3
    
    • 1

    image-20220723091348734

    3.16 find

    find 路径 -name stdio.h		// 在指定路径下找stdio.h文件
    
    • 1

    3.17 grep

    按行搜索:显示所有包含’1234’的行

    grep '1234' file.txt	  //默认大小写
    grep -n '1234' file.txt	  //默认大小写匹配且带行号
    grep -i 'c++' file.txt    //忽略大小写搜索
    grep -iv 'c++' file.txt    //忽略大小写反向匹配不带关键字的行 
    
    • 1
    • 2
    • 3
    • 4

    4. 时间的相关命令

    4.1 时间和时间戳

    显示年(%Y)月(%m)日(%d)_时(%H)分(%M)秒(%S):

    date +%Y-%m-&d_%H:%M:%S
    
    • 1

    时间戳:从1970年累计到现在的秒数

    date +%s
    
    • 1

    这两种都会作为日志的一部分,具有排查错误的能力,从尾部看,时间+输出信息。

    两种时间方式互相转换:

    date +%Y-%m-&d_%H:%M:%S -d@时间戳
    
    • 1

    4.2 cal

    日历

    cal			// 显示本月日历
    cal 2021	// 显示2021一整年日历
    
    • 1
    • 2

    `

    4. 时间的相关命令

    4.1 时间和时间戳

    显示年(%Y)月(%m)日(%d)_时(%H)分(%M)秒(%S):

    date +%Y-%m-&d_%H:%M:%S
    
    • 1

    时间戳:从1970年累计到现在的秒数

    date +%s
    
    • 1

    这两种都会作为日志的一部分,具有排查错误的能力,从尾部看,时间+输出信息。

    两种时间方式互相转换:

    date +%Y-%m-&d_%H:%M:%S -d@时间戳
    
    • 1

    4.2 cal

    日历

    cal			// 显示本月日历
    cal 2021	// 显示2021一整年日历
    
    • 1
    • 2
  • 相关阅读:
    只看优点,这2款可视化产品你更心水谁?
    NLP 项目:维基百科文章爬虫和分类【01】 - 语料库阅读器
    JVM线程安全
    简单对比Java、Python、Go、Rust等常见语言计算斐波拉契数的性能
    Vue3响应式核心API 使用注意点
    Android Native Thread
    MFC-GetAdaptersAddresses获取网卡信息
    6.1、Flink数据写入到文件
    复盘今年寒气逼人的秋招
    《Python趣味工具》——ppt的操作(1)
  • 原文地址:https://blog.csdn.net/iwkxi/article/details/126403271