操作系统(Operating System)是软件,操作系统的存在是为了让计算机更好用,这是操作系统的根本要义
在计算机内部大致是可以这样进行划分:
操作系统是一款进行软硬件资源管理的软件,具体如何理解这句话?
在C语言学习中我们写的第一个程序一般都是:
printf("hello world!");
从最终效果来看,printf函数把hello world这句话打印在了显示屏上,我们可以通过显示屏看到这句话,那么实际上,从这句程序到最后打印到显示屏上是需要进行一些复杂的过程,我们编写的程序为什么最终可以访问到硬件?这当中必然离不开操作系统的能力
这里我采用的是XShell的机器,后续的学习也都会用XShell进行学习
登录指令
进入Linux界面,输入
ssh [email protected](ip地址)
对于用习惯Windows的我们来说,转到Linux上一大不习惯的地方就是Linux的各种指令,简单来说,你可以在Windows上用鼠标和键盘完成一系列例如进入目录寻找某个文件,复制粘贴文件…等所有操作,而这些操作都是用键盘鼠标完成的,而在Linux上的一大不同点就是把这些全部换成了指令,但我们需要知道的一点是图形化界面和命令行操作的本质都是一样的,都是对操作系统进行直接或间接的操作
我们用的指令,本质上就是可执行程序写的,指令,工具,可执行程序…的本质都是可执行程序
那么介绍完这些,就可以正式开始学习Linux了,打开来自新世界的大门
介绍linux指令中,对于我还没有完全学习的指令只写已经学习完的,没有学习的后续进行补充
ls是一个查看目录和文件的指令,那么在这之前首先要对存储的文件有一些基础的认识
新建一个文件,这个文件是否占据空间?
答案是占据!文件的名字,文件的大小,文件的修改日期…这些都会在计算机内存中占据一定的空间,因为这些都是对文件属性的描述,文件可以表示为内容加属性,而从数据的角度来讲,文件的内容和文件的属性都是数据,都是要在磁盘硬盘中留下自己的一席之地,而我们下面讲的ls指令,就是对文件的属性进行的操作
.开头的文件以及本级目录上级目录都是什么?
Linux中,以.开头的文件都是隐藏文件
在Windows图形化界面中,想要返回上一级目录只需要选择退回就可以,而在Linux指令级的界面中,就需要用到本级目录和上级目录:
. 表示的是本级目录,也叫做当前所在目录
.. 表示的是上级目录,后面讲的cd指令就是去特定的目录所用的
.本级目录的作用:用来执行一个程序,假如现在有一个程序是a.out,现在我要执行它,我就应该使用下面的指令
正确的方式:
./a.out
不正确的方式:
a.out
而这个./的意义,就是要找到这个程序,再对它进行运行
在Linux系统中,磁盘上的文件和目录被组成了一棵目录树,每个节点都是目录和文件,具体可以这样表示:
可以类比Windows系统的概念,在Windows系统中,C盘下有很多文件和文件夹,而文件夹中又会有很多文件和文件夹…在Linux中也是如此,root根目录下有user,dev,home等许多文件和文件夹,文件夹又可能有更多的分支,因此根目录实际上是一种多叉树的结构
为什么在Linux系统中要采用这样的结构?
在系统中一定会存在命名一样的文件,而只有通过这种方式才能找到文件的唯一标识文件的方式,因为对于任何一个节点来说,它有且只有唯一的一个父节点
在描述一个文件在系统中所处的位置时,可以有两种表示方式,分别是绝对路径和相对路径,绝对路径就是指从根目录出发到这个文件一路的路程表示,而相对路径是指我相对于你所处的位置,例如,现在要表示一下上图中bin文件的路径,我现在所处的目录是在lib路径下
用绝对路径来表示就是
/root/user/bin
用相对路径来表示就是
../bin/a.txt
基本语法:ls 项目 目录或文件
功能:对于目录来说,用该命令列出该目录下的所有子目录和文件,对于文件,列出文件名和其他信息
常用的指令
-a:列出目录下的所有文件,包括.开头的隐藏文件
-l :查看目录下的详细信息,显示文件的更多信息
ls -l和ls -a可以一起使用,既显示隐藏文件又显示更多信息
语法:pwd
功能:显示用户当前所在的目录
这是一个很简单的指令,就是用来看当前我们所处的是哪个目录
语法:cd 目录名
功能:改变工作目录,将当前工作目录转到指定的目录下
例如:
cd … : 返回上级目录
cd /root/litao/linux/ : 绝对路径
cd …/user/ : 相对路径
cd ~:进入用户家目
cd -:返回最近访问目录
语法:touch 选项 文件
功能:touch命令参数可以改变文档或目录的日期和时间,包括存取时间和更改时间,或者创建一个不存在的文件
常用选项:
语法:mkdir 选项 dirname
功能:在当前目录下创建一个名为dirname的目录
常用选项:
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立
好那些尚不存在的目录,即一次可以建立多个目录
rmdir是一个和mkdir向对应的指令,mkdir是用来创建目录,rmdir是用来删除命令
语法:rmdir -p dirname
功能:删除空目录
常用选项
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除
语法:rm 选项 dirname
功能:删除文件和目录
常用选项
-f 即使文件属性为只读(即写保护),亦直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件
这个指令类似于一个帮助文档,当我们遇到Linux中我们不熟悉的指令时,可以用这个帮助文档来替我们解决问题:
语法:man 选项 命令
功能:帮助我们寻找一些指令含义
语法:cp 选项 源文件或目录 目标文件或目录
功能:复制文件或目录
说明:cp指令用于复制文件或目录,如果指定了两个以上的文件或目录,且最后一个的目的地是一个已经存在的目录,则会把它前面所有的文件或目录都复制到这个目录中,若指定了多个文件或目录,而最后一个目的地不存在,就会报错
常用选项:
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链
接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
mv指令是move的意思,可以用来移动文件或者给文件更改名字,这是Linux下常用的一个命令,用来备份文件或者目录
语法:mv 选项 源文件或目录 目标文件或目录
功能:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
语法:cat 选项 文件
功能:查看目标文件的内容
常用选项:
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行
语法:more 选项 文件
功能:类似于cat
常用选项:
-n 对输出的所有行编号
q 退出more
echo后跟着内容,默认情况下会把内容打印到显示屏上,通过输出重定向的指令可以把内容打印到文件中
首先要对Linux有直观的认识,Linux下一切皆文件,不管是从显示器写入还是从键盘写入,我们都可以把这个过程看成是文件的操作,下面就引入了输出重定向的概念
那么如何理解一切皆文件的概念?这里echo是把内容输出到显示屏中,我们可以把echo写到显示屏的操作看成向一个叫做显示屏的文件中写入内容,而输出重定向就是把这段本该输出到显示器文件的内容输出到其他文件中,因此可以完成下面的操作
那什么又是追加重定向?它和输出重定向有什么区别呢?
这里的追加重定向和输出重定向本质上和文件的操作中关于a和w是一样的
追加重定向不会覆盖原文件,只会在原来文件的基础上增加,而输出重定向会覆盖原文件重新写入
这里介绍less指令的各项作用和功能
首先nano中创建一个文件,里面是hello linux
less工具指令是对文件或其他输出进行分页显示的工具,在Linux中功能十分强大
语法:
less 参数 文件
功能:less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
常用选项:
-i 忽略搜索时的大小写
-N 显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
q:quit
Linux下find命令在目录结构中搜索文件,并执行指定的操作。
Linux下find命令提供了相当多的查找条件,功能很强大。
语法: find pathname -options
功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项:
-name 按照文件名查找文件
语法: grep [选项] 搜寻字符串 文件
功能: 在文件中搜索字符串,将找到的行打印出来
常用选项:
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行
语法: zip 压缩文件.zip 目录或文件
功能: 将目录或文件压缩成zip格式
常用选项:
-r 递 归处理,将指定目录下的所有文件和子目录一并处理
Linux指令只是入门要掌握的一些基本操作