每个优秀的人,都有一段沉默的时光。
那段时光,是付出了很多努力,却得不到结果的日子,我们把它叫做扎根。
一、xshell的介绍+操作系统
1.1 xshell
xshell是一款支持多种网络协议,能够通过互联网远程连接主机,是一款强大的安全终端模拟软件并且具有很多创新性的设计,我们linux的学习便是通过这款软件。
Linux中指令操作几乎所有的平台都是支持的,macos,windows,linux等等,只不过指令操作是Linux上专业程序员应该要懂得。
xshell可以配置登陆的用户名和IP,主题颜色等,全屏Alt+Enter。
可以选择ssh+root+@+公网IP登录xshell,也可以直接左上角新建会话属性,配置登录时的用户名。
配置好之后我们以后直接点击连接就可以登录xshell了,不用ssh+root那样登录了,可以省下一些时间。
登录时,我们可以选择记住用户名,这样你以后连接你创建的会话时就不需要重新再输入用户名了,直接输入密码登录就可以了。
1.2 操作系统
前言:开机的本质就是加载操作系统。
计算机的软硬件是一个层状结构。
我们平常买回来外置的键盘或鼠标,如果插到电脑上之后,其实是要等一会儿才能使用,即使你插上之后显示灯已经亮起来了,操作系统也已经开机了,但短期内还是用不了的,这是因为在我们的操作系统和硬件层之间还有一层软件层,就是驱动程序。
我们的硬件如果想要投入使用,其实是要被驱动的,这个工作就交给了我们的驱动程序。,每一套硬件都会配套一款驱动程序,所以驱动程序是直接和硬件打交道的。
再往上就是用户层了,我们平常写的代码等都是用户层的应用软件,我们是没有在操作系统里写过系统级软件的,也没有在驱动程序里写过驱动软件。
1.什么是操作系统呢?
操作系统是一款进行软硬件管理的软件!
2.操作系统的意义是什么?
操作系统对软硬件进行合理的管理(手段),以达到为上层用户提供,良好的,稳定的,安全的运行环境的目的!
所以操作系统是非常重要的,我们需要操作系统对下面的软硬件管理好,让它别老是出错,崩溃,否则没人愿意使用这款笔记本或者手机了。
二、Linux下基本指令
2.1 ls(显示当前目录下的文件列表,包括目录,普通文本文件,ls+选项+目录或文件)
ls命令会显示根目录下的目录和普通文本文件
tree命令以树状形式列出当前目录下的所有文件和子目录,并且告诉我们当前路径下,还有几个目录和文件
ll后面如果没有+目录或文件,那就默认显示当前路径或称之为当前目录下的详细信息
2.1.1 ls -l(以list的形式,显示文件更多的属性)
进入子目录dir中,我们用ls -l显示出当前目录下文件更多的属性
这是根目录下文件的更多属性
2.1.2 ls -l -a(显示更多的隐藏文件)
我们在dir目录中新建了一个隐藏目录.youcannotseeme和一个隐藏文件.seeme
如果我们使用ls -l只会显示文件的更多属性,我们看不到隐藏文件或目录,如果我们使用ls -l -a就能看到dir目录下原本就有的隐藏文件或目录和我们刚刚创建的隐藏目录和隐藏文件
当然,我们也可以将-l -a连在一起,同时将文件和目录属性以及隐藏文件或目录都给我们显示出来。
除此,我们也可以使用ll -a,其中的ll就相当于我们的ls -l,我们用ll,Linux也是可以识别的。
当然ls -al 和ls -la 和ll -a等都是一样的操作,聪明的Linux都是可以识别的
2.1.3 ll -d(不进入目录,显示目录详细信息)
如果没有-d选项,我们会列出dir目录中的子目录以及文件的详细信息,不包括隐藏文件,但如果加上-d,我们就不会进入目录,直接将目录看作文件,列出他的详细信息
如果没有-d选项的话,我们会直接将根目录/中的所有子目录或文件的详细信息显示出来。带上-d选项之后我们就可以直接显示根目录本身的详细信息了,将其看作成一个文件。
2.1.4 ls -R(递归式列出所有子目录下的文件)
通过tree和ls -R两个命令的对比,我们可以看出ls -R可以以递归的形式列出当前路径下所有的子目录或文件
2.2 mkdir(在当前路径下,创建一个目录)
2.2.1 mkdir dirname(创建一个名为dirname的目录)
dir目录中的dirnext子目录就是我们通过mkdir创建出来的
2.2.2 mkdir -p dir1/dir2/dir3(递归建立多个目录)
使用-p选项之后我们就可以递归建立多个目录了。
2.3 pwd(显示当前我所处的路径)
我们每一次登录,或者长时间没操作,建议都先执行一下pwd,确认一下自己在哪里
比如,我现在就在根目录中的子目录dir中,/root/dir这就是我当前所处的路径。
2.4 cd (进入指定的目录)
2.4.1 cd .(进入当前目录)和cd …(进入上级目录
我们在dir目录下,新创建了一个dirnext目录,当然这个目录看起来是什么都没有的,因为我们ls过后,没发现这个目录中有什么文件或子目录,但当我们ls -l -a过后我们可以看到有两个隐藏的文件出来了,一个是.一个是…,这两个分别代表的是当前路径和上级路径。
为什么我们新建目录时,目录中会自动带有这两个隐藏文件呢?道理很简单,这就可以方便我们任意的切换路径,这种切换路径的方式也被称为相对路径,另一种切换路径的方式就是我们退回到根目录下,一层一层的往下走,这样切换路径的方式称之为绝对路径。
一下操作中我们可以看到,cd …之后我们路径就切换为/root/dir了
2.4.2 cd (绝对路径)或(相对路径)
D:\linux操作系统\Linux课件.zip这就是windows下的路径,其中反斜杠\称之为windows下的路径分隔符,\用于分隔各个文件夹
/root/dir/dirnext这是Linux下的路径,其中斜杠/称之为Linux下的路径分隔符,/用于分隔各个目录
绝对路径:从根目录/(斜杠)开始找我们想要访问的目录
相对路径:在我们当前目录dirnext下,我们可以通过相对路径的方式直接进入到根目录/下的home目录
不管是windows还是Linux,每个文件夹或目录下都可以有新的子文件夹或者子目录,所以Linux的目录结构就是一个树的结构。
只要我们有cd命令,我们就可以访问到Linux下所有的路径。
2.4.3 cd ~(回到当前用户的家目录(工作目录))
我们刚刚是在根目录/下的home目录,我们可以通过cd ~直接回到根目录/下的root目录中,这个目录也是我们超级用户root的工作目录
我们可以通过whoami看到当前用户类型。比如我们现在就是root用户,其工作目录也就是家目录,也就是我们的/root目录。
2.4.4 cd -(回到上一次访问的目录)
我们进入了根目录中home中的lighthouse目录,通过cd -我们就可以直接返回到我们的工作目录(家目录)/root。
所以这个指令可以帮助我们快速回到两个热点访问的目录。
2.5 Linux热键
2.5.1 Tab键
当我们忘记某个命令时,我们只记得前几个字母,这时我们可Tab两下,它会自动帮我找出所有含我们输入的命令,例如下面的mkd,连续Tab两下,我们可以找出mkdir指令了就。
当我们想进入某个目录时,但不知道这个目录中的目录名时,我们可以选择Tab两下,他会自动补齐dir目录中还有哪些目录可以进入。由下面的图片可知,还有dirnext和youcannotseeme目录可以进入
文件名后面加个目录分隔符表示当前文件不是一般文件而是一个目录。
2.5.2 crtl+c键
我们可以使用crtl+c键,终止疯狂刷屏的程序。
2.6 touch(创建指定的普通文件)
dir目录中的test.c以及text.c等文件都是touch出来的。
我们创建目录用的是mkdir,创建文件用的是touch,不要搞混了。
2.7 stat(查看文件的所有属性)
这里有三个时间
Access time :表示最后一次访问(仅仅是访问,没有改动)文件的时间。
Modify time :表示最后一次修改文件的时间。
Change time :表示最后一次对文件属性改变的时间,包括权限,大小,属性等等。
2.8 gcc(运行我们的代码文件)&&nano(文本编辑器)
我们可以通过nano指令创建一个test2.c的文件,并向其中写一些c语言代码,然后利用gcc运行起来最后通过./a.out运行可执行程序a.out然后就出来我们的运行结果了。
当我们运行text.c文件后会产生可执行程序文件a.out我们可以通过gcc编译器完成a.out的运行。
./a.out就是执行当前路径下的a.out文件
2.9 rm&&rmdir
2.9.1 rmdir(只能删除空目录)
我们新建了一个mycode的空目录,我们现在不想要它了,直接rmdir删除这个目录就OK了。
但如果我们想要删除刚刚递归创建的dir1目录的话,他说目录不能为空,我们是删除不了这个dir1目录的。由此可见我们的rmdir指令只能删除空目录。
并且如果我们想要删除test.c文件,他也会报错说这不是一个目录,这也更能说明了我们的rmdir只能删除空目录
2.9.2 rm(默认删除文件)&&rm -r(递归删除目录)&&rm -rf(强制递归删除目录)&&rm -rf ./*(只要权限够,删除当前路径所有文件)
我们这里就已经把test.c文件删除了,ll显示文件详细信息时,我们可以看到test.c已经没有了
这里递归删除dir1时,它老是问我是否要删除,非常烦人阿,我们直接用rm -rf强制递归将这个一连串路径全给他删除了
rm -rf直接强制递归删除,删库跑路就用这个,但我们可不要做这样的人哦,简直太没良心了。
rm -rf ./*删除当前路径下的所有文件,比如下方我们递归建立了一串路径,使用rm删除不行,因为dir1是一个目录,使用rm -r他老是问我同不同意删除,所以我们使用rm -rf ./*删除当前路径下的所有文件。
我们也可以看到当执行过后,我再使用tree命令dirnext中什么文件都没有了,全被我们删除了。
删除目录-r,强制删除文件-f,强制删除目录中的所有文件-rf
2.10 man(查找Linux系统接口,指令,cLibrary的手册)
man man可以查到man到底是干什么的
最常用的就是前三个手册,命令手册,系统调用,库函数(c语言),其他的手册,我们暂时还用不上
man 3 printf就可以查到printf这个接口了
你直接使用man printf出来的就是printf这个指令,而不是c接口里的printf,因为我们的man查找你如果不事先声明手册的类型,他就会从1手册开始往后找,直到找到位置,printf也是一条指令,所以如果你不用man 3 printf,用man printf就会从1手册里把printf指令显示出来。