ALOT学习——Linux基础命令+C语言基础

Linux基础命令

初识Linux

man

  • 手册命令,是manual手册的意思,查找系统相关信息 man+空格+ “命令”=显示该命令的信息

help

  • 常用命令行命令

date

  • 查看当前时间

cal

  • 查看当前日历

Linux常用命令

clear

  • 清除屏幕信息

pwd

  • 查找当前环境的工作目录的绝对路径

cd

  • 改变工作目录 ls cd / 转到 根目录 cd ~ 转到用户工作目录

ls

  • 显示当前目录下的内容

  • ls -l

    • 显示当前目录长度
  • ls -l test.txt

    • 位于test.txt的上级目录时,显示test.txt的文件大小
  • ls text/

    • 显示text下的内容

cd --help

  • 显示cd的用法,基本都会带有的使用参数

回到初始工作目录

  • 1、cd /home/mouren7/ 2、cd ~ 3、cd

touch

  • 创建一个文件

    • 在桌面创建一个text的文本文档:1.cd Desktop/ 2.touch text.txt 3.ls 查看是否创建

rm

  • 删除文件

    • 删除text.txt:1.rm text,txt 2.ls 检查
  • rm -r

    • 循环删除

      • 删除一个非空目录(文件夹内有文件)

mkdir

  • 创建空目录

  • .

    • 当前目录
    • 上层目录

rmdir

  • 删除空目录

mv

  • 当前目录内进行重命名

    • mv text.txt example.txt 即将test更名为example
  • 如果是其他目录,进行文件移动

    • mv example.txt …

      • example移动到上级目录

cp

  • 复制文件

  • cp -r tt/ test/

    • tt文件夹复制到test

cat

  • 显示文件内容
  • 子主题 2

>

  • 重定向

    • 将本该显示到界面的信息定向到特定的文件内

>>

  • 追加重定向

    • echo “文字” >> example.txt 重复写入

echo

  • 对文件添加内容

head

  • 默认显示头部10行信息

  • -行数

    • head -10 test.txt

tail

  • 默认显示尾部10行信息
  • -行数

more

  • 按照页的方式展示文档内容,按空格展示下一页

chmod

  • 修改文件权限

    • chmod -r test.txt

      • 文件不可读,即cat test.txt不显示内容
    • chmod +r test.txt

      • 文件可读
    • chmod 000 test.txt

      • 所有权限都无

        • 664->110 110 100

          • rw-rw-r–
    • r读

      • w写

        • x执行权限

sudo apt install tree

  • 安装tree软件

tree

  • 显示文件结构

    • 子主题 1

tail

  • tail -n 100 文件名 -f

    • -n显示最后的多少行,-f 用于监视文件增长,没有-f,看不到日志动态新增

压缩文件

  • tar
  • zip

查找 find

  • grep -rn “hello,world!” *

    • 在当前目录下 查找"hello,world!"字符串
  • find -name “*.txt” -print 查找txt结尾的文件并输出到屏幕上
    find /cmd “.sh” -print 查找/cmd目录下所有sh文件,并输出
    find . -perm 755 -print 查找当前目录下权限为755的文件,并输出
    find pwd -user root -print 查找当前目录下属主为root的文件,并输出
    find ./ -group sunwill -print 查找当前目录下所属主是sunwill的文件
    find /var -mtime -5 -print 查找/var目录下更改时间为5天内的所有文件
    find /var -mtime +5 -print 查找/var目录下更改时间为5天以前的所有文件
    find /var -newer “myfile1” ! -newer “myfile2” -print 查找/var目录下比myfile1新,但是比myfile2旧的所有文件。
    find /var -type d -print 查找/var目录下所有目录
    find /var -type l -print 查找/var目录下所有的符号链接文件。
    find . -size +1000000c -print 查找当前目录下大于1000000字节的文件
    find / -name “con.file” -depth -print 查找根目录下有无"con.file",若无则在其子目录中查找
    find . -type f -exec ls -l {} ; 查找当前目录下是否有普通文件,若有则执行ls -l

编辑器

vim

  • 正常模式

    • 指令

      • x剪切

        • [n]x 剪切光标右边n个字符
        • [n]X 剪切光标左边n个字符
      • d 删除

        • d[n]w 剪切n个单词
        • d[n]l 剪切左边n个
        • d[n]h 剪切右边
        • dd 剪切一行
      • y 复制

        • y[n]w 复制n个单词
        • y[n]l 复制左边n个
        • y[n]h 复制右边
        • yy 复制一行
      • p 粘贴

  • 编辑模式

    • 正常模式下。按i,a,o进入;按Esc退出
    • 按r进入替换模式
  • 视图模式

    • 正常模式下,按v进入,可以进行文本选择
  • 命令模式

    • 正常模式下,输入:!进入

      • 1.文件已建立,则:wq 或者x

        • 或者 shift+zz ZZ
      • 2.文件没有创建:,则: wq asd.txt或者x asd.txt

      • 3.强制推出

        • q!

XMind: ZEN - Trial Version

C语言基础

程序生成过程

1、预处理 将源文件当中的预处理指令替换为对应的内容
gcc -E 源文件
2、编译 将预处理后的文件转换成对应的汇编文件 此时会生成一个.s结尾的汇编文件
gcc -S 源文件 或 前一步生成的预处理文件
3、汇编 将汇编文件转换为目标文件(二进制码文件)此时会生成一个.o结尾的目标文件
gcc -c 源文件 或 前一步生成的汇编文件
4、链接 将前一步生成的目标文件和系统的库(静态库或动态库)文件 合并生成为可执行文件
gcc 源文件 或 前一步生成的多个目标文件
一般来说,在这一步,是系统当中的链接器进行操作的,只不过gcc当中融合了链接器
5、运行
目录下的可执行文件的方式 一般如果是当前目录./ 否则会将其当做系统指令运行

编译期出的错误,一般为C语言语法性的错误
链接期的错误,一般为找不到实际调用的错误
运行期错误
    (1)会导致程序奔溃的错误 一般是由于不符合系统处理的错误
    (2)数据型错误

变量

1、变量是什么?
变量就是对一块内存进行标记的标识符
(1)英文 + 数字 + 下划线
(2)不要和系统命名冲突
变量存储在哪里?
变量的标识其实就是存放在可执行文件对应的段内
__text,__data,__bss
变量对应的内容,存放在系统当中的内存区域中
2、为什么需要这样定义
C语言作为一种高级语言
虽然我们可以通过一定的汇编知晓其内部的操作
但是在不同的平台上,其汇编的代码是有一定的区别的
完成C语言跨平台,高移植性的特点
3、变量怎么用?
1、int
(1)定义了数据的存放类型为int类型
(2)指明其在内存当中占有sizeof(int)个字节 这个数值和系统位数还有编译器位数有关
2、变量名
在可执行文件当中的对应位置进行声明的一种和地址映射的标识符
3、= 这个是赋值操作
4、666是一个只能读取的量 初始化前面申请的地址空间当中的内容
4、数值类型
(1)整数类型 char 1 short 2 int 4 long 8 long long 8
(2) 浮点数类型 float 4 double 8
每个数据是有其范围的,如果超过范围,就会导致数值越界,越界就到值数值出现错误
可以详细去了解 系统当中的原码 反码 补码的关系
5、符号位标记
signed 带符号
unsigned 不带符号
sizeof运算符其返回的是类型或变量在内存当中可以申请的长度(一般为无符号长整型)unsigned long
对于占位符
d i 代表整型数据
l一般代表长类型
u代表无符号
c 代表以ASCII值的方式进行输出
s 代表以字符串的形式输出内容 其到\0截止

    对于输入和输出来说,都需要注意数据的格式的正确性,
    因为不同的格式在内存当中存放的方式是不一样的,就会导致对数据的处理是不一样的

运算符

1、运算符 完成变量或表达式进行运算的符号
(1)运算符一般用于多个数值(变量,常量,表达式的值)
(2)表达式 是以运算符+操作数+表达式
(3)语句 就是以一段话说完,以;结尾或者以{}结束的叫做语句
2、左值与右值(关于这个值是否可以进行读写的操作)
左值指能够在=左边存在的值 也就代表着这个值是可以进行赋值操作的
右值指能够在=右边的值 也就是这个值可以进行取值操作

    (1)何谓常量
    常量其实就是只能够进行取值操作的简单量 一般常量都是只能作为右值的
    诸如数字 1 100 2000 1.33 2.55 字符串 都是右值

3、对于后置++来说,首先先进行数值的运算 然后表达式返回的值为改变前的值
对于前置++来说,首先先进行数值的运算 然后表达式返回的值为改变后的值
4、(1)取余运算 只针对整数类型
(2)逻辑与 和 逻辑或的短路特性 因为这两个操作符的结合性是从左到右的 如果左边的操作数 不满足条件,右边的操作数也就不会得到处理
(3)三目运算符 ?:表达式 其实就是一种简写的分支运算
注意在C语言当中,其返回的是数值 并不是变量,所以只能做右值,不能做左值
(5 > 3?(printf(“very good!\n”)):(printf(“not good!\n”))) = m;

分支语句、循环体

1、顺序结构 通过运算符的结合性 代码从上往下执行来保证
2、分支结构 通过分支语句保证条件满足和不满足 来进行控制
if-else
switch case break
3、循环结构 通过循环语句保证条件满足和不满足 循环执行
while do-while for goto
continue 和break
continue代表是跳出本次循环,continue以后的语句本次循环不在执行
break 跳出最近的循环体 之后的所有循环都不再执行
三大结构都是可以进行嵌套使用的 另外需要注意循环的死循环处理

 对于switch当中的表达式 必须是确定的值 浮点数是不可以在这里使用的
 break 指是否跳出该分支
 switch 一般适用于分支较多,且数据明显的可以进行穷举处理 且数据是确定值
 if-else一般用于分支较少或数据是不确定值的
 while 和 dowhile的区别在于初识条件不满足的情况下
 while不会执行 do-while会执行一次 因为while是先判断再执行 do-while是先执行再判断

变量的作用域、生命周期

1、变量的存储位置
(1)变量的作用域 其和编译阶段有关,如果超出作用域 就会导致编译错误
基于全文件的作用域 这种全局变量 需要用到多文件编译
基于本文件的作用域 这种一般称为静态全局变量 只和这个文件相关 其他文件无法使用
函数内的局部变量 只能够在本函数当中使用,其他函数当中无法使用
基于域的局部变量 只能够在域当中使用,域外部无法使用
变量的作用域范围为:变量的定义或者或者扩展定义开始,直到域结束为止
扩展作用域一般使用extern关键字在需要的位置进行扩展。
如果使用extern对于局部变量进行扩展作用域 会导致链接的过程当中找不到该变量 出现链接错误
产生该问题的原因为extern只会扩充作用域,但是局部变量在对应的局部域当中没有真正定义,从而出现找不到实体的链接错误

(2)变量的生命周期 其和运行阶段有关,如果超出生命周期,就会导致运行错误
变量的存储位置
对于非静态局部变量,一般我们称其定义的位置在栈区
栈区的特点当对应的域结束时,系统会对这块空间进行释放
另外可以手动申请存放到堆区,堆区需要手动进行释放
对于全局变量,其自带静态特性,可以通过static关键字声明变量存放在静态区
静态区的特点,是和整个程序相关的,程序结束,其才会释放

        生命周期的开始为:变量的定义,结束为:变量的空间的释放
        static 针对于声明周期,使其声明的变量存放到静态区,可以理解为给变量续命       针对于作用域,其表示限定作用域 比如在某些.c文件当中定义的函数,添加static限定该函数只能适用于当前的.c文件

形参是对应的局部作用域范围当中最大的
域的内部的局部变量 只能够在域当中使用

函数库

#include <stdio.h>
// 字符串或字符空间处理相关的函数
#include <string.h>
// 一般存在和系统有一定关##系的函数 标准库
#include <stdlib.h>
// 和时间相关的函数都定义在这里面
#include <time.h>
// 一般这里面定义的都是和系统相关的,甚至于就是操作系统内核相关的函数
#include <unistd.h>
// 主要涉及到数学运算的函数定义 诸如sqrt开平方 sin cos

putchar getchar puts gets sprint
getchar()–从控制台输入字符
putchar()–输出字符到控制台
gets()–从控制台获得字符串
puts()–输出字符串到控制台
sscanf()–从字符串读取数据
sprintf()–数据输出到字符串
strlen() 计算字符串长度
strcpy() 字符串拷贝
strcat() 字符串拼接
strcmp() 字符串比较
strlen 字符串长度 strcpy字符串拷贝 strcmp字符串比较 strcat字符串拼接
strcmp 比较,其实是按照ASCII值逐位进行比较 如果前一个ASCII比第二个大,则返回1,否则返回0,
abort 强制退出程序 exit退出当前进程 如果当前只有一个主进程则相当于是return结束整个程序
rand随机数 srand随机种子 atoi 字符串转数字 system系统功能调用的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钟某某人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值