C高级学习笔记1

Linux 简介

目录结构

/(根目录)--功能文件夹(目录文件)----普通文件

根目录下的文件:

bin存放可执行文件的位置(命令)binary 二进制

etc 存放配置文件的位置

mnt  mount 挂载目录 接入新硬件的时候用 比如U盘

proc process 存放进程信息的位置

boot 存放引导文件等 电脑刚刚启动时 不直接运行操作系统,而是一个引导程序,引导程序会引导计算机执行操作系统

dev  device存放设备的位置

home 家目录、用户工作目录/home/linux,用户可以随意操作的地方

lib  存放库文件的位置

root 超级用户刚工作目录

sbin 存放指令的位置

基本快捷键

进入控制台 Ctrl + Alt + T

增大字体 Ctrl + Shift + +

减小字体 Ctrl + -

退出终端  exit

清空终端  clear

Linux 基础命令

ls

查看目录或者文件信息的命令

一般来说,可以简单的通过颜色来区分不同的文件类型:

白色: 普通文件

绿色: 可执行文件

深蓝色: 目录文件

ls -a 显示所有文件,包括隐藏文件 (文件名第一个字符是'.'的文件,叫隐藏文件)

ls -l 显示文件的详情。

-rw-rw-r-- 1 linux linux 496 3月 19 16:50 08-id.c

属性: 两部分。 第一个字符是第一部分。 后九个字符,是第二部分。

第一部分 代表了文件的类型: - 普通文件 d 目录文件

第二部分: 权限: r read w write x execute

第一组:代表了文件owner 的使用权限

 第二组:代表了文件所属组的使用权限

 第三组:代表了 other 的使用权限

drwxr-xr-x

d代表这是一个目录文件

rwx第一组 用户的权限

r-x第二组 同组用户权限

r-x第三组 其他组用户权限

-a -l都属于命令参数

绝对路径和相对路径

绝对路径:从根开始找
C:\Windows\Fonts
相对路径:从当前的位置开始找

当前目录是 .

上级目录是 ..

工作目录是 ~

根目录  /

chomd(change mode)

修改文件的使用权限

两种方式:

a) chmod +x id.c 给一个文件添加可执行权限

b) chmod 664 id.c 设置一个文件的权限

664 是3位8进制数

转成二进制 110 110 100 rw-rw-r--

帮助手册

man 手册

 man 1 ls man 3 strcpy man 7 ascii

 如果想对linux命令进行更深入的学习,帮助手册是最好的。

q退出

1是普通的命令

2是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)

3是库函数,如printf,fread

4是特殊文件,也就是/dev下的各种设备文件

5是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义

6是给游戏留的,由各个游戏自己定义

7是附件还有一些变量,比如向environ这种全局变量在这里就有说明

8是系统管理用的命令,这些命令只能由root使用,如ifconfig

info和help只能查看命令

b) info : info ls

c) help : ls --help

cd进入目录

cd 路径

绝对路径: 从根/开始的路径

相对路径: 从当前位置开始的路径

一些路径的表达:

/ 根目录

~ 用户工作目录。

. 当前路径

.. 上一级路径

- 上一次进入的路径。

/出现在路径的最开始,表示根目录,否则表示路径的分隔符

pwd

查看当前位置的绝对路径。

 touch

创建普通文件或者改变一个已存在文件的时间戳

将来我们使用makefile编译时,没有修改的过的文件不参与编译。

示例: touch a.c b.txt c.sh

touch后面写已存在的文件,就是改变时间戳(最后的修改时间)

不能在根目录下随意创建文件。在自己的工作目录中随便

mkdir(make directoy)

创建目录文件   mkdir 文件夹名

rm (remove)

删除文件 remove

普通文件: rm a.c

目录文件: rm -r AAA

mv (move)

功能有二: 1移动 2重命名

mv 文件名1(或者文件夹) 文件名2

如果文件名2存在,并且是文件夹,那么就是移动。如果文件名2不存在就是改名

示例:

mv AAA BBB (如果 BBB 不存在,则是 重命名 功能)

mv a.c BBB (如果 BBB 存在,则是 移动 功能)

 //将Desktop中的a.c移动到当前路径,Desktop/a.c是相对路径,Desktop一定是在当前路径下

小总结

通配符

* 可以匹配多个字符。 ls *.c  查看所有以.c结尾的文件 。a.c b.c test.c

? 可以匹配一个字符。 ls ?.c  查看任意名字是一个字符的.c文件。 a.c b.c test.c 能查看a.c b.c,不能查看test.c

[] 可以匹配一位数字,只能匹配一位数字(个位数)。 ls a[2-4] 查看a2 a3 a4 ls a[^2-4] 查看a2 a3 a4以外的文件

中通配符可以组合使用

创建或者删除多个类似文件时 也可以{1..9}这就就对1到9的2文件进行操作了

cp(copy)

普通文件: cp a.c b.c 将 a.c 复制一份出来,新文件的名字叫做 b.c

目录文件: cp -r AA BB 将 AA 复制一份出来,新的文件名称叫做 BB

查看文件

cat file.c 文件所有内容直接显示在屏幕上。

more file.c 显示一屏信息。再向下看,需要按空格或者回车。直到看完所有内容,文件才全部写到终端。 q退出

less file.c 显示一屏信息。可以按上下箭头来回查看。按q 退出当前模式。 q退出

head file.c 默认打印出文件的前 10 行。 如果想指定行数。使用选项参数: head -15 file.c

tail file.c 默认打印出文件的后 10 行。 如果想指定行数。使用选项参数: tail -20 file.c

vim编译器的使用

共三种模式: 命令模式 、 插入模式 、 底行模式

(1) 命令行模式下的快捷方式: 刚进入到vim编辑器,就是命令模式

yn 复制 n 行 yn 光标在想复制内容的第一行的任何位置, n = 想复制的最后一行的行号 - 光标所在的行号

dn 剪切 n 行 dn  光标在想删除内容的第一行的任何位置,n = 想剪切的最后一行的行号 - 光标所在的行号

p 粘贴  粘贴到光标所在的下一行

x 删除

u 撤销

+ 向下

- 向上

88G 光标跳到 88 行 88gg

$ 一行末尾  home end

ZZ 保存并退出

v 选中的起始位置

v……y 块复制

v……d 块剪切。(1)将光标移动到待剪切的起始位置(2)按下v (3)将光标移动到待剪切的终止位置(4)按下d

代码整体移动: 先选中,然后 : shift > (向右移动) shift < (向左移动)

调节字体大小: ctrl - 调小字体。 ctrl shift + 调大字体 ctrl = 对齐格式(不建议使用)

(2) 底行模式

a) 分屏模式: vsp 左右分屏 sp 上下分屏 ctrl+ww 切换屏 vsp 文件名

b) 查找 : /关键字 ?关键字 n 下一个

/int 标记状态
:/int     // 从前向后查找int
:?int     // 从后向前查找找int

此时按n 可以继续找下一个(next)

c) 替换 : :范围 s/old/new/gc gc:这两个功能是可选项。如果选择,表达的是替换前询问、替换所有的意思。

:s/ai/MM     光标所在当前行找到ai 更改为MM
:s/a/MM/g    光标所在当前行的所有a 更改为MM
:1,10s/int/MM  从第1行到第10行 所有的int 更改为MM
:4,$s/int/MMM  从第4行到文件末尾 所有的int 更改为MMM
:%s/t/MMM  全篇出现的t 全部替换为MMM

:1,11s/int/MM/gc  询问 从第1行到第10行 所有的int 更改为MM

y 确认替换
n 不替换
a 替换所有
q 退出
l 替换当前位置后退出
^E ^Y   移动光标的快捷键

(3) 进入插入模式:

不同的当时光标的起始位置不同。

新增 (append)

a :从光标所在位置 后面 开始新增资料 当前字符的后面

A : 从光标所在 行最后面的 地方开始新增资料。

插入 (insert)

i : 从光标所在位置 前面 开始插入资料

I :从光标所在 行 的第一个非空白字前面 开始插入资料。

开始 (open)

o :在光标所 在行下 新增一列并进入输入模式。

O: 在光标所 在行上方 新增一列并进入输入模式。

用户管理

用户分类

超级用户:1个。 root 拥有最高权限。

普通用户:多个。linux 拥有的权限十分有限。 安装文件、关机等都无法实现。 /home/linux

切换用户: su 用户名

示例: su root  su linux (你们电脑当前有一个linux用户)

临时借用管理员权限: sudo + 命令

 sudo touch /a.c 借用管理员权限在根目录下创建一个文件。

退回原用户: exit

用户名@ 计算机名 : 路径

linux @ ubuntu : ~ $

root @ ubuntu :/home/linux #

添加或者删除用户

添加: sudo adduser alice

删除: sudo userdel -r alice

用户信息: /etc/passwd 查看方法 vi /etc/passwd

用户密码: /etc/shadow 查看方法 sudo vi /etc/shadow

用户工作目录: /home ls /home

进程管理

进程:程序运行,系统会为程序预备一些资源(内存、cpu。。。),是我们程序运行所需要的一些资源,也可以理解成程序运行的环境。

线程:线程是在进程中运行逻辑的单位。

进程中至少需要一个线程,任何线程都不可以脱离进程。

pid : 进程id (process id) 叫做进程号。 进程号由操作系统进行分配。用来识别唯一的进程。

ppid : 父进程id . (parent process id)  

init进程: 此进程 的进程id 为 1. 这个进程不可以被 kill

父子进程: 创建出新进程的进程就是父进程。 被创建出来的,叫做子进程。
 进程A在运行时创建了进程B,那么进程A就是进程B的父进程。B是A的子进程。

僵尸进程: 一个已经不再运行的进程。但是还没有消亡。还占用着系统资源。

正常情况下当父进程死掉的时候,会让子进程也死掉。当父进程死掉但是子进程没死,称之为孤儿进程。

孤儿进程: 是一个没有父进程的进程。 他会被 init 进程领养。

命令

查看进程: ps aux ps -ef

查看进程树: pstree

杀掉进程: kill kill 2619 kill -9 2581 //必杀 kill -9 pid

ctrl + c 结束进程

ctrl + z 将进程暂停,并扔到后台。

fg 将进程调回前台。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值