Linux基本认识及指令

1. Linux用户管理

1.1 创建用户

在root用户下:

//创建用户
	adduser zhangsan
//给用户设置密码
    passwd zhangsan

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

1.2 删除用户

在root用户下:

//删除用户
userdel -r zhangsan

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       // 在文件名后带标定符  '*'表示可执行程序 “/”表示目录

3.2 pwd

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

3.3 cd

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

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

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

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

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

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

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

image-20220708152946593

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

3.4 touch

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

3.4 mkdir

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

3.5 rmdir和rm

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

rm -rf / 删库跑路

3.6 man

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

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表示强制拷贝

3.8 mv

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

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

mv file.txt ..					// 将文件剪切到上级目录
mv lesson3 ..					// 将目录剪切到上级目录   
mv lesson3 lesson2				// 将目录剪切到指定目录 
mv file.txt lesson2 			// 将文件剪切到指定目录

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

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

3.9 cat

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

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

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

cat

3.10 more和less

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

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

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

/7773跳转至7773行。

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

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

3.11 >(输出重定向)

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

echo "hello Yuucho" > hello.txt

3.12 >>(追加重定向)

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

echo "hello world" >> hello.txt
echo "hello shopee" >> hello.txt    

3.13 <(输入重定向)

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

cat < hello.txt

3.14 Ctrl + z

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

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

Ctrl+c即可终止任务。

3.15 head和tail

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

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

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

head -30020 file.txt | tail -21

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

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

image-20220723091348734

3.16 find

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

3.17 grep

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

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

4. 时间的相关命令

4.1 时间和时间戳

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

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

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

date +%s

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

两种时间方式互相转换:

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

4.2 cal

日历

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

`

4. 时间的相关命令

4.1 时间和时间戳

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

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

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

date +%s

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

两种时间方式互相转换:

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

4.2 cal

日历

cal			// 显示本月日历
cal 2021	// 显示2021一整年日历
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CMD,即命令提示符,是Windows操作系统的命令行界面,主要设计用于运行Windows下的命令集。因此,当你尝试在CMD中使用Linux指令时,因为两者之间存在差异,所以会出现识别不到的情况。 ### CMD能做什么? - **Windows命令**: CMD支持Windows特有的命令、脚本和批处理语言(`.bat` 文件)。 - **基本命令**: 包括但不限于`dir`(列出目录内容)、`ping`(测试网络连接)、`cd`(更改目录)等。 - **图形化界面**: 可以与Windows应用程序进行交互。 ### Linux命令无法在CMD中工作的原因 - **语法差异**: Linux命令和Windows命令的语法有所不同。例如,在Linux中使用`sudo`命令前通常需要加前缀`!`来模拟在批处理脚本中运行的语法,但在Windows的CMD中则不需要这样做。 - **系统限制**: Windows的CMD并不具备完整地执行Linux命令的能力,部分Linux特有的命令在Windows环境下并没有对应的命令或功能相似的替代命令。 ### 解决方案 如果你希望在Windows下使用更丰富的Linux命令集: - **使用WSL (Windows Subsystem for Linux)**: 它允许你在Windows上运行真正的Linux终端。你可以安装Ubuntu或其他Linux发行版作为WSL的镜像,然后在其中完全使用Linux命令。WSL提供了一个完整的Linux环境,包括大多数常用的Linux命令和工具。 - **使用Docker or Podman**: 虽然它们不是真正的Linux环境,但它们提供了容器化的Linux环境,让你可以在Windows中运行和执行Linux命令,同时还能利用现代Linux应用的性能和安全性优势。 ### 总结 为了能在Windows的CMD中使用Linux指令,最好的解决方案是使用WSL或者其他提供Linux容器服务的工具,而不是试图直接在CMD中运行所有Linux命令。这样既能充分利用现有的资源,又能获得完整的Linux命令集的支持。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yuucho

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值