注:作者本人更喜欢图形界面,所以使用了虚拟机安装ubuntu,实现了双系统开发。
一,linux系统和虚拟机
市面主流的操作系统 windows 安卓 IOS linux系统
Linux系统的应用范围:服务器
嵌入式智能终端
linux系统有很多不同的发行版本,其中比较出名有:ubuntu(乌邦图) redhat(红帽)
虚拟机:用软件来模拟真实的电脑
Linux系统可以在虚拟机上运行
虚拟机可以作为linux系统运行的平台
(1)安装步骤
第一步:安装虚拟机wmware workstation这个软件
第二步:获取ubuntu系统 //去官网下载,如:ubuntu-22.04.3-desktop-amd64.iso
第三步:在虚拟机上安装ubuntu系统
二,linux系统的使用
1.打开终端
方法1: 右键点击ubuntu的桌面选择open terminal/在终端中打开 //系统版本不同可能会不一样,但大致相同
方法2: 同时按下 ctrl+alt+t
2.基础介绍
家目录:linux系统支持多用户,我们可以新建多个不同的用户去登录linux系统
linux系统为了区分不同的用户,给每个用户新建一个文件夹,文件夹的名字跟用户名是一样的
我们把这个特殊的文件夹成为这个用户的家目录
比如:我现在新建一个用户,叫做zhangsan --》linux系统会自动帮你新建一个文件夹,也叫做zhangsan
我现在新建一个用户,叫做lisi --》linux系统会自动帮你新建一个文件夹,也叫做lisi
这些文件夹全部都在/home这个目录下新建的
(1)命令终端提示符
gec@ubuntu:~$
gec --》当前用户的名字
ubuntu --》当前系统的名字
~ --》表示当前用户的家目录 ~等价于 /home/gec
$ --》表示当前用户是个普通用户
(2)windows路径和linux路径写法的不同
windows路径:分为不同的磁盘分区 C D E
C:\Users\Administrator\Desktop
linux路径:没有磁盘分区(根本没有CDE盘这个说法)
linux只有一个根目录,根目录用 /表示
linux中所有的文件/文件夹都是从根目录往下存储的
(3)创建linux和window的共享
为什么要创建共享:代码在windows上写好的,需要在linux上编译
如何创建共享?
第一步:在window上新建一个文件夹作为共享文件夹
第二步:点击虚拟机,选择设置--》在弹出的对话框中点击选项,共享文件夹总是启用--》点击添加,添加你第一步新建的那个共享文件夹,确认保存退出(见截图)
如何进入共享文件夹?
cd /mnt/hgfs/xxx //xxx是你新建的共享文件夹的名字
注意:如果你创建不了共享文件,可以考虑关闭linux系统,然后重新右键管理员的身份运行
(4)查看字符的ASCII码值
man ASCII
(5)查看linux中的帮助手册
man man
1 Executable programs or shell commands //shell命令
man 1 ls
2 System calls (functions provided by the kernel) //linux系统内核提供的函数
3 Library calls (functions within program libraries) //C语言的库函数
man 3 printf
man 3 scanf
3.常用命令
(1)新建或者打开文件
vim 文件名
touch 文件名 //只能新建文件,不能打开文件
gedit 文件名 //跟记事本差不多
(2)删除文件或者文件夹
rm 文件名
rm 文件夹名字 -rf (r表示递归,f表示强制)
(3)新建文件夹
mkdir 目录名
(4)切换目录
cd 目录的名字
cd .. 返回上一级目录
cd - 返回上一次进入的目录
linux的根目录 /
bin ---> 工具目录,可执行程序,命令所在的路径
dev ---> 设备驱动文件
proc ---> 系统信息
sbin ---> 管理员工具 (root)
sys ---> 驱动信息
var ---> 系统日志
boot ---> 系统启动文件
etc ---> 配置文件
lib ---> 库文件
mnt ---> 挂载目录
root ---> 管理员工作目录
tmp ---> 临时目录
cdrom ---> 光驱目录
home ---> 用户主目录(每个用户在该目录中均有一个子目录)
usr ---> 用户的程序文件目录
绝对路径:不偷懒,永远都不会出错的写法,完整的路径写法(从根目录开始)
相对路径:偷懒,根据所处的位置去写路径名
(5)ls命令
ls -al //列表的形式列举所有文件,包括隐藏文件
linux中所有的隐藏文件都是小数点开头
其中: .和..要注意
. (一个小数点) 表示当前路径
.. (俩个小数点) 表示上一级路径
利用这个特点自己新建隐藏的文件或者目录
touch .1.txt
mkdir .newdir
ls -l //列表的形式列举文件,不包括隐藏文件
-rwxrwxrwx 1 root root 67 Feb 23 19:23 hello.c
linux中一切都是文件
记事本是个文件
键盘是个文件 --》键盘驱动文件
触摸屏是个文件 --》触摸屏驱动文件
液晶屏也是个文件 --》液晶屏驱动文件
linux中有七种类型的文件:
目录: d
普通文件:-
字符设备:c
块设备:b
套接字:s
软链接文件: l
管道文件: p
第一个字符: d --》目录
- --》普通文件
第二个开始的字符: 表示可读,可写,可执行的权限
分为三组:分别表示当前用户,同组用户,其它用户对于这个文件的操作权限
r --》可读 w --》可写 x --》可执行
(6)echo命令
标准输入 --》默认指的是键盘
标准输出 --》默认指的是电脑的液晶屏
标准错误输出 --》默认指的是电脑的液晶屏
在屏幕(标准输出)上输出数据
echo "hello"
echo 567
(7)切换超级用户
用途: 当你想要修改根目录下的文件夹里面的内容
普通用户只能在自己的家目录或者共享文件夹中随意删除,修改文件
如果你想要在根目录下,或者根目录的其它文件夹中修改,删除文件,就必须使用超级用户的权限
临时借用超级用户的权限
sudo 命令的完整写法
sudo vim hello.c //临时借用超级用户的权限创建hello.c
sudo rm hello.c //临时借用超级用户的权限删除hello.c
永久切换超级用户
sudo -s
切换回普通用户
su 普通用户的名字
(8)剪切文件或者目录
mv 文件名 目标路径
比如: mv hello /mnt/hgfs/share //当前路径下的hello剪切到共享
重命名文件
mv hello.c hehe.c //给hello.c更换名字为hehe.c
区分剪切和重命名
主要看后面你写的是合法的路径名(剪切)还是文件名(重命名)
(9)修改权限
chmod 777 文件的名字
chmod 777 目录的名字 -R (递归修改文件夹的权限)
7 ---》 二进制 111(分别代表读,写,执行的权限)
例如: chmod 777 hello.c chmod 654 hello.c
(10)软链接
软链接:ln -s 原来的名字 软链接的名字
类似于windows中的快捷方式
硬链接:ln 原来的名字 硬链接的名字
软硬链接共同点:原文件修改了,软硬链接都跟着一起修改,软硬链接文件修改了,原文件跟着修改
软链接和硬链接只能在纯粹的linux环境中创建(共享文件夹中无法创建软硬链接)
区别:软链接依赖于原文件,硬链接不需要依赖原文件
硬链接的文件类型跟原来的文件一样,软链接文件类型属于链接文件
硬链接不能指向目录
(11)打包和压缩文件
linux中有两种常见格式的压缩包:
.bz2结尾和gz结尾
打包文件/文件夹: tar -jcf xxx.tar.bz2 文件名1 文件名2 ........
例如: tar -jcf 66.tar.bz2 1.jpg 2.mp3 3.txt
tar -zcf xxx.tar.gz 文件名1 文件名2 ......
例如: tar -zcf 66.tar.gz 1.jpg 2.mp3 3.txt
查看压缩包里面的内容:
tar -tf 压缩包的名字
解压:
tar -jxf 66.tar.bz2 //默认解压到当前路径
tar -zxf 66.tar.gz //默认解压到当前路径
解压到指定的位置:
tar -jxf 66.tar.bz2 -C 你要指定的路径
tar -zxf 66.tar.gz -C 你要指定的路径
(12)查找搜索相关的命令
find
比如: find / -name stdio.h //在根目录下找名字叫做stdio.h的文件
find / -type 文件类型
比如:find / -type d // 搜索根目录下的所有的文件夹
grep
比如:grep "printf" stdio.h -Hn //我要在stdio.h文件中搜索关键字printf,并打印printf出现行号
-H 打印文件的名字
-n 打印关键词出现的行号
-w 全字匹配,跟关键词一模一样
printf 正确
printf 正确,跟非英文字符混合一起也行
("printf") 正确,跟非英文字符混合一起也行
(13)查看文件
cat 文件名 //查看整个文件内容
head
head 1.txt -n 2 //查看1.txt的前面2行
tail
tail 1.txt -n 2 //查看1.txt的最后2行
(14)清屏
clear
(15)ps top命令
查看当前系统中进程的运行状态
ps -elf
动态查看进程的状态信息
top
(16)拷贝文件/目录
cp 文件名 目标路径
cp 目录名 目标路径 -rf (r递归 f强制)
(17)给命令取别名
注意: 取别名不能跟系统中原本的命令冲突
alias c='clear' //表示我给clear命令换个名字,叫做c
取消别名
unalias c //取消刚才取的别名c
(18)查询shell命令的路径
which shell命令的名字
which ls --》/bin/ls
which find --》/usr/bin/find
(19)重启ubuntu
reboot
(20)查看或者修改ubuntu的ip地址
查看ip地址 ifconfig // ens33是ubuntu虚拟网卡的名字
修改ip地址 sudo ifconfig ens33 你要修改的ip地址
(21)重定向和追加重定向
重定向:重新确定方向 > 会覆盖原来的内容
ls > 1.txt //把ls的输出重定向到1.txt
echo "hello" > 2.txt
追加重定向: >> 在末尾追加,不会覆盖文件中原本的内容
(22)查看文件大小
du 文件名 -b
目录的大小:它里面所有文件和文件夹大小的总和
ls -l 查看普通文件大小是正确的,但是目录就不对(全部都是4096字节)
(23)目录树
tree 目录名
(24)比较文件或者目录
diff 1.c 2.c -s //比较两个1.c,2.c文件,内容一样就打印提示
diff 目录1 目录2 -r //递归比较两个目录
(25)查看当前路径名
pwd
(26)添加/删除用户,密码
添加用户:sudo adduser 用户名
弹出提示让你输入密码,输入个人信息(随便乱输入)
修改密码:sudo passwd 用户名
弹出提示让你输入新密码
删除用户:sudo userdel -rf 用户名 //连同家目录一起删除
(27)安装man手册
sudo apt-get install manpages-posix manpages-dev manpages (manual手册安装)
(28)查看环境变量
env
其中有个重要的环境变量,叫做PATH
PATH是linux中可执行程序的环境变量,只要你把程序放在PATH指定的路径下,都可以直接输入程序名字运行程序
输出环境变量
echo $PATH
设置环境变量
export PATH=新的路径:$PATH
(29)按屏显示文本文件
more 文件名
按Enter键为一行一行显示,按空格键为一屏一屏显示
按q退出显示
另外一个按屏显示文件的命令
less 文件名
可以用上下键翻阅