PS:我下面的操作都是基于Linux云服务器和Xshell远程连接来操作的(这里直接跳过安装)


目录
6-4 Linux下的hello world 编译运行test.c
常见的操作系统:Windows,Mac,Linux,安卓,IOS 操作系统
操作系统的作用:(取决于看的角度)
用户的角度:为用户提供良好的运行环境(图形界面式还是命令行式来操控硬件)
对开发者:管理各种软硬件资源
windows是多用户的界面化操作系统;
linux是多用户的命令行式操作系统,是支持共享使用的。
为什么已经有了图形界面化的Linux操作系统,而我们还要费力的学习命令行式的Linux操作系统?
- 企业使用的是命令行式Linux操作系统(当出现一些问题时需要使用到指令)
- 指令的学习,更接近底层
- 指令略微快一点
另外:要用指令就得先要有键盘,要用图形界面就得要有鼠标,在发展上,我们是先有键盘再发明鼠标的,所以这就意味着先有的命令行式才有的图形界面化式。
因为Linux开发出来后,就对外公开了Linux内核,也就是说Linux是开源的,开源就意味着更安全,稳定,便宜,综合以上大家都选择了Linux作为公司企业开发的操作系统。
实际上,Linux是在1991年由芬兰大学生林纳斯·托瓦兹开发出来的,比windows等操作系统晚了好久
但是由于Linux的优秀,现在Linux还是广为开发人员认可.
- 内核版本(技术层):3.6,3.8等各种各样的内核版本
- 发行版本(应用层):Ubuntu,kali,红旗,红帽,centos
(1)Linux内核概念:实际就是托瓦兹写的操作系统代码,是真正意义上的操作系统代码
(2)各种发行版本的差异(特点):
Ubuntu:比较适合个人研究性质使用,入门学习
kali:比较适合网络渗透和攻防使用
红旗:国内的发行版本
红帽:商业使用的收费版本
centos:商业化的免费的操作系统
root用户的权限比较高,所以我们在日常学习一般是新创建普通用户来玩Linux。
第一步:让我们登入root用户,注意:在购买云服务器时记得重置root用户密码为较为复杂且自己记得住的密码,复杂一点是防止恶意扫描,用来挖矿等不良活动。
(1)填写云服务器提供的公网IP


(2)填写公网IP下的root用户名

但是前面的(1)(2)都可以用命令行来一步代替:
ssh root@43.139.36.50
(3)填写公网IP下root用户的密码

(4)登入成功

第二步:在root用户下创建一个普通用户
- //创建名为 name 的普通用户
- [root@vm-8-5-centos ~]# adduser name
-
- //为 用户名为 name 的账号设置密码
- [root@vm-8-5-centos ~]#passwd name
-
- //删除名为 li 的普通用户
- [root@vm-8-5-centos ~]# userdel -r name
-

ctrl+Insert:复制
shift+Insert:粘贴
alt+enter:全屏
ctrl+d:退出当前账号
pwd [-LP]
说明:
全称:Print Working Directory(打印工作目录)
作用:显示当前用户所在目录-- 工作目录 的绝对路径

使用:
- //显示用户当前所在的目录
-
- [song@VM-8-5-centos ~]$ pwd
- /home/song
ls (选项) (参数)
说明:
全称:list
作用:显示目录内容列表
不同颜色代表的文件类型:
PS:这里的配色方案和Xshell和Linux有关系,我们不能强相关,但是可以参考一下

举例:

PS:
说明:
全称:list -l
作用:显示指定目录里面的内容和属性
通过which 可以查看指令

这也解释了ll命令的作用,其实就是ls -l的组合键/别名
touch (选项) (参数)
说明:
作用:
- 将已经存在的文件的时间标签更新为当前系统时间
- 新建一个空的普通文件


那能不能看到文件被修改的历史时间信息呐?
stat filename

自我查找资料找出Access,Modify和Change 的区别.
本质就是在Linux目录上中创建新节点/路径
mkdir dirname
有时候我们想当前路径下创建一串路径:(带指定的-p选项创建一条路径)
- //创建一条路径
- mkdir -p p1/p2/p3

如果我创建了一个test.c文件,我想在Linux下编译运行,我该怎么做呐?
首先使用nano命令,打开Linux自带的文本编辑器:
nano test.c


说明:
-l : 显示文件内容列表及其更详细的文件属性
-a:显示隐藏文件(Linux下以 . 开头的文件是隐藏文件)
选项是绝大部分都是可以合并的

PS:在每一个目录都存在一个名为 . 和名为 .. 的文件
对比windows:

-d:显示指定目录的信息,而非指定目录里面内容的信息
ls默认情况下会显示目录里面的内容的信息,ls -d会显示目录的信息



cd [-L|[-P [-e]]] [dir]
linux下一切皆是文件
文件=文件内容+文件属性(属性也是数据)
因为空文件是有创建时间等属性的,所以空文件也是占磁盘空间的
根目录: /
Linux下通过cd ..一直回退,直到回退到根目录/则不能再回退
windows下则是按<-一直回退到盘符结束.
目录树:
大部分的操作系统,组织文件的结构都是一颗多叉树,
非叶子节点一定是目录文件
叶子节点可能是目录文件也可能是普通文件.
问题:为什么采用路径的方式可以唯一定位一个文件?
答案:定位一个文件,无非就是回答两个问题:我在哪里?我是谁?通过这个Linux目录树的方式,每一个子节点都只有一个父节点,所以从根目录到目标文件都只有唯一的路径,这也就是绝对路径;

绝对路径和相对路径:
绝对路径:绝对指定的是绝对于根目录,起始位置已指定,比较官方,通常使用于配置文件
相对路径:相对指的是相对于我当前所处的路径,起始位置没有指定,比较方便,日常使用.
举例 执行a.out时通过绝对路径和相对路径的两种方式:
安装tree指令:
在root用户下执行这行指令即可安装tree指令:
[root@VM-8-5-centos ~]# yum install -y tree

tree指令:
- tree (选项) (参数)
-
- 1.作用:显示指定目录下所有的的文件,包括子目录下的所有文件

说明:
全称:Change Directory
作用:改变当前工作目录
- 1.切换工作目录至dir,dir可以是绝对路径也可以是相对路径
-
- 2.cd ..返回上级目录
-
- 3.cd ~ 和cd 都代表回到家目录
-
- 4.cd / 代表回到根目录
-
- 5.cd ../..代表回到上级的上级目录
-
- 6.cd /home/song/dir 使用的是绝对路径,而cd ..使用的是相对路径
-
- 7.cd -用来记录最近从哪里来的路径
这里给大家举例一下cd -

- [root@VM-8-5-centos ~]# whoami
- root

普通用户和root用户:
根目录: /
家目录;
- 普通用户: /home/name
- root用户: /root
说明:
Linux下没有类似Windows下的回收站,所以删掉了就是删掉了
rm -rf
rm是一个强大的删除命令,系统不会给你任何的提示信息,直接删除目标文件或者目录,它会永久性的删除文件系统中的文件或目录 .
选项:

- //通常删除的是空目录(不删非空目录)
- rmdir dirname
-
- //删除普通文件
- rm filename
-
- //递归删除
- rm -r dirname
-
- //强制删除
- rm -f dirname
-
- //递归并强制删除
- rm -rf dir
下面给大家看一下-i选项的魅力:(如果你有特殊的需求,不嫌弃它麻烦的话)
- [song@VM-8-5-centos ~]$ rm -r -i dir
- rm: descend into directory ‘dir’? Y
- rm: remove regular empty file ‘dir/test.c’? Y
- rm: remove regular empty file ‘dir/dir’? Y
- rm: remove directory ‘dir’? Y
你知道啥叫从删库到跑路吗?这就是指的我们Linux程序员的rm -rf / 删除根目录的骚操作。(这个别在root用户下上手使用哦) 因为Linux是一个企业后端服务器,上面会部署很多重要的服务。
当我们有某条命令不知道怎么使用的时候,我们可以通过指令来查询man手册(问一下这个男人),但是我们第一步得直到如何安装man手册:
说明:
作用:man是一个查看命令,是一个查看系统调用和C接口的手册,man手册是有编号的
说到这里你肯定还是不清楚man命令的具体使用:
不如我们问这个man,让它告诉我们man指令的相关信息吧:
man man
然后我们看到了man的更详细的信息:
我们现在只需关注man手册的前三条:
man默认是从1号手册开始查找,找到就停止
man命令可以根据指定手册查找 man 1/2/3 命令/接口/C
当我们想关闭man手册,回到LInux命令行界面只需输入Q或q即可
cp (选项) src dest
说明:
全称:copy
作用:#1拷贝普通文件夹 #拷贝目录
- //普通文件的拷贝
-
- cp test.c name.c
-
- //目录的拷贝:递归拷贝目录
- cp -r olddir newdir
-
- //src和dest都可以带上路径
-
- 1.dest不带上文件名也是可以的,但是该目录下名和src相同: cp test.c ../
-
- 2.dest也可以带上文件名: cp test.c ../name.c
-
- 3.如果有一些文件时不属于你的,可-f强制拷贝: cp -rf test.c name.c
好吧,今天就学到这里吧😁😁