【C】1、初始Linux及其基本指令
一、Linux 与 Windows 之间的区别
1、交互方式
Windows :图形界面的交互
Linux :指令之间的交互,主要以命令的形式进行操作
2、文件结构
Windows :目录从属分区,所有的入口遵守以分区为名字为开头(C: \usr)【重点盘符】
Linux :分区从属目录,所有的入口遵守以根目录为名字开头的(cd /mnt)【重点根目录】
二、Ubuntu 虚拟机的一些基础快捷键
1、全局
| 快捷键 | 功能 |
|---|---|
Ctrl Alt T |
进入终端 |
Shift Ctrl C |
复制选中文本 |
Shift Ctrl V |
粘贴剪切板的文本 |
Ctrl win D |
返回桌面 |
Tab Alt |
切换页面 |
Fn insert |
截屏(不太好用,不如直接返回win用win的截屏) |
Ctrl Alt |
切换控制权回到主机,把鼠标移出虚拟机页面也能切换回主机 |
Ctrl Win 方向键 |
分屏 |
全局的快捷键在终端中亦可用
2、terminal中
| 快捷键 | 功能 |
|---|---|
| exit | 退出终端 |
Shift Ctrl + |
同时放大终端窗口与字体 |
Ctrl - |
同时缩小终端窗口与字体 |
Ctrl C |
终端页面中结束正在运行的程序 |
3、自定义快捷键
其实,Ubuntu中的快捷键都是可以进行修改的,此处以截屏为例。和 Windows 一样,Ubuntu 也是自带有截屏工具的,但是二者的快捷键有所区别。
可以进入键盘页面(keyboard)自行查看并更改:


更改其他快捷键也是如此的方式。
三、解析 gec@ubantu:~$

- gec 当前用户
- @ 分隔符
- ubantu 所使用的系统内核名
- : 分隔符,用以区分$与路径
- ~ 当前所在路径(家目录)
- $ 用户权限标识符,普通用户,若是#则为超级用户,即管理员身份
四、shell基本操作指令
1、ls
显示当前文件夹下的内容

2、-
代表的是文件类型(之一)
| 文件类型 | 文件符号 |
|---|---|
| 普通文件 | - |
| 目录文件 | d |
| 套接字文件 | s |
| 块设备文件 | b |
| 字符设备文件 | c |
| 链接文件 | l |
| 管道文件 | p |
3、ls -a
查看隐藏文件及其属性

可以对比看看上面ls的结果,也可以直接看此图,高亮的部分就是隐藏文件
4、ls -l
查看文件的详细属性

5、ls -la
查看全部文件及相关信息

看着一段文字:
-rw-rw-r-- 1 gec gec 131 Jan 6 18:20 .xinputrc
其中,-rw-rw-r--就是此文件的权限,分别用三位的二进制数去表示,read排在高位,代表4,write为2,
| 简写 | 全称 | 释义 | 权限值 |
|---|---|---|---|
| r | read | 读权限 | 4 |
| w | write | 写权限 | 2 |
| x | execute | 执行权限 | 1 |
| - | 无权限 | 0 |
又:
-rw-rw-r-- 1 gec gec 131 Jan 6 18:20 .xinputrc
关于这段文字,其前半段:第一个rw 是创建者的操作权限;第二个rw 是创建组的操作权限;r 则是其他用户的操作权限;
其后半段:1 连接数;第一个 gec 是文件的创建者;第二个 gec 是创建者的所有组;131 是文件大小,这里指的是字节;Jan 6 18:20 为最后一次修改的时间;xinputrc 是文件名
6、cd
切换路径
cd 路径名--> 切换到该目录cd ~--> 家目录cd /--> 根目录(所有操作都需要管理员权限)cd ---> 返回上一次所在目录,并且打印当前(返回后)目录路径cd ..--> 返回上一级目录
7、touch
(1)、直接创建文件
新建普通文件
gec@ubuntu:~$ touch 1.txt
gec@ubuntu:~$ ls
1 Desktop Music Templates
1.txt Documents Pictures Videos
2 Downloads Public
(2)、不允许直接创建多级目录
试了一下,发现无论是用命令还是函数,都不能同时创建多级目录:

#include "head.h"
#define PATH "/mnt/hgfs/SHARE_Ubuntu_1/111/222/1.txt"
int main(int argc, char const *argv[])
{
// 打开文件(不存在就创建)
FILE *Fd = fopen(PATH, "a+");
if (NULL == Fd)
{
perror("fopen Fd error:\n");
return -1;
}
// 关闭文件
fclose(Fd);
return 0;
}


8、mkdir
创建目录
这里和touch一样,都是不允许直接创建多级目录的。
(1)、在当前目录创建单个目录
gec@ubuntu:~$ mkdir 123
gec@ubuntu:~$ ls
1 core examples.desktop samba
123 Desktop Music Templates
1.txt Documents Pictures Videos
2 Downloads Public
绝对路径:从根目录写起
相对路径:从当前路径写起,且不是从根目录开始写起此处创建新目录是在当前目录创建的,本质上隐含了一个相对路径,其他地方也差不多,我们可以简单理解为默认的情况通常是指的相对路径
(2)、在当前目录同时创建多个目录
mkdir 111 222 333

(3)、同时创建多个目录
mkdir ./111/444 ./111/555 ./111/666

可以看到,这里若是想要在非当前目录创建目录,就要在所创建目录的名字前面带上路径,这里用的是相对路径,所以用./
如果用的是绝对路径,就是从根目录/开始:

9、cp
复制文件/目录
(1)、简单复制文件
cp 目标文件名 目标路径
gec@ubuntu:~$ cp 1.txt 123
gec@ubuntu:~$ cd 123
gec@ubuntu:~/123$ ls
1.txt
(2)、复制文件后顺便改个名
还能复制过去后换个名字,原理是是在第二个的路径上新创了一个文件,然后用前者覆盖,所以在第二个路径的后面直接加上新名字就好

(3)、复制目录
cp 还可以复制目录,跟删除一样,这里也是用到了递归的方法:

10、mv
剪切文件/重命名
区分到底是哪个功能很简单,看目标文件名后面跟的是文件还是目录即可。
(1)、剪切文件
mv 目标文件名 目标路径
gec@ubuntu:~$ mv 2.txt 123
gec@ubuntu:~$ cd 123
gec@ubuntu:~/123$ ls
1.txt 2.txt
(2)、重命名
mv 目标文件名 新文件名
gec@ubuntu:~$ mv 1.txt 2.txt
gec@ubuntu:~$ ls
1 core examples.desktop samba
123 Desktop Music Templates
2 Documents Pictures Videos
2.txt Downloads Public
11、pwd
打印当前所在路径
gec@ubuntu:~/123$ pwd
/home/gec/123
12、clear
清屏
13、rm
删除文件或目录
(1)、删除文件
gec@ubuntu:~/123$ rm 1.txt
gec@ubuntu:~/123$ ls
2.txt
(2)、删除目录
方法1:rmdir 目录名
gec@ubuntu:~$ mkdir 456
gec@ubuntu:~$ ls
1 core examples.desktop samba
123 Desktop Music Templates
2 Documents Pictures Videos
456 Downloads Public
gec@ubuntu:~$ rmdir 456
gec@ubuntu:~$ ls
1 Desktop Music Templates
123 Documents Pictures Videos
2 Downloads Public
core examples.desktop samba
方法二:rm 目录名 -rf
r 的意思是递归
f 的意思是所有文件
gec@ubuntu:~$ rm 123 -rf
gec@ubuntu:~$ ls
1 Documents Pictures Videos
2 Downloads Public
core examples.desktop samba
Desktop Music Templates
14、sudo
(1)、临时获得超级权限
举例:
gec@ubuntu:~$ cd /
gec@ubuntu:/$ touch 3.txt
touch: cannot touch '3.txt': Permission denied
由上可见,普通用户没有权限在根目录创建文件。事实上,除了家目录和共享目录以外,所有其他目录的权限都是有限的
若是给了管理员权限:
gec@ubuntu:/$ sudo touch 3.txt
[sudo] password for gec:
gec@ubuntu:/$ ls
1.txt initrd.img mnt sys
3.txt initrd.img.old opt tmp
bin lib proc usr
boot lib32 root var
cdrom lib64 run vmlinuz
dev libx32 sbin vmlinuz.old
etc lost+found snap
home media srv
第二行是提示你输入管理员密码,跟开机密码一样,此处也不会显示密码。
注意,此种方法获得的管理员权限只是暂时的,只限于那一行代码有时候也会遇到权限保留了一会,但我还没发现啥规律在其中。
(2)、某一段时间内获得管理员权限
由此,也引出了一个可能,就是若是操作者想要在一段时间内都是管理员状态,该如何实现
此时,需要从普通用户身份,切换到管理员身份,输入指令:sudo su ,输入我自己的隐形密码才可,粤嵌的密码统一是123456,我的当然也是,,,若想退出管理员身份,输入指令:exit
另外,从根目录复制出来的文件夹,在复制的时候也把属性给复制了,也就是说,他把属性里面的权限也给复制了,所以即使是要对从根目录已经复制到家目录的文件进行操作,也是需要管理员权限的。

15、cat
查看文件的内容不做修改
(1)、单纯查看
可以快速查看文件里面的内容
cat halloworld.c

(2)、查看的时候显示特殊字符
但是单纯的 cat 不能查看到文件中的一些特殊字符,若是要有查看到特殊字符的要求,可以用 “cat 文件 -A”
cat halloworld.c -A

这里的特殊字符指的是不可见字符,比如中文的空格,中文的换行,中文的制表符
(3)、查看的时候显示行号
cat main.c -n

五、共享目录的设置
为了方便Windows端与Linux端的文件交换,可以选择设置共享文件夹,在共享文件夹中,两端都能对其中文件进行操作
1、如何设置
-
首先。在Windows端选择或者创建一个文件夹,作为Windows端的共享文件夹,比如,我这里将D盘里的文件夹share作为共享文件夹
-
然后,打开虚拟机,点击设置
-
选项-->共享文件夹-->勾选总是启用-->添加
-
点击下一步
-
添加主机中,共享文件夹的路径,填写Linux中给共享文件夹设置的名称,点击下一步
-
点击确定
2、共享目录的访问
Windows:打开图标
Linux:指令进入
3、共享目录的路径
gec@ubuntu:/mnt/hgfs/share
六、gcc编译器
(1)、gcc干什么
在使用gcc对C语言程序进行编译时,可细分为四个阶段:
- 预处理
- 编译
- 汇编
- 链接
说人话,就是将C语言源程序,转化为机器可识别可执行的二进制程序
(2)、编译方法1
gec@ubuntu:/mnt/hgfs/share$ gcc c程序名.c -o 程序名
然后运行:
./程序名
例如,我写下一个程序:
//打印99乘法表
#include <stdio.h>
int main(void)
{
for(int i=1;i<10;i++)
{
for(int j=1;j<=i;j++)
{
printf("%d*%d=%d\t",j,i,i*j);
}
printf("\n");
}
return 0;
}
编译运行:
gec@ubuntu:/mnt/hgfs/share$ gcc 99-mul-tab.c -o 99-mul-tab
gec@ubuntu:/mnt/hgfs/share$ ./99-mul-tab
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
(3)、编译方法2:
gec@ubuntu:/mnt/hgfs/share$ gcc c程序名.c
gec@ubuntu:/mnt/hgfs/share$ ./a.out
gec@ubuntu:/mnt/hgfs/share$ gcc 99-mul-tab.c
gec@ubuntu:/mnt/hgfs/share$ ./a.out
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
此种编译方法,且不谈原理,单就结果来说,额外生成了一个不断被覆盖的a.out文件,比起第一种,无疑在操作上简洁了许多
七、一些配置
1、改变 terminal 的主题
- Ctrl + Alt + T 打开 terminal
- 右键单击编辑页面的任意区域,会弹出如图窗口,然后鼠标移到 Profiles ,点击进入 Profiles preferences 页面
![]()
- 把圈出来的那个勾勾点击去除掉即可
![]()
![]()
2、剪切板
当设置了tools后,此 Ubuntu 的剪切板与主机的剪切板是公用的




浙公网安备 33010602011771号