Linux基本认识及指令

发布于:2023-01-13 ⋅ 阅读:(345) ⋅ 点赞:(0)

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一整年日历

网站公告

今日签到

点亮在社区的每一天
去签到