Linux下的C编程(二)Linux 基本使用

简介

Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。

Linux诞生于1991年、发展至今已然成为当今主流、且先进并富有生命力的一款操作系统。被广泛使用在服务器、嵌入式系统和个人计算机等多个方面。
先拜见下祖师爷:
在这里插入图片描述
祖师爷牛*!

提起Linux,就不得不说Unix,Unix诞生与1969年的bell实验室,它是Ken.Thompson和Dennis Ritche在DEC PDP-7小型计算机系统上开发的一个分时操作系统。

而Linux就是一种类Unix系统,采用了几乎一样接口

POSIX 标准

可移植操作系统接口(Portable Operating System Interface,缩写为POSIX)是IEEE为要在各种UNIX操作系统上运行软件,而定义API的一系列互相关联的标准的总称,保证编写的应用程序在代码级可以移植到多种操作系统。

常用的Linux发行版

名称简介官网
Debian Linux稳定、更快更容易的内存管理https://www.debian.org/
Ubuntu界面美观、桌面办公、服务器等应用https://www.ubuntu.com
Red Hat红帽、是目前世界上使用最广泛的Linux操作系统、稳定且安全https://www.redhat.com/
CentosRHEL源码再编译,和红帽有着千丝万缕的关系www.centos.com/
SUSE易用的YaST软件包管理系统www.suse.com/
kail-linux由BT5发展而来、拥有最丰富的渗透测试工具,基于Debianhttps://www.kali.org/

他们之间的联系就是都是基于linux内核的。

系统结构

Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。Linux内核主要由内存管理、进程管理、虚拟文件系统、进程间通信和网络接口组成。

1.内存管理
Linux的内存管理方式采用的是虚拟内存,当内存不足时可以提供内存置换(swap)。
2.进程管理
内核分配CPU资源到程序,LInux下有三种进程调度的策略:SCHED_OTHER、SCHED_FIFO和SCHED_RR。
3.虚拟文件系统
虚拟文件系统(Virtual File System, 简称 VFS), 隐藏了许多硬件细节、对于上层提供只抽象,使得linux可以多种文件系统共存。
4.进程间通信
进程间通信主要用于控制不同进程之间在用户空间的同步、数据共享和交换。linux中常用的进程通信方式有、信号管道消息队列共享内存套接字等方式。
5.网络接口
Linux提供了对多种网络标准的存取和各种网络硬件的支持。

shell

shell是一个命令解释器,介于用户与内核之间的一个接口。
结构

Linux中有多种shell,其中最常用的是bash shell。

查看当前系统有哪些shell

cat /etc/shells

在这里插入图片描述

  • /bin/sh:传统Unix下shell,已经被/bin/bash所取代
  • /bin/bash:大多数Linux系统默认使用的shell

查看系统当前正在使用的shell

echo $SHELL

在这里插入图片描述
bash下敲命令时,Tab键可以补全已经敲了一部分的文件名、目录名或者命令名,如果敲一下Tab没有自动补全,可能是没有这个开头的命令或文件名,另一种可能是存在多个这种开头的命令、文件或目录名。

一些常用的快捷键

按键功能
↑(ctrl+p)显示上一条命令
↓(ctrl+n)显示下一条命令
ctrl+l清屏
ctrl+c停止当前正在运行的程序
ctrl+z暂停程序

详细可访问:https://blog.csdn.net/csdn_980979768/article/details/47148013

Linux 的文件结构

在这里插入图片描述
Linux没有盘符,所有文件都在最大的目录 / 下

目录名内容
/bin存放各种可执行命令(文件),可被各种用户使用,如:cat,ls,cp,bash…等
/boot存放一些开机配置文件,.img文件,grub为开机引导程序
/devdevice,Linux一切皆文件,硬件设备也以文件的形式保存在此文件夹中
root管理员用户的家目录
home用户家目录,如新建用户xx,则在home目录下会默认新建子目录xx
/etc存放系统配置文件,如账号密码文件等
/opt可放置一些自行安装的额外软件
/mnt挂载的文件系统存放在此
/sbin主要放置系统管理的必备程序,例如:cfdisk、dhcpcd、dump、e2fsck、fdisk等,需要root权限
/tmp存放临时文件
/usr不是user!!!Unix Software Resource的缩写, Unix操作系统软件资源放置的目录,而不是用户的数据;所有系统默认的软件都会放置到/usr
/srvservice,存放一些常用的服务
/lib一些函数库
/sys硬件设备的驱动程序和已加载的核心模块信息
/media放置可移动存储设备目录
/proc放置的数据都是在内存当中, 例如系统核心、行程信息(process)、周边装置的状态及网络状态等
/run系统运行所需文件
/lost+found档案系统发生错误时, 将一些遗失的片段放置到这个目录下

以上就是一些Linux系统常见的目录了,当然Linux版本众多,不同的版本之间会有些细微的差距。

常用命令、快捷键、操作

由于Linux命令众多,参数更是纷繁复杂,不可能在一篇博客中涉及所有,所以如果使用中出现了任何困难,则需查看帮助手册:

#man 命令名

#命令名 --help
who

显示关于当前在本地系统上的所有用户的信息。
常用参数

  • -q:只显示登入系统的帐号名称和总人数
  • -w:显示用户的信息状态栏

例:
在这里插入图片描述
显示的内容为登录名、tty、登录日期和时间和(ip)。

whoami

查看当前登录用户
在这里插入图片描述

图形-字符切换

虚拟机下
字符界面ctrl+alt + F1~F6
切换回图形界面alt+F7

uname

用于显示系统信息

#uname -a

在这里插入图片描述

ls

查看命令

# ls [-aAdfFhilnrRSt] file|dir

在这里插入图片描述
参数:
-R:连同子目录内容一起列出
在这里插入图片描述
-l :以长数据串行列出,包含文件的属性与权限等等数据
在这里插入图片描述

drwxr-xr-x 2 root root 4096 Jun 17 19:02 c++

其中d表示目录 r表示可读 w表示可写 x 表示可执行 ;
对于第一个字符有

字符表示
d目录
-普通文件
l符号链接

d后面三位为当前用户对此文件或目录的权限,下一个三位表示同组用户权限,再下三位表示其他用户权限,2 表示节点数,第一个root表示所属用户,第二个则表示所属组,4096表示文件大小,Jun 17 19:02 表示创建或更新时间,由于权限是三位来表示 ,此时三位权限都有,用数字表示就是7:

权限十进制二进制
r(读权限)4100
w(写权限)2010
x(执行权限)1001

所以如果是可读可写可执行,此时权限就是7,如果是对于所有用户都是可读可写可执行,那么文件此时的权限就是777。

-a:列出所有文件包括隐藏文件
在这里插入图片描述

cd

更改目录

#cd cd [相对路径或绝对路径]

运用cd命令可以自由穿越目录。
参数:
~:进入当前用户家目录,同直接cd一样在这里插入图片描述
“-”:回到上一个所在目录
在这里插入图片描述
“. .”回到上一级目录
在这里插入图片描述

mkdir

创建目录

# mkdir [-mp] 目录名称

在这里插入图片描述
-m :配置目录权限

# mkdir -m 777 test1

在这里插入图片描述
-p :递归创建目录

# mkdir -p blog/test

在这里插入图片描述

rmdir

删除目录,目录必须为空。

rmdir [-p] 目录名称

在这里插入图片描述
非空目录不能删除,所以尝试递归删除blog目录下的test目录,删除成功,
使用:

# rm -rf [xxx目录名]

也可以强制删除目录,但是rm -rf 这个命令要慎用,切记切记~

-p :递归删除目录

cp

就是copy的缩写

cp 参数 文件 目的目录

在这里插入图片描述
常用参数
-i :若目标文件已经存在时,在覆盖前会先询问
-p :连同文件的属性一起复制过去

touch

更新文件修改时间,如果没有文件 则会创建新的文件

#touch [参数] 文件名
which

查看命令所在路径
如:

#which pwd

在这里插入图片描述

pwd

查看当前目录

#pwd

在这里插入图片描述
因为此时是以root用户登入的系统,则~目录为root。

env

查看环境变量
在这里插入图片描述
设置环境变量
为什么linux系统中的命令直接敲名字就能执行,而自己写的程序则需要咱本目录下./执行,原因是系统命令所在的文件夹都加入到了环境变量当中去,要是想自己写的程序也想系统命令那样执行,也需要将程序所在文件夹加入到环境变量。

#vim ~/.bashrc

文末加入

export PATH=$PATH:/home/whoiami/blog  (等号后面是可执行文件所在目录)

重新开一个终端(因为每次开终端都会重新加载配置文件.bashrc)
输入自己的命令:
在这里插入图片描述
此时的配置只对当前用户生效。

如果需要对所有用户生效则都需要修改系统环境变量

sudo vim /etc/profile

还有一种修改环境变量的方式

#export PATH=/xxxx/xxx/:$PATH

在这里插入图片描述
但是这种方法只对当前用户当前窗口有效,优点是方便且立即生效。

cat

查看文件内容

#cat 文件名

在这里插入图片描述

rm

删除文件

#rm 文件名

在这里插入图片描述
强制删除:

#rm -rf
mv

可以作为为文件重命名也可以作为移动命令

重命名

#mv 文件名 新名字

在这里插入图片描述
移动

#mv 文件名 目标目录

在这里插入图片描述

more

查看文件,一屏一屏显示

#more 文件名

在这里插入图片描述
同样查看文件的还有less、head、tail等。

ln
#ln 文件名 链接名

链接分为软连接和硬链接,其中软链接又成为符号链接。ln命令默认为硬链接。
软连接:

#ln -s 文件名 链接名

在这里插入图片描述
修改软硬链接内容都会修改原文件内容。
软连接相当于Windows下的快捷方式,而硬链接则相当于程序中两个变量共享一块内存,因为,在创建一个文件时,文件名作为节点链接到磁盘,而软连接与节点项链,硬链接则直接与磁盘内容相连,创建硬链接后,即使删除原有文件,还是可以通过硬链接访问当原内容;软链接则不行。
在这里插入图片描述

wc

用来计数的命令

#wc 文件名

在这里插入图片描述
上图表示2行、两词、47个字符
wc也可以通过管道命令进行组合,比如查看当前pc的ssh连接数

#w | grep pts |wc -l

在这里插入图片描述
常用参数

  • -c 只显示 Bytes 数。
  • -l 只显示列数。
  • -w 只显示字数。
du

检查目录使用情况

#du

在这里插入图片描述

  • -a
    显示所有目录或文件的大小
  • -b
    以byte为单位,显示目录或文件的大小
  • -c
    显示目录或文件的总和
  • -k
    以KB为单位输出
  • -m
    以MB为单位输出
  • -s
    仅显示目录或文件的总计数值
  • -h
    以K,M,G为单位,提高信息可读性
df

查看磁盘使用情况

#df

在这里插入图片描述

ps

显示当前进程 (process) 的状态
常用参数:

  • -au 显示较详细的信息
  • -aux 显示所有包含其他使用者的行程
  • -A 列出所有的行程
    例:
#ps -A

在这里插入图片描述

#ps -aux

在这里插入图片描述

jobs

显示Linux中的任务列表及任务状态,包括后台运行的任务
参数:

  • -l:显示进程号;

如:当使用ctrl+z暂停top程序时

#jobs -l

在这里插入图片描述

fg

把后台或挂起作业移到前台运行
将top继续执行

#fg 1
top

实时查看进程,与Windows任务管理器同理

在这里插入图片描述

kill

将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止
常用参数:

  • -l <信息编号>  若不加<信息编号>选项,则-l参数会列出全部的信息名称。
  • -s <编号>  指定要送出的信息。

常用:杀死进程

#kill -9 pid号
chmod

修改文件权限,chmod的设定有两种文字设定和数字设定,数字设定可参考上面ls的命令解释。
文字设定:

#chmod [用户或组]  [操作] [权限] 文件名

其中用户或组可以为

  • -u(文件所有者)
  • -g(文件所有组)
  • -o(其他用户)
  • -a(所有)
    例:
#chmod +x [filename]

在这里插入图片描述

ifconfig

查看网卡信息

#ifconfig

例:
在这里插入图片描述

netstat

显示网络连接信息
常用参数

  • a显示所有信息
  • c每隔1s刷新一遍
  • t显示tcp连接
  • u显示udp连接
    例:
#netstat -ac

在这里插入图片描述

grep

文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来

#grep "stdio.h" /lib -R

在这里插入图片描述

find
#find [范围] -name [要搜索的文件名]

如:

# find ~ -name inode_2

在这里插入图片描述

fdisk
#fdisk -l

列出所有分区表
在这里插入图片描述

mount

用来挂在磁盘设备。
在挂在前查看下磁盘信息

#fdisk -l

在这里插入图片描述
插入磁盘
在这里插入图片描述
红框内sdb的为新插入的磁盘信息。
挂载

# mount /dev/sdb /mnt/

在这里插入图片描述
挂载成功。
注意:挂在成功之后被挂载的文件夹原来的文件访问不到,卸载之后才能访问到。
卸载

#umount /mnt

在这里插入图片描述

dd

用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换

常用参数

  • if(input file)输入文件
  • of(output file)输出文件

  • 例:
    拷贝
#dd if=xxx of=xxx

在这里插入图片描述
制作u盘启动盘

#sudo dd if=~/xxx/ubuntu.iso of=/dev/sdb

上述将xxx文件夹下的Ubuntu镜像写入sdb将其制作为u盘启动盘。

tar

用来建立,还原备份文件的工具程序
常用参数:

  • -c 建立新的备份文件
  • 指定备份文件
  • -v 显示指令执行过程
  • -x从备份文件中还原文件
  • z通过gzip指令处理备份文件
  • r 把要存档的文件追加到档案文件的未尾
  • t 列出档案文件的内容,查看已经备份了哪些文件
  • j 用bzip2来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压
  • -C<目的目录> 指定目标目录解压
    例:
    用gzip打压缩包
#tar -zcvf raw.tar.gz raw/

在这里插入图片描述
解压gz包

#tar -xvzf raw.tar.gz

在这里插入图片描述
除了tar还有zip和rar,使用方式大同小异。

useradd

添加新的用户账号
用法:

#useradd [参数] username

常用参数:

  • -d 指定用户主目录
  • -g 指定用户所属的用户组
  • -s 指定用户的登录Shell

例:

#useradd -d /home/ulis -m ulis

在这里插入图片描述

安装软件

Linux有多种软件安装方式如包管理器安装、deb包安装、或者源码安装,由于Linux发型版本不同,使用的包管理器不同,常见的有RPM。apt、yum等。

例:使用apt安装vim

# sudo apt-get install vim

卸载

# sudo apt-get remove vim

其他包管理器同理。

deb包安装

安装

#sudo dpkg -i xxx.deb
#sudo dpkg -r xxx.deb
源码安装

由于每个软件配置参数可能不同,所以只写出一般步骤

#tar -xvzf xxxx.gz(解压)
#./configure
#make 
#make install
Ubuntu虚拟机设置共享文件夹

step 1:打开虚拟机设置
在这里插入图片描述
点击添加文件夹,选中需要共享给Ubuntu的主机文件夹;
在这里插入图片描述
勾选启用共享
在这里插入图片描述
完成。

查看下这个文件夹:

#cd /mnt/hgfs/

在这里插入图片描述

init

init是Linux系统操作中不可缺少的程序之一

常用参数(个人经常用来关机重启嘻嘻):

  • 0 关机
  • 6 重启
    常用的关机命令还有shutdown -h 0 或者poweroff。
总结

由于Linux实在博大精深,一篇博客只能粗略的了解下简单使用,真正想像使用Windows那样熟练使用Linux,则需要长期不断的实践练习,再有一定能力之后,Read the fucking codes,方能有更深入的理解。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值