第一节--必备Linux命令和C语言基础

文章目录

  • 一.环境安装
  • 二. 文件和目录相关命令
  • 三.VI编辑器的使用
  • 四.基础知识
  • 五.数据的表示
  • 六.程序的编译和调试

一.环境安装

1、 虚拟机安装
2、linux系统安装
3、常规配置

环境搭建:
1、VMware-workstation 10
2、ubuntu-14.04.5-desktop-i386.iso
3、共享文件夹目录 :
linux@xiaoyu:/mnt/hgfs$ ls
linux-share

二. 文件和目录相关命令

1、熟悉Linux的文件系统结构
2、熟练使pwd命令
3、熟练使用ls命令
4、熟练使用cd命令
5、熟练使用查看文件内容的命令
6、熟练使用文件复制命令
7、熟练使用文件移动命令
8、熟练使用创建和删除文件命令
//----------------Linux的文件系统结构-------------------//
Linux文件系统就是一个树形的分层组织结构
第一节--必备Linux命令和C语言基础_第1张图片
Linux文件系统和windows系统都是树形结构
思考:
Linux文件系统与Windows文件系统有什么区别?
答:windows系统有磁盘分区,linux系统没有磁盘分区。
第一节--必备Linux命令和C语言基础_第2张图片
//---------------文件系统层次结构标准FHS-------------------//
Filesystem Hierarchy Standard(文件系统层次结构标准)
Linux是开源的软件,各Linux发行机构都可以按照自己的需求对文件系统进行裁剪,所以众多的Linux发行版本的目录结构也不尽相同。
为了规范文件目录命名和存放标准,Linux基金会颁发了FHS(Filesystem Hierarchy Standard)。

/ bin :bin是二进制(binary)英文缩写。
/ boot :存放的都是系统启动时要用到的程序。
/ dev :包含了所有Linux系统中使用的外部设备。
/ etc :存放了系统管理时要用到的各种配置文件和子目录。
/ lib :存放系统动态连接共享库的。
/ home:普通用户的主目录
/ root :根用户(超级用户)的主目录

//---------------终端命令-------------------//


pwd:用于显示用户在文件系统中的当前位置,该命令没有任何选项和参数,命令执行结果显示为绝对路径名。

linux@ubuntu:~$ pwd
/home/linux

ls [OPTION]… [FILE]… 列目录内容
一般前面的方括号是选项,后面是参数。方括号可以不写,所以最简单的书写就是ls
按Q可以返回回到终端界面

LS -A : 显示隐藏文件(带 . 的,例如:.cache .pam_environment)
LS -L :显示更全的信息
LS -R : 如果目录里面还有目录,可以递归显示


补充:文件权限
权限 : 用户(创建者 同组用户 其他用户)

权限类型 应用于目录 应用于其他任何类型文件
读(r) 授予读取目录或子目录内容的权限 授予查看文件的权限
写(w) 授予创建,修改或删除文件或子目录的权限 授予写入权限,允许修改文件
执行(x) 授予进入目录的权限 允许用户运行程序
- 无权限 无权限

第一节--必备Linux命令和C语言基础_第3张图片


cd:改变目录
绝对路径或相对路径

cd /home/joshua/work
cd project/docs
cd / :根目录
cd 子目录名字:切换到该子目录
cd ~家目录:切换到该子目录的上N级家目录
cd …(cd 空格 点 点):回到上一级 回到上一级目录 ( … :上一级 (相对路径))
cd 回到家目录
cd - 回到上一次的工作目录


查看文件

df -T :显示文件目录信息
查看文件内容:命令
cat -s :多个空行合并成一个空行显示
cat -b:加行号显示
nl :加行号
head -n 文件名(前N行,默认10)
tail -n 文件名 (后N行,默认10)


cp:复制 cp [options] file destination

常用选项
i 覆盖时交互提示
r 对文件夹递归
复制多个文件到文件夹
cp [options] file1 file2 dest
文件夹之间的复制:
CP -a / CP-r
cp -a :在保留原文件属性的前提下复制文件
cp -r 复制目录后其文件属性会发声变化
cp A B :将A复制到B里面 (名字变为B)
cp a …/ :将a复制到上一级目录里面(名字没变 还是a)
cp a …/ -i :如果上一级已经有a,就会提示是否覆盖
cp a b …/ ;同时复制多个文件(a,b)到上一级


mv: 移动
mv [options] file destination
移动多个文件:
mv [options] file1 file2 destination
更改文件名

mv :
1、移动
linux@linux:~/test$ mv test1.c …/
2、重命名
linux@linux:~$ mv test1.c test2.c
3 、移动重命名
linux@linux:~/test$ mv test3.c …/testthree.c


创建和删除文件

touch – 创建或更新时间戳

rm – 删除文件
rm a :删普通文件 (a为文件)
rm -i a :交互提示,是否要删除
rm -r :删文件夹

mkdir :创建文件夹
mkdir -p :创建级联文件夹


其他命令

ctrl +L : 清屏
ctrl+ALT+t :打开一个新的终端窗口
ctrl+shift+n :打开一个当前终端窗口的标签窗口(就是当前终端窗口的扩展显示,实际上还是一个窗口)
man 命令 :可以查看该命令的帮助手册
exit :推出终端
vi test.c :编写test.c 的内容
按⬆和按⬇可以快速输入之前和之后输入过的命令

三.VI编辑器的使用

1、熟悉vi的三种模式及模式切换命令
2、熟练使用vi的拷贝和粘贴命令
3、熟练使用vi的保存和退出命令
4、熟练使用vi的光标命令
5、熟练使用vi的查找命令
6、熟练使用vi的替换命令
7、熟练使用vi的复制和剪切命令


vi是Linux中最基本的编辑器。但vi编辑器在系统管理、服务器配置工作中永远都是无可替代的。


vi有以下三种模式
命令行模式
用户在用vi编辑文件时,最初进入的为该模式。可以进行复制、粘贴等操作。
插入模式
进行文件编辑,按ESC键可以回到命令行模式。
底行模式
光标位于屏幕的底行。可以进行文件的保存、退出、查找、替换、列出行号等


vi模式切换命令:
第一节--必备Linux命令和C语言基础_第4张图片

O:在光标上一行插入
o: 在光标下一行插入
I:在光标所在行开头插入
i: 在光标所在位置前面插入
A:在光标所在行最后插入
a:在光标所在位置后面插入

vi拷贝与粘贴命令:
第一节--必备Linux命令和C语言基础_第5张图片

(大写)P粘贴在光标所在行上边
(小写)P:粘帖在光标所在行下边

vi保存和退出命令:
第一节--必备Linux命令和C语言基础_第6张图片

R head.h :插入头文件

vi光标命令:
第一节--必备Linux命令和C语言基础_第7张图片


vi的查找命令:

/string 查找字符串
n 继续查找
N 反向继续查找
支持正则表达式比如:/^the /end$
底行模式下 :!date 可以查看是日期
:PWD 可以查看程序存在位置


vi编辑器中的替换:

vi 替换
:范围 S /old /new (S:替换,“.”当前行 “$”:最后一行 "%"全文替换。

:s/str1/str2 默认替换当前行
. ,$ s/str1/str2/g :从当前行到最后一行进行替换
:1,$ s/str1/str2/g 从第一行到最后一行进行替换(全文替换)
:%,s/str1/str2/ g 全文替换
(“g”全部替换,没有g,默认替换第一个)


vi复制和剪切命令:

y0-将光标至行首的字符拷入剪贴板
y$-将光标至行尾的字符拷入剪贴板

d0-将光标至行首的字符剪切入剪贴板
d$-将光标至行尾的字符剪切入剪贴板

range y-块复制 (1,$ y 复制第一行到最后一行)
range d-块剪切


vi程序整理:
命令行模式下 按下gg=G 系统会自动整理程序


屏蔽程序:

#if 0      //--#if 后面是0,代表假,该段程序不参与编译,即屏蔽该程序
//程序段
#endif
#if 1      //--#if 后面是1,代表真,该段程序参与编译
//程序段
#endif

如图:
禁用程序段
第一节--必备Linux命令和C语言基础_第8张图片
启用程序段
第一节--必备Linux命令和C语言基础_第9张图片

CTRL+ww //–vi界面下可以在两个文件之间进行光标切换

四.基础知识

1、计算机基本结构-了解
2、什么是程序-掌握
3、程序设计语言的发展-掌握
4、程序设计步骤-熟悉


计算机基本结构:
冯﹒诺依曼模型:计算机硬件由下图中的5部分构成
存储程序的思想:系统的运行过程就是按照一定的顺序不断执行存储器中的程序指令的过程
第一节--必备Linux命令和C语言基础_第10张图片
存储器的分类:
主存储器即内存。程序中待处理的数据和处理的结果都存储在内存中。
外存储器是用来长期保存数据的大容量存储器。
寄存器是CPU内部的高速存储器,速度快,数目少。


什么是程序:
广义上讲,为了实现一个特定的目标而预先设计的一组可操作的工作步骤,称之为一个程序。
程序就是系统可以识别的一组有序的指令。存储在磁盘上,被加载到内存中执行。
第一节--必备Linux命令和C语言基础_第11张图片


程序语言的发展:
机器语言
直接使用机器指令(0,1序列)来设计程序,可以被计算机系统直接识别。和自然语言完全不同,难于记忆和理解,工作量大,效率低,无法移植。
00011000
00110001
00011001

汇编语言
把机器指令符号化,即通过一组简单的的符号来表示机器指令,更接近于自然语言,更容易理解和使用。 和机器语言一样,开发工作量大,无法移植。
MOV A, 1000
MOV 1010, A

高级语言
和特定的计算机系统无关,更接近于人类自然语言。一条语句对应多条机器指令,工作量小,开发效率高。 BASIC , FORTRAN, PASCAL, C, C++ ,Java,C# 等。


程序设计步骤:
第一节--必备Linux命令和C语言基础_第12张图片

五.数据的表示

1、数值数据的表示-掌握
2、非数值数据的表示-掌握


计算机数据表示:
送入计算机的数字,字母,符号等信息必须转换成0、 1组合的数据形式才能被计算机识别。
能够进行算术运算得到明确数值概念的信息成为计算机数值数据,其余的信息成为非数值数据。


数值数据的表示:
包括十进制、二进制、十六进制和八进制。
基数与各数位的权
基数是指该进位制中允许选用的基本数码的个数。如十进制数,基数为10, 可选用0、1、2……9共10个不同数码中的任何一个。
而位权的大小是以基数为底,数字所在位置的序号为指数的整数次幂。
123 = 1X100 + 2X10 + 3X1
= 1X102 + 2X101 + 3X100
二进制
基数为2的进位制叫二进制
二进制只有0、1两种数码,计数逢2进位
1010 = 1X23 + 0X22 + 1X21 + 0X20
= 1X8 + 0X4 + 1X2 + 0X1
= 10
十六进制
基数为16的进位制叫十六进制
十六进制有0、1、2…9、a、b、c、d、e、f 共16种数码,计数逢16进位
0x1010 = 1X163 + 0X162 + 1X161 + 0X160
= 1X4096 + 0X256 + 1X16 + 0X1
= 5012


非数值数据表示:
非数值数据包括文字、符号、图像、语言和逻辑信息等,也都是以0、1形式存在。
字符数据在机器内也被变换成二进制编码的形式。国际上普遍采用的一种编码是美国国家信息交换标准代码,简称为ASCII码。
char unsigned char 1字节 00000000~11111111 0~255


ASCII:
第一部分由 00H 到 1FH 共 32 个,一般用来通讯或作为控制之用,有些字符可显示于屏幕,有些则无法显示在屏幕上。
第二部分是由 20H 到 7FH 共 96 个,这 96 个字符是用来表示阿拉伯数字、英文字母大小写和底线、括号等符号,都可以显示在屏幕上。
第三部分由 80H 到 0FFH 共 128 个字符,一般称为『扩充字符』,这 128 个扩充字符是由 IBM 制定的,并非标准的 ASCII 码。这些字符是用来表示框线、音标和其它欧洲非英语系的字母。

六.程序的编译和调试

1、gcc编译器-熟练使用
2、程序调试-掌握
3、C语言基础-了解


gcc编译器:

gcc(GNU Compiler)是GNU推出的多平台编译器,可将C、C++源程序编译连接成可执行文件,支持以下后缀:
.c c语言源代码
.h 程序所包含的头文件
.i 已经预处理过的C源代码文件
.s 汇编语言源代码文件
.o 编译后的目标文件
gcc –o hello hello.c
-o 输出可执行文件
-c 只要求编译器输出目标代码(.o文件),而不必输出可执行文件
-g 用于调试
./hello 查看输出结果


警告展示:

-Wall  ;可以对于一些不规范的书写进行警告展示
linux@linux:~/xiaoyu$ gcc test2.c -o test -Wall
//----------------------------------------------------------------
linux@linux:~/xiaoyu$ vi test2.c
linux@linux:~/xiaoyu$ gcc test2.c -o test -Wall  //--编译
//-------------------------------------------------------------
("."代表当前目录)
./   :执行当前目录文件
linux@linux:~/xiaoyu$ ./test  //--执行
hello world

程序调试:

利用__FILE__,__LINE__,__FUNCTION__实现代码跟踪调试 
__FILE__     :  调试的文件名
__FUNCTION__:  调试的函数名
__LINE__:      调试的行号
#include 
int main(int argc,char **argv)
{
     
   printf("%s,%s,%d\n",__FILE__,__FUNCTION__,__LINE__);
	 return 0;
}

C语言基础:
算法的基本概念
一个程序应当包含两部分内容:
对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构
对操作的描述。即操作步骤,也就是算法
第一节--必备Linux命令和C语言基础_第13张图片
做任何事情都有一定的步骤。步骤要按照一定的顺序进行,缺一不可,次序也不能错。广义的说,为解决一个问题而采取的方法和步骤就称为算法。
第一节--必备Linux命令和C语言基础_第14张图片

你可能感兴趣的:(#,阶段一,精通LinuxC语言,linux)