一、认识Linux下的C语言
C语言:面向过程的语言,方便操作内存,更贴近硬件
C语言操作系统的开发:
三大操作系统:Windows,Linux,Unix(MacOS是Unix下的一个类别)
数据库:MySQL,DB2
C软件开发:
办公软件:WPS
硬件:单片机,ARM
二、操作系统
用于管理软件和硬件的东西,和编译器一样,属于软件硬件分界面层次的玩意。
嵌入式大多选择Linux的原因:
1. 开源免费
2. 生态好,稳定,可以多样选择搭配
3. 方便与硬件结合
三、虚拟机VMware
VMware:虚拟机,运行在计算机中的隔离区,可以在其中装入不同的操作系统,能够多台操作系统同时运行,也可以在其中运行一些危险性未知的东西。
四、Ubuntu
Linux操作系统下的一种内核版本
浅谈一下Ubuntu根目录下的文件
- boot:启动文件,内核文件
- dev:设备文件
- etc:配置文件
- home:家目录文件,存储普通用户及其文件
- lib/lib64/lib32:编程语言库
- media:存放自动挂载的硬件
- mnt:存放手动挂载的硬件
- opt:第三方软件
- root:管理员目录文件
- run:电脑启动时的运行文件
- tmp:临时文件
- usr:存储不经常变化的文件
- var:存储经常变化的文件
相对路径: 指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系
绝对路径: 从根目录开始计算的路径
符号解析:
ubuntu@ubuntu:~$
- 第一个ubuntu:用户名
- 第二个ubuntu:主机名
- @与::分隔符
- ~:当前用户的家目录
- $:普通用户(如果是 # ,则代表是 管理员用户)
4.1 一些与用户操作相关的shell命令
- 切换用户:su
su 用户名
- 退出当前用户:exit (退到最后会关闭命令行窗口)
- 修改密码:passwd (root用户密码在未设置状态是随机的)
passwd 用户名 (后面会提示想要将密码修改成啥样)
- 添加用户:adduser
adduser 用户名
- 删除用户:userdel
userdel 用户名
sudo userdel 用户名 ---->该用户的家目录不会删除
sudo userdel 用户名 -r ----> 删除该用户以及家目录
- 修改用户名:usermod
usermod -l 新用户名 旧用户名
注意:这些操作大多需要管理员权限,可以在每条命令前加 sudo,然后输入密码就行了。要注意之间都是以空格间隔
文件详细信息
五、Ubuntu终端的相关操作
打开:
1>点击图标打开
2> ctrl alt t 打开一个新的终端
3> ctrl shift t 在已有的终端下,打开同一个路径下新的终端
4>看版本:
ctrl shft e 在同一终端下,左右分屏打开同一路径的新的终端
ctrl shft o 在同一终端下,上下分屏打开同一路径的新的终端
关闭:
1> 点×
2> ctrl d
3> exit
快捷键:
放大: ctrl shift + +号必须是+的那个键
缩小: ctrl -
复制:ctrl shift c /右键复制
粘贴:ctrl shift v /右键粘贴
六、终端的一些命令
格式1:命令 参数 选项
格式2:命令 选项 参数
1> 参数和选项可以省略不写
2> 命令、参数、选项之间必须使用空格隔开,否则不识别
6.1 查看命令 ls
作用:查看当前路径下的目录或文件
ls 查看当前路径下的所有文件
ls dir 查看当前目录下的dir目录下的所有信息
ls 文件名 在终端回显文件名
ls -a 显示当前目录下的所有信息,包括隐藏文件
ls -l 显示当前目录下的所有详细信息
ls -a -l ===>ls -la 显示当前目录下的所有详细信息,包括隐藏文件
ls -lh 显示当前目录下的所有详细信息,并以K,M,G单位显示
ls hello -lh 显示当前目录下的hello文件的所有详细信息,KMG显示
ls dir/dir1 -lh 显示当前目录下的dir下的dir1下的所有详细信息,KMG显示
- rw- r-- r-- 1 ubuntu ubuntu 0 七月 24 15:06 hello
| | | | | | | 文件大小 最后一次修改的时间 |
| | | | | 用户名 用户所属组 |
| | | | 硬链接个数 文件名
| | | 其他用户对该文件的操作权限
| | 用户所属组对该文件的权限
| 用户对该文件权限
文件类型
1>文件类型bcd-lsp
b:块设备文件
c:字符文件
d:普通目录
-:普通文件
l: 链接文件
s:套接字文件
p:管道文件
2> 文件权限
用户u对该文件的操作权限:rw-
用户所属组g队该文件操作权限:r--
其他用户o对该文件的操作权限:r--
所有权限:a
权限:r:读 w:写 -:不具备权限 x:可执行权限
八进制表示:r:4 w:2 x:1 -:0
6.2 修改权限的命令:chmod
字母修改权限:+-=
ubuntu@ubuntu:~$ chmod u+x hello
ubuntu@ubuntu:~$ ls -lh hello
-rwxr--r-- 1 ubuntu ubuntu 0 七月 24 15:06 hello
ubuntu@ubuntu:~$ chmod u-x hello
ubuntu@ubuntu:~$ ls -lh hello
-rw-r--r-- 1 ubuntu ubuntu 0 七月 24 15:06 hello
ubuntu@ubuntu:~$ chmod u-r-w+x hello
ubuntu@ubuntu:~$ ls -lh hello
---xr--r-- 1 ubuntu ubuntu 0 七月 24 15:06 hello
ubuntu@ubuntu:~$ chmod u=rw- hello
ubuntu@ubuntu:~$ ls -lh hello
-rw-r--r-- 1 ubuntu ubuntu 0 七月 24 15:06 hello
ubuntu@ubuntu:~$ chmod u=r hello
ubuntu@ubuntu:~$ ls -lh hello
-r--r--r-- 1 ubuntu ubuntu 0 七月 24 15:06 hello
(下面四个可以用来练手)
1.把hello文件的用户修改为可读可写可执行
2.把hello文件的用户所属组修改为不可读可写不可执行
3.把hello文件的其他用户权限修改为不可读不可写可执行
4.把所有权限修改为可读不可写不可执行
修改权限八进制方式
chmod 721 hello ===>chmod 0721 hello
chmod 5 hello ===>chmod 005 hello
6.3 进入目录文件的命令 cd
cd 路径
cd dir/dir1 进入当前路径下的dir目录下的dir1目录
cd file 无法进入文件
cd 进入用户默认的家目录
cd . 进入当前目录,视觉上没啥效果
cd .. 进入上一级目录
cd - 返回上一次进入的目录
6.4 创建普通文件命令 touch
touch file 在当前目录下创建file普通文件
touch f1 f2 f3 在当前目录下连续创建三个普通文件
touch dir1/file f1 在当前目录下的dir1目录下创建普通文件file,在当前目录下创建普通文件f1
6.5 创建目录文件命令 mkdir
mkdir dir 在当前目录下创建目录文件dir
mkdir d1 d2 d3 在当前目录下连续创建三个目录文件,可以多个
mkdir dir1/dir2/dir3 -p 在当前文件夹下递归创建目录文件dir1、dir2、dir3,要注意加上参数 -p
6.6 删除空目录文件命令 rmdir
rmdir dir 删除当前目录下的dir空目录
rmdir d1 d2 连续删除当前目录下的两个目录,可以多个
rmdir dir1/dir2/dir3 删除当前目录下的dir1目录下的dir2目录下的dir3空目录
rmdir dir1/dir2 -p 递归删除当前目录下的dir1目录与dir1目录的dir2,先删的dir2,
6.7 删除文件命令 rm
rm f1 f2 连续删除当前目录下的普通文件f1,f2
rm d1 d2 -r 删除当前目录下的目录d1,d2,空与非空无所谓,别忘了参数 -r,递归删除
rm f* * 表示通配符,删除当前目录下的所有以 f 开头的文件
6.8 终端查看文件命令 cat
cat file 查看当前目录下的file文件的内容,也可以 跟文件的路径,但最终要落到文件上
cat file -n 带行号的查看
6.9 终端回显命令 echo
echo 字符串 在终端回显字符串
echo -n 字符串 在终端回显字符串,不再换行 ,因为有-n
echo -e "lalala\n" 在终端回显 lalala和一个换行,参数 -e 是为了让转义字符起效果
6.10 重定向命令 > , >>
> 单向重定向,删除文件内容
echo 字符串 > 文件名
如果文件不存在,则创建文件,并把字符串放到文件中
如果文件存在,则用字符串替换到文件的内容
echo 文件1 > 文件2
文件1必须存在,若文件2不存在,则创建文件2,把文件1的内容复制到文件2,文件1不变
文件1必须存在,若文件2也存在,则文件2的内容会替换成文件1的内容,文件1不变
>> 双向重定向,在文件后面追加内容
echo 字符串 >> 文件名
如果文件不存在,则创建文件,并把字符串放到文件中
如果文件存在,则把字符串追加到文件之后
echo 文件1 >> 文件2
文件1必须存在,若文件2不存在,则创建文件2,把文件1的内容复制到文件2中,文件1中不变
文件1必须存在,若文件2也存在,把文件1的内容追加到文件2内容之后
6.11 拷贝、复制命令 cp
1. 普通文件 对 普通文件
cp f1 f2
f1必须存在,若f2不存在,把f1复制一份,重新命名为f2
f1必须存在,若f2存在,把f1复制一份,命名为f2,替换原来的f2
2. 普通文件 对目录文件
cp f1 dir
f1必须存在,若目录文件dir不存在,则会默认dir以普通文件的形式进行拷贝
f1必须存在,若目录文件dir存在 但 没有f1,把f1文件复制一份存到目录文件dir
f1必须存在,若目录文件dir存在 且 有f1,把f1文件拷贝一份存到dir,替换掉原f1
3. 目录文件 对 目录文件
cp dir dir1 -r
dir必须存在,若dir1不存在, 把dir复制一份,重命名为dir1
dir必须存在,若dir1存在 但 里面没有dir,把dir复制一份,存到dir1里
dir必须存在,若dir1存在 且 里面有dir,把dir复制一份,替换掉dir1里面的dir
6.12 剪切命令 mv ,常用于重命名
1. 普通文件 对 普通文件
mv 普通文件1 普通文件2
普通文件1必须存在,若普通文件2不存在,将普通文件1重命名为普通文件2
普通文件1必须存在,若普通文件2存在,把普通文件1复制一份,重命名为普通文件2,替换原普通文件2(其实是替换)
2. 普通文件 对 目录文件
mv 普通文件1 目录文件
普通文件1必须存在, 若目录文件不存在,则会认为将普通文件1重命名为后面跟着的那个名字(不会认为后面跟着的是目录文件,参照普通文件 对 普通文件)
普通文件1必须存在, 若目录文件存在 但 里面没有普通文件1,把普通文件1移动到目录文件中
普通文件1必须存在, 若目录文件存在 且 存在普通文件1,把普通文件1复制一份到目录里面,替换掉目录文件里面的原文件1
3. 目录文件 对 目录文件
mv 目录1 目录2
目录1必须存在,若目录2不存在,则将目录1 重命名 为目录2
目录1必须存在,若目录2里面 有 目录1且目录1为空,则用前面的目录1 替换 目录2中的目录1
目录1必须存在,若目录2存在里面存在目录1不为空,将无法操作
6.13 显示当前绝对路径命令 pwd
- 能够显示当前的绝对路径,不需要任何参数,也不用跟啥东西,直接输入后回车就行了。
6.14 查看当前用户的命令 whoami
- 同上。
- 谁是我,我是谁……是时候把身份亮出来了
6.15 清屏命令 clear
- clear 命令可以清屏,Ctrl+l 也可以清屏
- clear 清屏后会清除一部分之前输入的命令(从最前面开始清除,按先后顺序的)
- Ctrl+l 只是将当前需要输入的那一行放到了页面的最上面,不会清除之前的命令
6.16 自动补齐操作 tab
tab 键一般位于键盘的最左侧,从上往下数第三个键(奇葩的键盘没用过,我用的都是正常的键盘)。
- 当输入到一半忘了后面还有啥内容了,可以用 tab 键提示一下。
- 如果已输入的那部分有多个重复的,需要按两下,会都显示出来让你选择
- 如果已输入的那部分只有唯一的一份,那么可以直接补齐。
- 这个功能只适用于补齐里面已有的,不适用于凭空创造,别瞎胡闹。
6.17 命令帮着手册 man
- 如果有个命令不知道咋用,或者有个函数不知道咋用,可以使用这个玩意。
man 想要查询的命令或函数
- 一般这个帮助手册都是英文的,这玩意可以调
在保证虚拟机能够联网下载东西的前提下依次输入这两行:
ubuntu@ubuntu:~$ sudo apt-get install manpages-zh
ubuntu@ubuntu:~$ echo " alias cman='man -M /usr//share/man/zh_CN' ">>.bash_profilesource .bash_profile
- 注意,上面的那两行,$ 符号和前面的内容不要复制,别成了小憨憨。
- 有问题,找男人(man),你就说对不对吧