Linux基础(3)

写程序的阶段

  1. 只写一个.c文件,在.c文件中写一个函数(main函数),把所有功能都推到main函数中
  2. 只写一个.c文件,在.c文件中除了main函数以外还有其他的功能函数
  3. 多文件的形式写项目
    main.c 存放的是主函数和功能函数的调用
    func.c 存放的是功能函数的实现
    func.h 存放的是功能函数的声明以及各种定义
    makefile 脚本文件,存放的是一些编译规则
  4. 可以把.c文件做成库文件(静态库和动态库)

Linux的编辑器和编译器

编辑器(编写程序)

在Linux环境中有很多vi vim gedit emacs,我们主要使用vim

在命令模式下的操作

光标的定位

h(向左) j(向下) k(向上) l(向右)

命令 作用
gg 光标回到首行
G 光标回到末行
23G 快速定位到第23行
/关键字 光标定位到出现关键字的位置
(n从上往下查找,N从下往上查找)
文本的编辑
命令 作用
yy 复制(把光标所在行的内容进行复制)
p 粘贴(粘贴到光标所在行的下边)
P 粘贴(粘贴到光标所在行的上边)
dd 剪切/删除(把光标所在行的内容进行剪切)
3yy 复制光标所在行往下三行的内容
3dd 剪切光标所在行往下三行的内容
3p 粘贴到光标所在行的下边三次
3P 粘贴到光标所在行的上边三次
ygg 从首行到当前行进行复制
yG 从首行到当前行进行复制
x 删除光标所在位置的内容
D 删除光标所在位置之后的内容
u undo撤销
ctrl+r redo重做
r 替换(只替换一个字符)
切换模式

iIaAoO 切换到编辑模式(插入模式)
: 切换到命令行模式(底行模式)
v 切换到可视模式

当我们切换到可视模式,可以在此模式下调整代码格式

  1. 进入可视模式
  2. 选中要调整格式的代码
  3. = 进行调整

可视模式下我们可以输入V进入切换到可视行模式,ctrl + v切换到可视块模式

可视块模式下可以进行增删改的操作

块插入

  1. 进入可视块模式 ctrl + v
  2. 选中要插入的位置
  3. 按 I 进入到插入模式
  4. 输入要插入的内容
  5. 按两下esc

块删除

  1. 进入可视块模式 ctrl + v
  2. 选中要删除的位置
  3. 按 d 进行删除

块替换

  1. 进入可视块模式 ctrl + v
  2. 选中要替换的位置
  3. 按 r 进行替换
  4. 录入要替换的内容

在编辑模式下的操作

函数名的补齐 ctrl + p

在命令行模式下的操作

保存与退出
命令 作用
w 保存
q 退出
wq 保存并且退出
wqall 保存所有文件退出所有文件
wqa 保存所有文件退出所有文件
q! 强制退出
查找和替换
命令 作用
3,7 s/zack/root/ 把第3-7行首次出现的zack替换成root
3,7 s/zack/root/g 把第3-7行所有出现的zack替换成root
% s/zack/root/g 把文件中出现的所有zack替换成root

使用vim打开多文件

  • vim -p 多个文件
    可以使用ctrl + alt + pgdn/pgup切换要操作的文件
  • vim -o 多个文件
  • vim -O 多个文件
    可以使用ctrl + ww 切换要操作的文件

可以修改vim的配置文件

  • 修改 /etc/vim/vimrc 会影响所有用户
  • 修改 ~/.vimrc 会影响当前用户

编译器

gcc编译器依赖于cc编译器,都是X86环境下的编译工具
arm-linux-gcc(交叉编译工具链),是ARM平台的编译工具

大端格式和小端格式的问题

  1. 什么是大端格式,什么是小端格式
  2. 设计一套程序,判断当前的环境是大端格式还是小端格式

使用gcc编译程序时

  1. 编译之后什么都没有提示,程序没有语法问题,会生成可执行文件
  2. 编译之后报警告,程序有点问题,但是不是致命问题,也会生成可执行文件
  3. 编译之后报错误,程序有致命问题,不会生成可执行文件

默认生成可执行文件的名字叫做a.out,执行可执行文件./a.out

1
2
3
gcc hello.c -o hello	  #指定了生成的可执行文件的名字hello
gcc -o hello hello.c
gcc -Wall hello.c #-Wall 列出所有警告

用户管理

用户的分类

功能上的分类:普通用户超级用户

超级用户是在安装Linux系统时,操作系统默认创建的用户

普通用户是之后再创建的用户就是普通用户

范围上的分类:本地用户网络用户

创建在本地计算机中的用户是本地用户

创建在远端服务器上的用户是网络用户

用户的创建

注意 : 虽然都是Linux操作系统,但是不同的操作系统会有不同的处理

当创建用户时,伴随着会出现一下操作

  1. 当创建用户时,系统会为新创建出的用户分配一个ID号,叫做UID

  2. 系统会为新创建出的用户创建一个同名的组,会为组分配一个ID号 GID

  3. 系统默认会把新创建的用户添加到新创建的组中,该组也叫做该用户的主组

  4. 系统默认会在/home/目录中创建一个同名的目录,作为该用户的家目录

  5. 系统会把/etc/skel/目录中的文件当作默认的配置文件拷贝家目录中

  6. 系统会把用户的信息记录到/etc/passwd文件中

root:x:0:0:root:/root:/bin/bash

意义
root 用户名
x 代表的是密码(密码存放在/etc/shadow)
0 UID
UID : 0 超级用户
UID : 1 - 499 系统用户
UID : 500以上 普通用户
0 GID
root 用户的标志
/root 家目录的路径
/bin/bash 使用的是哪种命令解释器
  1. 系统会把用户的密码记录到/etc/shadow文件中

root:$6$WsTIl5zL$6dD0Mv:19186:0:99999:7:::

意义
root 用户名
加密以后的密码
19186 上次更改密码的日期(从1970-1-1到现在的天数)
0 最短密码的期限(按天算,0代表无期限)
99999 最长密码的期限(按天算)
  1. 系统会把用户组的信息记录到/etc/group文件中

用户管理的命令

命令 作用
sudo useradd 用户名 创建用户
sudo passwd 用户名 为新用户设置密码(修改密码)
sudo su 用户名 切换用户
ctrl + d 结束当前用户登陆终端
sudo userdel 用户名 删除用户(只删除用户)
sudo userdel -r 用户名 删除用户(伴随着创建的东西都会被删除掉)