【从零开始的嵌入式生活】LinuxC语言——shell命令

news/2024/5/20 12:27:10 标签: linux, c语言, 运维, 物联网, 服务器

请添加图片描述

前言

今天是2021年的第三天,差点就断更了呀,我放弃了LOL陪大家一起学习0.0。
三连即可提高学习效率0.0

🧑🏻作者简介:一个学嵌入式的年轻人
✨联系方式:2201891280(QQ)
📔源码地址:https://gitee.com/xingleigao/study_qianrushi
全文大约阅读时间: 60min


文章目录

  • 前言
  • 1.shell基本系统维护命令
    • man 联机帮助页,并提供简短的命令说明
    • passwd 改密码
    • su 临时改变用户身份
    • echo 在显示器上显示一段文字
    • date 显示和设置系统日期和时间
    • clear 清屏
    • df 查看磁盘空间使用情况
    • du 查看目录的使用情况
  • 2.用户管理
    • 2.1相关文件
    • 2.2 添加用户 adduser
    • 2.3 更改用户的属性 usermod
    • 2.4 删除用户 deluser
    • 2.5 添加用户组 addgroup
    • 2.6 删除用户组 delgroup
  • 3.进程管理
    • 3.1 进程的概念
    • 3.2 ps 命令—— 显示进程 (process) 的动态
    • 3.3 top 命令—— 监视进程
    • 3.4 pstree 命令—— 所有行程以树状图显示
    • 3.5 kill 命令——给程序发命令
  • 3.文件系统的类型和结构
    • Linux文件系统的类型
    • Linux文件系统的结构
  • 4.文件系统相关命令
    • file——判定文件类型
    • mkdir——创建目录
    • rmdir——删除目录
    • ln——建文件的链接文件
    • 文件压缩和归档
      • gzip与gunzip命令
      • tar命令
  • 5.Linux网络配置管理
    • 网络配置基础
    • ping命令
  • 写在最后


1.shell基本系统维护命令

man 联机帮助页,并提供简短的命令说明

man commandname

可以使用PageUpPageDown来翻页,:q退出。
举个例子:
在这里插入图片描述
内容主要包含:

  • NAME:命令的名称
  • SYNOPSIS:命令的语法格式
  • DESCRIPTION:命令的一般描述以及用途
  • OPTIONS:描述命令所有的参数或选项
  • SEE ALSO:列出联机帮助页中与该命令直接相关或功能相近的其他命令
  • BUGS:解释命令或其输出中存在的任何已知的问题或缺陷
  • EXAMPLES:普通的用法示例
  • AUTHORS:联机帮助页以及命令的作者

平时一定要记得使用这本帮助手册,非常好用!!!


passwd 改密码

passwd  username

username:改密码的用户名,默认当前用户。
如果不该当前用户的密码需要管理员权限,就是在最前面加sudo


su 临时改变用户身份

su  [-c | -m - ]  username
  • -c:执行一个命令后会返回默认账户。
  • -m:仍保留环境变量不变。
  • -:转换身份时同时使用该用户的环境。
  • exit:退出账户。
  • username:默认为切换为root账户。

echo 在显示器上显示一段文字

echo [-n] information
  • -n:可以输出命令不换行。
  • echo “hello word”:用于原样输出
  • echo hello world:用于输出字符只用一个空格分隔

date 显示和设置系统日期和时间

date  [-d | -s|-u ]  datestr
  • -s:设置日期,时间格式为hh:mm:ss,日期:mm/dd/yy

clear 清屏

clear

也可以使用ctrl + l


df 查看磁盘空间使用情况

df  [-a | -T | -h | -k ]  Filesystem
选项含义
-a显示所有物理文件系统的使用情况,包括虚拟文件系统,如/proc、/sys等
-T显示文件系统的文件格式类型
-h物理文件系统大小按兆字节为单位显示
-k物理文件系统大小按千字节为单位显示

du 查看目录的使用情况

du -h /etc
  • -a:仅列出空间的文件数
  • -h:列出磁盘的使用情况(KB)
  • -s:列出总的空闲空间(KB)

这部分建议时常回来翻翻看看,我也记不住-。-用的多了就记住了。

2.用户管理

2.1相关文件

/etc/passwd文件是用户清单

  • 登陆名
  • 经过加密的口令
  • UID
  • 默认的GID(组号)
  • 个人信息
  • 主目录
  • 登陆shell

/etc/group UNIX组的名称和每个组中成员列表
每一行代表一个组,包括4个字段:

  • 组名
  • 加密的口令
  • GID号
  • 成员列表,彼此用逗号隔开

2.2 添加用户 adduser

adduser <username>

/etc/adduser.conf 配置文件

  • FIRST_UID=1000
  • LAST_UID=29999
  • USERS_GID=100
  • DHOME=/home
  • DSHELL=/bin/bash
  • SKEL=/etc/skel

Everything is file.linux下一切皆文件
/etc/adduser.conf 配置文件


2.3 更改用户的属性 usermod

usermod [-u uid [-o]] [-g group] [-G gropup,…]
[-d home [-m]] [-s shell] [-c comment]
[-l new_name] [-f inactive][-e expire]
[-p passwd] [-L|-U] name
举例:用户oldname改名为newname
注意要同时更改家目录: usermod –d /home/newname –m –l newname oldname


2.4 删除用户 deluser

deluser <usrnmae>

使用方法:
最好同时删除用户工作目录:deluser --remove-home user1


2.5 添加用户组 addgroup

addgroup  groupname

2.6 删除用户组 delgroup

delgroup  groupname

3.进程管理

3.1 进程的概念

程序的一次执行就是一个进程
请添加图片描述


3.2 ps 命令—— 显示进程 (process) 的动态

ps [options]
  • -A 列出所有的行程
  • -w 显示加宽可以显示较多的资讯
  • -au 显示较详细的资讯
  • -aux 显示所有包含其他使用者的行程

请添加图片描述
进程的状态标志:

  • D: 不可中断的静止
  • R: 正在执行中
  • S: 阻塞状态
  • T: 暂停执行
  • Z: 不存在但暂时无法消除 (僵尸态)
  • <: 高优先级的进程
  • N: 低优先级的进程
  • L: 有内存分页分配并锁在内存中

日常使用:

ps aux | grep "name"

一般结合grep来使用。


3.3 top 命令—— 监视进程

在这里插入图片描述


3.4 pstree 命令—— 所有行程以树状图显示

在这里插入图片描述


3.5 kill 命令——给程序发命令

kill [-signal] PID

kill 命令向指定的进程发出一个信号signal,在默认的情况下,kill 命令向指定进程发出信号15,正常情况下,将杀死那些不捕捉或不忽略这个信号的进程
可以使用kill -l查看所有支持的信号。

3.文件系统的类型和结构

文件系统用于组织和管理计算机存储设备上的大量文件,并提供用户交互接口。Linux同样具备完善的文件系统。


Linux文件系统的类型

  • 磁盘文件系统: 指本地主机中实际可以访问到的文件系统,包括硬盘、CD-ROM、DVD、USB存储器、磁盘阵列等。常见文件系统格式有:autofs、coda、Ext(Extended File sytem,扩展文件系统)、Ext3、Ext4、VFAT、ISO9660(通常是CD-ROM)、UFS(Unix File System,Unix文件系统)、FAT、FAT16、FAT32、NTFS等;
  • 网络文件系统: 是可以远程访问的文件系统,这种文件系统在服务器端仍是本地的磁盘文件系统,客户机通过网络远程访问数据。常见文件系统格式有:NFS、Samba等;
  • 专有/虚拟文件系统: 不驻留在磁盘上的文件系统。常见格式有:TMPFS(临时文件系统)、PROCFS(Process File System,进程文件系统)和LOOPBACKFS(Loopback File System,回送文件系统)。

目前Ext4是Linux系统广泛使用的一种文件格式。在Ext3基础上,对有效性保护、数据完整性、数据访问速度、向下兼容性等方面做了改进。
最大特点是日志文件系统: 可将整个磁盘的写入动作完整地记录在磁盘的某个区域上,以便在必要时回溯追踪。。


交换分区(swapping)
将内存中的内容写入硬盘或从硬盘中读出,称为内存交换(swapping)

  • 交换分区最小必须等于计算机的内存 (1.5~2倍 其实内存比较大的话不需要这个)
  • 可以创建多于一个的交换分区
  • 尽量把交换分区放在硬盘驱动器的起始位置

Linux文件系统的结构

文件系统逻辑结构请添加图片描述
Linux的文件组织模式犹如一颗倒置的树,这与Windows文件系统有很大差别。


基本目录
绝对路径:/usr/games/gnect
相对目录:./games
默认的相对路径中.代表当前目录..代表上层目录。

4.文件系统相关命令

pwd ls cd touch cp mv rm cat head tail已经在C语言基础补习课程中讲过
【从零开始的嵌入式生活】必备基础知识,从环境安装开始


file——判定文件类型

file  [ filename ]

mkdir——创建目录

mkdir  [ -p ]   directory_name 

mkdir必须需要父目录存在,如果需要循环创建,需要加-p选项。


rmdir——删除目录

rmdir  [ -p ]   directory_name 

经常使用效率更高的:rm –r dir1


ln——建文件的链接文件

链接文件

  • 硬链接是利用Linux中为每个文件分配的物理编号——inode建立链接。因此,硬链接不能跨越文件系统。
  • 软链接(符号链接)是利用文件的路径名建立链接。通常建立软链接使用绝对路径而不是相对路径,以最大限度增加可移植性。(类似于快捷方式)
ln  [ -s ]   target  link_name 
  • -s:表示创建软链接

这部分的内容可以参考【C语言有什么用?①】从零开始撸一个用户态模拟文件系统


文件压缩和归档

  • 归档文件是将一组文件或目录保存在一个文件中。
  • 压缩文件也是将一组文件或目录保存一个文件中,并按照某种存储格式保存在磁盘上,所占磁盘空间比其中所有文件总和要少。

常见的压缩文件:
与windows建议使用zip

压缩工具解压工具文件扩展名
gzipgunzip.gz
bzip2bunzip2.bz2
zipunzip.zip

gzip与gunzip命令

gzip  [ -l| -d | -num ]  filename
  • -l:查看压缩文件内的信息,包括文件数、大小、压缩比等参数,并不进行文件解压
  • -d:将文件解压,功能与gunzip相同
  • -num:指定压缩比率,num为1~9个等级(数字越大压缩率越大)
gunzip  [ -f ]  file.gz

tar命令

主要用于将若干文件或目录合并为一个文件

tar  [ -t | -x | -u | -c | -v | -f | -j | -z ]  tarfile  filelist
  • -t:显示归档文件中的内容
  • -x:释放归档文件
  • -u:更新归档文件
  • -c:创建一个新的归档文件
  • -v:显示归档和释放的过程信息
  • -f:用户指定归档文件的文件名,否则使用默认名称
  • -j:由tar生成归档,然后由bzip2压缩
  • -z:由tar生成归档,然后由gzip压缩

一般用tar -cfz压缩文件,使用tar -xfc解压,生成的目录名为.tar.gz

5.Linux网络配置管理

网络配置基础

实现Linux网络配置的惟一目标就是修改系统中众多的网络配置文件,如/etc/interfaces/etc/hosts/etc/resolv.conf等等。

通常,用户可能使用普通以太网卡、无线网卡、调制解调器等不同类型的设备接入网络。不同类型的网络设备在主机中被映射为相应的网络接口,比如以太网卡映射为eth,无线网卡映射为wlan。有时,用户还可能同时使用多个网络设备,就会出现eth0、eth1…,或wlan0、wlan1…的情况。

那么,如何标识每个连接到Internet的网络接口呢?
解决办法是:为每个网络接口分配一个全世界范围内惟一的32bit的标识符。这个标识符就是IP(Internet Protocol)地址。


IP地址
一般使用点分十进制表示,都是255.255.255.255
IP网络中通常用最小的IP地址标识网络本身,将最大的IP地址作为该网络的广播地址,其余所有IP地址都分配给网络中的主机。然而,局域网中的主机并不能直接访问Internet,需要通过一个作为代理的网关或网络地址转换服务(NAT)才能访问Internet。通常将IP地址的第一个或最后一个留给该网络的Internet网关。


配置IP地址

  • 配置静态IP:在主机进入网络之前,事先为主机设置固定的IP地址;
  • 配置动态IP:选择DHCP网络服务,在主机进入网络之后,动态随机获取IP地址。

Ifconfig命令

ifconfig  [interface]
ifconfig  interface [aftype] option | address…
  • [interface] 指定网卡

/etc/network/interfaces 配置文件是网卡服务器
/etc/resolv.conf DNS客户端配置文件


ping命令

ping  [DomainName | IP-address]

可以ping ip或者域名,作用就是给这个服务器打招呼,问它是否活着0.0
默认一直打招呼,可以使用-c表示次数 比如ping -c 3 baidu.com就只ping三次。

写在最后

今天主要讲解了很多shell命令,这些东西不好记,需要时常回来翻一翻,接下来的几天都会围绕这一主题展开,有兴趣的童鞋可以跟我一起呀。三连即可提高学习效率!!!


另外我在更新的就是算法笔记的一些例题笔记,这个系列是用于提高我的算法能力,如果有兴趣对算法领域感兴趣找不到合适的入门文章也可以追更,如果我更新的太慢了请大家点赞收藏,一键三连才能更有更新的动力呀0.0


http://www.niftyadmin.cn/n/1242541.html

相关文章

Day116.简单书城项目---第一阶段 -JavaWeb

书城项目—第一阶段(表单验证) 验证用户名&#xff1a;必须由字母&#xff0c;数字下划线组成&#xff0c;并且长度为 5 到 12 位 验证密码&#xff1a;必须由字母&#xff0c;数字下划线组成&#xff0c;并且长度为 5 到 12 位 验证确认密码&#xff1a;和密码相同 邮箱验证…

【从零开始的嵌入式生活】LinuxC语言——shell脚本编程

前言 今天是2021年的第五天&#xff0c;又断更了呀&#xff0c;我尽量摆脱游戏。陪大家一起学习0.0。 三连即可提高学习效率0.0 &#x1f9d1;&#x1f3fb;作者简介&#xff1a;一个学嵌入式的年轻人 ✨联系方式&#xff1a;2201891280(QQ) &#x1f4d4;源码地址&#xff1a…

Day116.简单书城项目---第二阶段 -JavaWeb

书城项目—第二阶段 1. JavaEE 项目的三层架构 分层的目的是为了解耦。解耦就是为了降低代码的耦合度。方便项目后期的维护和升级。 web层 com.achang.web/servlet/controller service层 com.achang.service service接口包com.achang.service.impl servi…

【从零开始的嵌入式生活】LinuxC语言4——LinuxC高级

前言 今天是2021年的第六天&#xff0c;本来打算把makefile也更新的&#xff0c;结果没来及。下次一定&#xff01; 三连即可提高学习效率0.0 &#x1f9d1;&#x1f3fb;作者简介&#xff1a;一个学嵌入式的年轻人 ✨联系方式&#xff1a;2201891280(QQ) &#x1f4d4;源码地…

Day116.简单书城项目---第三阶段 -JavaWeb

第三阶段 一、页面jsp动态化 1、在html页面顶行添加page指令。 2、修改文件后缀名为&#xff1a;.jsp 3、使用IDEA搜索替换.html为.jsp&#xff08;通过Ctrl shift R 快捷键&#xff09; 二、抽取页面中相同的内容 将相同的内容写入不同的jsp并通过include导入 1、head…

【从零开始的嵌入式生活】LinuxC语言5——Makefile

前言 今天终于把makefile也更新了&#xff0c;这两天颈椎病需要治一治所以有些拖更&#xff0c;治好我就满血复活0.0大家注意身体呀&#xff01; 三连即可提高学习效率0.0 &#x1f9d1;&#x1f3fb;作者简介&#xff1a;一个学嵌入式的年轻人 ✨联系方式&#xff1a;2201891…

【从零开始的嵌入式生活】数据结构1——概述

前言 今天开了个新坑&#xff0c;数据结构&#xff0c;2333&#xff0c;这两天颈椎病需要治一治所以有些拖更&#xff0c;治好我就满血复活0.0大家注意身体呀&#xff01; 三连即可提高学习效率0.0 &#x1f9d1;&#x1f3fb;作者简介&#xff1a;一个学嵌入式的年轻人 ✨联系…

Day116.简单书城项目---第四阶段 -JavaWeb

第四阶段 使用EL表达式修改表单回显 jsp的表达式语句替换为EL表达式语句 感谢尚硅谷