和Linux的首次打交道!(1)
  Zk22aplX5xRP 2023年11月02日 40 0








void retur(int x, int y,int z)
{
if (x <y)//如x小于y就进行替换
{
int tmp = y;
y = x;
x = tmp;
}
if (x < z)//替换完毕后,再试一下是否是三个数中最大的值,如果不是就和z进行替换
{+
int tmp = z;
z = x;
x = tmp;
}
if (y < z)//再用已经替换了的y和z进行比较看看被替换的y和z的值谁是最小的
{
int tmp = z;
z = y;
y = tmp;
}
printf("%d %d %d", x, y, z);
}



int main()
{
int a,b, c;
printf("判断两个数");
scanf_s("%d%d%d", &a, &b,&c);
retur(a,b,c);

}
















int retur(int x, int y)
{
while (x-y>0)
{
int z = x - y;
x = y;
y = z;
}return x;
}
int main()
{
int a,b;
printf("判断两个数的公因数");
scanf_s("%d%d", &a, &b);
int ret=retur(a,b);
printf("%d", ret);
}
















void xunhuan(int x)
{
int j=0;
for(j=2;j<x;j++)//从2到他本身进行试除,又被除的就结束,因为素数只有1和他本身
{//若是2之前的开始就会导致判断错误,当x传过来想一下任何数抹除1或0结果都是0,无论你传什么都会结束执行,判断永远是j<x,永远为否
if (j % x == 0)
break;

}if (j >= x)
printf("%d是",x);
else
printf("%dbushi",x);

}
int main()
{
int a;
scanf_s("%d", &a);
xunhuan(a);
return 0;
}
















int main()
{
char arr1[] = "##################";
char arr2[] = "welcome my world";
int sz = strlen(arr2);
int left = 0; int right = sz - 1;
while (left <= right)
{
arr1[left] = arr2[left];
arr1[right] = arr2[right];

printf("%s\n", arr1);
Sleep(1000);
system("cls");
left++; right--;
}
}















void tihuan(char arr1[], char arr2[], size_t sz)//
{
size_t left = 0; size_t right = sz - 1;//定义size_t数据结构大小首选参数
while (left <= right)
{
arr1[left] = arr2[left];
arr1[right] = arr2[right];

printf("%s\n", arr1);
Sleep(1000);
system("cls");
left++; right--;
}
}
int main()
{
char arr1[] = "##################";
char arr2[] = "welcome my world";
size_t sz = strlen(arr2);//进行传参时int转换为size_t时会造成参数丢失,所以定义为size_t
tihuan(arr1, arr2, sz);

}












int pan()
{
int a = 1;
// char* pd = (char*)&a;
//返回1小端。返回0大端
//return* pd;
return *(char*)&a;//嘴贱书写方式
}
int main()
{
int ret=pan();
if (ret == 1)//返回1是小端,返回0是大端,地址从左到右是从低向高位次排,低位有数就是从低向高,就是小端
printf("xiao");
else
printf("da");
}

引言:学习Linux之后,希望把经验可以分享给大家,本篇博客从分区的片面知识,到工具的使用,再到基础命令了解,适合帮大家先建立起一个大体的框架,然后再进行细化学习,本人学习Linux是由于它的伟大开源,所以想要学习它的管理知识和它的最初内核原码,希望拥有自己的一个简易的操作系统,可以让自己编程技术更上一层楼!

分区:

初学:最开始的学习在进行Linux安装时候可以先使用一下这种分区框架。

开始分区之前我们要先了解分区,首先,系统的开始是需要固件(bios)进行引导的,所以可以划分一个boot分区

boot分区:引导分区1g

swap:交换分区,内存和硬盘之间交换程序数据,在内存满的时候,这时候使用交换方案swap充当临时分区,把内存把不常用数据放进硬盘,常用数据写入内存,它实际上和内存差不多大,但是速度是没有实际内存大的。详情请参考计算机存储器结构

在我们现在个人计算机配置足够高的情况下可能设置会有些多余,但是在服务器之下想要保障他的正常运行,却是很有必要的。

根分区:/(根分区)以后我们安装的文件基本都在根分区下面,实际上是一个目录树结构。

硬件!文件!

学习操作系统之前要先有一些硬件方面知识,原因是Linux之下的硬件设备都是以文件形式存在的。硬件请参考以下这个笔记。

Linux目录

目录结构

目录树:

linux中是以目录格式存在的,最上层是根目录,下面的子文件夹都是已经规定好的,即规划好的,存放指定类型文件 ,每一个文件夹都有着特定的属性,用户不可以进行随意更改。在linux中,一切皆是文件

常用文件名称

首先:linux下:一切皆是文件

/bin:存放常用命令

/sbin:存放系统管理员使用的系统惯例程序

/home存放普通用户主目录

/root:系统管理员,超级权限者用户主目录

/lib:类似windows的DLL文件,动态链接文件,几乎所有应用程序都会需要这个共享库

/lost+found:空目录,系统非法关机后会在这里面存放一些文件

/etc:系统管理需要配置文件和子目录

/user:用户安装程序默认放在这里面

/boot:linux启动时核心文件,破坏了,系统会启动不了

/proc:虚拟目录,不能动,系统内存的映射,访问此目录来获取系统信息

/srv:服务启动之后需要提取的数据

/sys:2.6文件系统中新出现一个文件系统?tmp:存放一些临时文件

/dev:类似windows中的设备管理器硬件以文件形式存储,linux会把所有设备映射为一个文件来进行管理

/mnt:临时挂载别的文件系统,为了让用户临时挂载一个文件,挂载和卸载。

/opt:给主机额外安装软件存放的目录,便于对文件进行管理

/user/local:安装好的目标目录,另一个给主机额外安装软件所安装目录,一般是通过编译原码方式安装的程序

/var:存放着不断扩充的东西,将经常修改的各种文件放在这个文件夹下面,包括各种日志文件

/selinux:安全子系统,控制程序访问特定文件,有三种工作模式,可以自行设置

和Linux的首次打交道!(1)_基本语法

远程登录LINUX

远程登录:

将本地计算机和网络上另一台远程计算机之间取得联系,进行程序交互,本地用户进入的叫远地系统它允许授权用户进入网络中的其它 UNIX 机器并且就像用户在现场操作一样。一旦进入主机,用户可以操作主机允许的任何事情

计算机网络

公网:公网即国际互联网(Internet),把全球不同位置、不同规模的计算机网络互相连在一起形成的计算机网络集合体,公网和内网是两种接入internet接入方式。

接入方式:得到的是internet的保留地址,进行接入公网和internet其他计算机之间可以相互访问。

内网:

即平常所说的局域网,由固定一个地理区间两台以上电脑使用网络设备搭建而成的一个封闭的计算机组,它既可以独立运行,也可以和外网连接

外网:

即广域网,地理跨度十分大的网络集合,由无数个局域网(小型广域网或局域网)组成。广域网IP指的是以公网连接INTERNET上的非保留地址

前提:

知道公网的IP地址,

工具:

Xshell

和Linux的首次打交道!(1)_Linux_02

进行远程登录的工具,对服务器或者远程计算机进行互联,可以进行远程控制或者访问资源

文件的上传和下载:

使用工具:

和Linux的首次打交道!(1)_指定目录_03

准备前提

  1. 知道公网ip地址,知道它的用户名和密码。
  2. 客户端和服务器之间可以ping通,

和Linux的首次打交道!(1)_指定目录_04

已经和另一个主机之间进行了连接,这时就可以进行传输文件

和Linux的首次打交道!(1)_基本语法_05

vi和vim基本介绍

linux系统中内置vi文本编辑器

vim:文本编辑器增强版。可以主动以字体颜色辨别语法正确性,方便程序设计

三种模式:

  • 正常模式:以vim打开一个档案至今进入一般模式,在这个模式,可以使用方向键移动光标,可以进行删除字符或者是删除整行,还可以进行复制粘贴。
  • 插入模式:按下i、I、o、O、a、A、r、R等任何一个字母进入编辑模式,一般情况下按i
  • 命令行模式提供相关的·指令,完成读取、存盘、替换、离开Vim,显示行号都是在之下完成的

vi和vim快捷键

  • 拷贝当前行:yy 拷贝当前行向下的五行5yy并粘贴(输入p)
  • 删除当前行:dd 删除当前向下的五行:5dd
  • 文件中查找单词:【命令行下/关键字 回车查找,输入n就是查找下一行】
  • 设置文件行号:【命令行下:创建行号set nu和销毁行号set nonu】
  • 编辑文件(首尾行):一般模式下 ,快捷键G为最后一行 gg为第一行
  • 文件中输入后内容撤销:进入一般模式下输入小写的u可以撤销输入文本
  • 文件中将光标定位指定位置:一般模式下:【行号】shift+g

和Linux的首次打交道!(1)_用户名_06

关机重启

  • shutdown -h now 立即进行关机
  • shutdown -h 1 “hello,1分钟之后关机”
  • shutdown -r now 现在立即关机
  • halt:关机,作用和上面一样
  • reboot:现在立即重启计算机
  • sync:将内存中的数据同步到硬盘

注意

  1. 不管是重启还是关闭系统,首先要运行sync命令,将内存中数据存到硬盘里面
  2. 目前:shutdown,halt,reboot在关机之前都会执行sync

用户登录和注销

登录

root为系统管理员

使用普通用户进行登录,然后执行“su-用户名”命令切换为系统管理员身份,登录时尽量少使用root进行登录,因为权限大,避免操作失误

注销用户:logout

logout注销指令在图形运行级别无效,运行级别3以下有效

exit在终端中是退出的意思,在终端中使用logout无用

添加用户:

基本语法:useradd 用户名

默认该用户在/home/用户名之下

创建用户成功同时会自动创建用户家目录‘也可以使用 useradd -d 指定目录,给新创建的用户指定家目录

新的用户名指定/修改密码

基本语法:

password 用户名

pwd:显示当前在那个目录之下

删除用户

userdel 用户名

-r:把用户名家目录删除,建议保留

和Linux的首次打交道!(1)_基本语法_07

删除用户,保留家目录

删除用户以及用户主目录

查询用户信息指令

基本语法:

id 用户名

当没有该用户时候返回:查无此用户

切换用户:

基本语法:

su - 切换用户名

细节:

  1. 权限高的用户切换到权限低的用户,不需要输入密码
  2. 当需要返回到原来用户时,需要使用exit/logout指令

查看当前用户、登录用户

指令:who am i

用户组

系统可以对共有性、权限用户进行统一管理

增加组

指令:groupadd 组名

删除组

指令:groupdel 组名

增加用户到指定组

指令:useradd -g 用户组 用户名

增加一个用户zwj直接将他指定到wudang

直接指定用户未指明组就会创建一个新组,然后把这个用户放在组里面

修改用户的组:

指令:

usermod

创建一个组,然后使用这个指令将指定用户重新放进新的里面,即可实现修改用户的组的作用

shell

cd》shell翻译》内核:cd发送的指令无法被内核识别,增加一个翻译的组件shell,经过shell翻译之后发送给内核

shell:bash,我们经常使用的

组信息保留文件

  • /etc/passwd:用户(user)配置文件,记录用户各种信息
  • /etc/shadow:口令配置文件,例如设置密码在此处看见的是加密了的字符
  • etc/group:组的配置文件,记录linux内组的信息

和Linux的首次打交道!(1)_Linux_08

init

进入指令级别

和Linux的首次打交道!(1)_指定目录_09

systemctl get-default显示当前指令

systemctl get-default TARGET.target设置默认的格式

帮助指令

man获取帮助信息

基本语法:man【命令或者配置文件】

进入帮助指令界面,使用“q”可以退出

在linux下,隐藏文件都是以.开头的。并且选项可以组合使用,并且不分顺序,同时还可以指定目录,格式是在指令之后加上文件。

help指令

基本语法:help命令

作用:获得shell内置命令的帮助信息

pwd指令

功能显示当前所在文件位置

ls指令:

作用:list缩写,默认打印当前目录列表

语法:

ls【选项】【目录文件】

常用选项:

  • -a:显示当前目录中的所有文件,包含隐藏文件
  • -l:以列表的方式显示信息
  • -h:以更有利于直观显示方式输出

文件目录类

cd指令

基本语法:

cd【参数】

功能:

切换到指定目录

绝对链接和相对链接:

绝对路径:根目录开始定位

相对路径:当前文件位置开始定位

cd~或者cd:回到自己家目录,如果是root用户返回到root中,如果是在home中的用户直接返回到home种

cd..:回到当前目录上一级目录,/代表为根目录,在根目录之下使用这个指令返回的还是根目录

mkdir指令

作用创建目录

语法:mkdir【选项】要创建目录

常用选项:

-p:创建多级目录

创建一个目录:mkdir /home/dog

创建多级目录 mkdir -p /home/animal/tiger

rmdir

作用:删除目录

基本语法:

rmdir 【选项】要删除的空目录

删除一个目录:

rmdir /home

使用细节:rmdir删除的是空目录,目录下由内容无法删除

删除非空目录使用 rm -rf 要删除的目录(使用的时候要小心谨慎

rm指令

语法:rm【选项】删除的文件或目的

选项:

  • -r:递归删除整个文件夹
  • -f强制删除不提示

删除文件。rm -f * 目录,删除某个目录或者文件之下所有文件

rm -f 目录/*+删除目录之下所有文件

find可以和rm指令共同使用

删除当前目录下的所有类型的文件

将当前目录下的所有类型文件(隐藏文件除外)删除,命令语句如下:

rm -f *

1

删除指定目录下的所有类型的文件

将 /home/wwwroot/ 目录下的所有文件(隐藏文件除外)删除,命令语句如下:

rm -f /home/wwwroot/*

1

用 find 命令在当前目录下查找普通文件并删除

将当前目录及其子目录下的普通文件删除,命令语句如下:

find . -type f -delete

1

用 find 命令在指定目录下查找普通文件并删除

将 /home/wwwroot/liaowenxiong/test1 目录及其子目录下的普通文件删除,命令语句如下:

find /home/wwwroot/liaowenxiong/test1 -type f -delete

1

用 find 命令的处理动作将当前目录及其子目录下的普通文件删除

命令语句如下:

find . -type f -exec rm -f {} ;

1

用 find 命令的处理动作将指定目录及其子目录下的普通文件删除

用 find 命令的处理动作将 /home/wwwroot/liaowenxiong/test1 目录及其子目录下的普通文件删除,命令语句如下:

find /home/wwwroot/liaowenxiong/test1 -type f -exec rm -f {} ;

1

将 /home/tech/data_log 目录及其子目录下的所有 txt 文件删除,命令语句如下:

find /home/tech/data_log -name '*.txt' -type f -print -exec rm -f {} ;

1

find 命令和 xargs 命令结合,删除大量的文件

将当前目录及其子目录下的所有普通文件删除,命令语句如下:

find . -type f | xargs rm -f

1

上述的命令语句用于参数列表过长,要删除的文件太多的情况。

使用命令脚本删除指定目录下的所有普通文件

将指定目录及其子目录下的所有普通文件删除:

rm -f find 指定目录 -type f

1

“``” 里面是脚本命令语句。

用 for 循环语句删除指定目录下的所有类型的文件

for delete in ls –l 指定目录路径;do rm -f * ;done

touch:创建文件

功能:创建空文件夹

基本语法

touch 文件名称

cp拷贝命令

语法:cp【选项】source dest,从原拷贝到目的

选项:-r:递归复制整个文件夹

强制覆盖不显示:/cp -r /home/bbb /opt

mv移动指令

移动文件和目录或重名m重命名:mv oldnamefile filenewnamefile

移动文件:不同目录之下文件的移动

移动并且重新命名

cat

语法:cat【选项】查看的文件名

常用选项:

-n,显示,显示行号

查看文件内容,cat只能查看不可修改,之前vim可以进行修改,对于安全性高的文件可以使用,为了浏览方便一般会带上管道命令|more把前一个结果交给下一个指令进行处理,每一个enter显示一行,空格显示下一页,全部显示完毕退出

查看文档工具

more

基于vi编辑器的文本过滤器,有若干快捷键

less

分屏查看文件内容,功能与more指令相似,但是比more更加强大,显示大文件需要高效率

echo

输出内容到控制台

语法:

echo【选项】【输出内容】

变量:

使用一个变量名称代替一个路径或一段数据,变量分为全局变量,在linux之下为环境变量,是父进程和子进程1都可使用的,自定义变量假设在父进程创建的就只能在他之下使用,所以有和局部变量相似

格式:变量名=变量内容

echo ${变量名}

head

显示文件开头内容:

head【文件】:默认显示文件前十行

head -n 5:查看文件前五行内容

tail

输出文件尾部内容

tail 文件:默认输出文件尾部十行内容

  • tail -n 5:输出文件尾部五行内容
  • tail -f:文件实时追踪文件变化,在文件写入内容时,可以同步更新
  • tail -f /hom/mydat.txt

重定向指令

和Linux的首次打交道!(1)_基本语法_10

>:覆盖原来的内人

>>:追加原来的内容

ctrl+c:退出,使用stty可以查看各种快捷键在linux系统之下具体执行操作

如果追加文件不存在自动创建新文件

cal

日历信息

格式:cal【选项】

cal 2020 打印的是2020年日期

选项

ln

作用:符号链接,相当于快捷方式,使用一个源文件或者目录可以直接链接到指定文件中

ln -s【源文件或目录】【目的】

rm【目录下的连接名称】:删除,目录无法删除

可以实现一个文件被多个文件共享

pwd:显示当前软连接所在位置

history

他是默认在Bash这个shell之内的命令,当前的历史命令放在内存之中,注销之后会将这次历史命令同步到/.history之内,上一次登录的历史指令放在~/.bash_history这个文件之中。

查看执行过的历史命令

基本语法:直接输入history

显示所有历史命令:history

显示最近使用的n个指令:history n(数字不超过1000,超过回被覆盖),具体指令数量和HISTSIZE这个环境变量有关。

!n:执行编号为n的指令(!是英文模式下的输入)

date

基本语法

date

  • date +%Y:年份
  • date +%m:月份
  • date +%d:天数

date "+%Y-%m-%d %H:%M:%S:显示年月日时分秒,可以自其中加入内容。不会报错

选项:-s:设置系统当前时间

搜索查找类

find指令

从指定目录向下递归遍历其各个子目录,将满足条件文件或者目录显示在终端

语法

find【搜索范围】【选项】

有的话会列出来,没有不显示

选项:

  • -name:按照指定文件名查找文件
  • -user:查找属于指定用户的所有文件
  • -size:按照指定文件大小查找文件,文件大小前的符号(+:大于 -:小于 =:等于,单位有K,M,G)
  • ls -lh(以人更简便方式显示文件大小)


locate

基本语法:

locate 搜索文件

特别说明

locate是基于数据库进行查询的。所以在第一运行之前要使用updatedb创建locate数据库,还有就是不会遍历整个文件系统,会根据算法创建数据库。

找不到就快速返回

速度快s

which:目录

查看某个指令在哪个目录下

grep:管道符号

在用grep进行查找之后使用管道符号进行处理

管道符号:将之前的结果交给管道符号下一个指令进行处理

书写方式:

cat /home/hello.txt | grep -n "red"

grep -n "red" /home/hello.txt

  • 选项:
  • -n:显示匹配及行号
  • -i:忽略字母大小写

gzip/gunzip

压缩和解压

gzip/gunzip:gzip用于压缩文件,gunzip用于解压的

基本语法

gzip 文件:压缩文件,将文件压缩为.gz文件

gunzip 文件.gz(解压缩文件命令)

zip/unzip

zip:压缩文件或文件夹,unzip指令:解压文件或者文件夹,主要用于文件打包发布,压缩为.zip类型文件

基本语法

zip 【选项】XXX.zip将要压缩的内容(压缩文件和目录)

unzip 【选项】XXX.zip:功能:解压缩文件

zip常用选项:

-r:递归压缩,压缩目录

unzip选项

-d<目录>:指定解压后文件存放目录

tar

打包指令,最后打包的文件是.tar.gz类型文件,既可以打包文件,也可以打包一个文件夹

基本语法:

tar【选项】XXX,tar,gz 打包的内容(打包目录,压缩后文件格式。tar.gz)

选项

-c:产生。tar打包文件

-v:显示详细信息

-f:指定压缩后文件名

-z:打包同时压缩

-x:解包。tar文件

将myhome。tar.gz解压到/opt/tmp2目录下:

mkdir /opt/tmp2 tar -zxvf /home/myhome.tar.gz -C /opt/tmp2

和Linux的首次打交道!(1)_Linux_11

权限 规则

  1. 第0位确定文件类型:
  • l是连接
  • d是目录
  • c是字符设备:鼠标键盘
  • b是块设备,例如硬盘
  1. 第1-3位确定所有者(改文件所有者)拥有该文件权限 ---user
  2. 第4-6位确定所属组(同用户组的)拥有该文件权限 ---Group
  3. 第7-9位确定其他用户拥有该文件的权限

rwx作用到文件

  • 【r】:代表可读:可以查看,读取
  • 【w】:代表可写:可以修改,但是不代表可以删除该文件,删除一个文件前提条件是对该文件的目录有写权限,才可以删除该文件
  • 【x】代表可执行(execute):可以被执行

rwd作用到目录:

  • 【r】代表可读:可以读取,ls查看文件目录内容
  • 【w】代表可写:可以修改,对目录内创建+删除+重命名目录,能否对文件进行删除和创建
  • 【x】代表可执行文件:可以进入该目录,可以使用cd指令进入目录

和Linux的首次打交道!(1)_Linux_12

修改权限:

数字对应权限:r=4,w=2,x=1,所以rwx=4+2+1=7

子目录数+文件数,普通文件是1

文件大小,字节数统计的,如果是文件夹,显示4096字节

Feb 2 09:39:最后修改日期

abc文件名

chmod:可以修改文件或者目录

+、- =变更权限

u:所有者 g:所有组 o:其他人 a:所有人(ugo)

chmod u=rwx,g=rx,o=x 文件/目录名

chmod o+w 文件/目录名

chmod a-x 文件、目录名:

通过数字变更权限

r=4 w=2 x=1,可以通过各种组合实现不同功能

chmod u=rwx,g=rx,o=x 文件目录名等价于chmod 751 文件目录名

chown

作用:

修改文件所有者

命令格式:

chown newowner 文件/目录 改变所有者

chown newowner:newgroup 文件/目录 改变所有者和·所在组

-R:如果是目录,旗下所有子文件夹递归生效

chgrp

功能

修改文件/目录所在组

基本介绍:

chgrp newgroup 文件/目录: 改变所有组

-R:递归修改目录下组

如果要对目录内文件进行操作,需要先拥有

和Linux的首次打交道!(1)_指定目录_13

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  ehrZuhofWJiC   2024年04月26日   38   0   0 内核linux
  ehrZuhofWJiC   2024年05月17日   36   0   0 linuxsvn
  ehrZuhofWJiC   2024年05月17日   40   0   0 KVMlinux
  ehrZuhofWJiC   2024年05月17日   39   0   0 服务器linux
Zk22aplX5xRP