day 1

1、Linux简介

Linux核心理念:万物皆文件;

假设在linux接了一个打印机,这个打印机对于系统而言是一个文件。

使用串口外接一个设备,这个串口对于linux系统就是一个文件。

​ Linux:是一个内核,而不是一个操作系统;因此我们平常说的“操作系统用的是Windows、Mac还是Linux啊?”是错误的,Ubuntu、Fedora等才是操作系统的名字,他们都使用Linux内核,属于Linux的发行版本。

​ 1991年最初由Linus Torvalds针对386(个人计算机)开发;Linus Torvalds那时是芬兰的一名研究生;

linux开源,开放源代码。

GNU

GNU 自由软件联盟

GNU宗旨 开发出免费、开源的软件供大家使用

GPL协议

GPL 协议,规定了GNU中的软件使用的权限

GPL1.0 (规定了任何人都可以使用GNU的开源软件,但是如果你用了,你也要开源)

GPL2.0 (规定了任何人都可以使用GNU的开源软件,并且你自己的东西可以不开源,但GNU内部的东西必须开源)

目录结构

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

根目录下的文件:

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

etc 存放配置文件的位置

mnt mount 挂载目录 接入新硬件的时候用

proc process 存放进程信息的位置

boot 存放引导文件等

dev device 存放设备文件的位置

home 家目录、用户工作目录 /home/linux

lib 存放库文件的位置。 (/lib /usr/lib)

root 超级用户工作目录

sbin 存放指令的位置

2、linux命令

1. Ls

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

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

白色: 普通文件

绿色: 可执行文件

深蓝色: 目录文件

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

ls -l 显示文件的详情。

-a -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第三组 其他组用户权限 读 不可写 可执行

当前目录 .

上级目录 …

工作目录 ~ 直观 又好写

根目录 /

练习:

列出上一级目录的所有文件

ls -a …

列出工作目录下的所有文件

ls -a ~

列出根目录下的文件详情

ls -l /

列出 a.c 文件的详细信息

ls -l a.c

2. chmod (change mode)

修改文件的使用权限

两种方式:

a) chmod +x id.c 在当前权限的基础上添加可执行权限

b) chmod 664 id.c

把表示权限的数字,当成八进制数字看,每个数字代表一组权限

664 将每个八进制数 转成二进制数

110 110 100 1代表有权限 0代表没权限

rw- rw- r–

3. 帮助手册:

a) 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

b) info : info ls

c) help : ls --help

4. cd 进入目录 (change directory)

绝对路径: 以根目录为起始的,是绝对路径。

相对路径: 以当前为基准的,叫相对路径。

相对路径,从当前的位置,找到桌面的dst目录

linux@ubuntu:~/22011$ cd …/Desktop/dst

绝对路径,从dst目录回到22011中

linux@ubuntu:~/Desktop/dst$ cd /home/linux/22011 还可以写成cd ~/22011

一些路径的表达:

/ 根目录 在写路径的时候 /的左边什么都没有,它就是根目录。
用户工作目录。 它是一个绝对路径,在我们的ubuntu下,~ 等价于 /home/linux

. 当前路径 在相对路径中使用

… 上一级路径 在相对路径中使用

- 上一次进入的路径。

练习:

请进入到 /mnt 目录下,查看该目录下,有哪些文件?

cd /mnt

ls -a

进入目录: 工作目录下的 Desktop , 查看有哪些文件

cd ~/Desktop 或者写成 cd /home/linux/Desktop 或者写成 cd …/home/linux/Desktop

ls -a

进入目录: /etc 查看有哪些文件

cd /etc

ls -a

5. pwd (print working directory)

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

6. touch

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

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

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

不能在根目录下随意创建文件。

linux系统本身不看文件的后缀。

7. mkdir (make directory)

创建目录文件

mkdir 文件夹名

8. rm (remove)

删除文件 remove

普通文件: rm a.c

目录文件: rm -r AAA

9. mv (move)

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

看第二个参数的名字是否是已经存在的文件夹,如果是已经存在的文件夹,会参数1的内容移动到参数2里;如果参数2的文件夹不存在,则改名。

示例:

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

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

练习:

整理自己当前的工作目录下的所有文件。 创建文件夹,移动文件。

练习:

将 Downloads 目录 重命名为 test

linux@ubuntu:~/22011$ mv …/Downloads …/test

创建 目录 aaa

linux@ubuntu:~/22011$ mkdir ~/aaa

移动 a.c 文件到 aaa 目录下。

linux@ubuntu:~/22011$ mv ~/test.cpp ~/aaa

练习:

创建目录文件 abc , 移动当前目录下的 a.c 到 abc 中。 删除目录文件 abc

mkdir abc

mv test1.c abc

rm -r abc

10. 通配符

* 可以匹配多个字符。 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以外的文件

练习:

将 所有的 .c 文件 移动到 Downloads 目录下。

linux@ubuntu:~/22011$ mv *.c ~/Downloads

将 Desktop 目录下所有文件 移动到 当前目录下。

linux@ubuntu:~/22011$ mv ~/Desktop/*.c . .表示当前路径

11. cp (copy)

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

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

练习:

拷贝当前目录下的 aa.txt 到 Desktop 目录下,并有一个新的名字bb.txt

linux@ubuntu:~/22011$ cp a.c ~/Desktop/b.c

拷贝 当前 目录下的所有 .c 文件 到 test(在哪里都行) 目录下。

linux@ubuntu:~/22011$ cp *.c ~/Desktop/test

拷贝当前 目录下的 a.c 文件到用户工作目录下。

linux@ubuntu:~/22011$ cp a.c ~

12. 查看文件

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

13. vim 编辑器的使用

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

(1) 命令行模式下的快捷方式:

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

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

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

x 删除

u 撤销

+ 向下

- 向上

88G 光标跳到 88 行 88gg

$ 一行末尾

ZZ 保存并退出

v 选中的起始位置

v……y 块复制

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

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

调节字体大小: ctrl - 调小字体。 ctrl shift + 调大字体 ctrl = 对齐格式

(2) 底行模式

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

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

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

(3) 进入插入模式:

新增 (append)

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

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

插入 (insert)

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

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

开始 (open)

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

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

2、用户管理

(1)用户分类:

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

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

切换用户: su

示例: su root su linux

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

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

退回原用户: exit

用户名@ 计算机名 : 路径

linux @ ubuntu : ~ $

root @ ubuntu :/home/linux #

(2)添加或删除用户

添加: sudo adduser alice

删除: sudo userdel -r alice

用户信息: /etc/passwd vim /etc/passwd

用户密码: /etc/shadow sudo vim /etc/shadow

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

作业:

选择题

1.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( )

A)7 B)8 C)6 D)2

2.下列四组选项中,均不是C语言关键字的选项是 ( )

A)define IF type B) getc char printf

C)include scanf case D) while go pow

3.下面四个选项中,均是C语言关键字的选项是 ( )

A) auto enum include B) switch typedef continue

C) signed union scanf D) if struct type

4.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符 ( )

A)必须为字母 B)必须为下划线

C)必须为字母或下划线 D)可以是字母,数字和下划线中任一种字符

5.执行以下语句后a的值为( )

int a,b,c;

a=b=c=1;

++a||++b&&++c ;

A)错误 B)0 C)2 D)1

6.逻辑运算符两侧运算对象的数据类型( )。

A)只能是0或1

B)只能是0或非0正数

C)只能是整型或字符型数据

D)可以是任何类型的数据

7.设x,y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是 ( )

A) ‘y’&&‘y’ B) x<=y

C) x||y+z&&y-z D) !(x<y)&&(!z||1)

8.已知x=43,ch=‘A’,y=0则表达式(x>=y&&ch<‘B’&&!y)的值是 ( )

A)0 B)语法错 C)1 D)“假”

9.若希望当A的值为奇数时,表达式的值为"真",A的值为偶数?表达式的值为"假"。则以下不能满足要求的表达式是( )

A) A%21 B)!(A%20) C)!(A%2) D)A%2

10.判断char型变量c1是否为小写字母?正确表达式为( )

​ A) ‘a’<=c1<=‘z’ B) (c1>=a)&&(c1<=z)

​ C) (‘a’>=c1)||(‘z’<=c1) D) (c1>=‘a’)&&(c1<=‘z’)

作业:

​ 1 工作目录下创建目录shared及shared1

​ 2 在shared1目录中创建9个子目录a1-a9

​ 3 在a5中创建3个文件file1-file3

​ 4 在shared目录中创建两个目录old和new

​ 5 将shared目录更名为back

​ 6 拷贝/usr/include/stdio.h 到old内

​ 7 移动shared1目录到back目录内 删除a1-a4 a6-a9

​ 8 将a5目录改名为front 并移动到new目录内

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

encounter♌

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

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

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

打赏作者

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

抵扣说明:

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

余额充值