Linux操作系统及常用命令详解
Shell其实就是一种我们进行人机交互的接口,Shell也有很多种,分别是sh、bash、csh、ksh、zsh和tcsh,接口的形式有两种,分别是:
1,GUI(Graphic User Interface->图形用户界面/接口)
在Windows操作系统中,图形界面是嵌入在内核中的,如果不启动图形界面就无法启动我们的计算机,而在我们的Linux操作系统中X(图形显示协议)-window只是外围软件(可有可无),Linux操作系统中有三个图形软件,分别是:Gnome、KDE和Xface。
2,CLI(Command Line Interface->命令行接口)
·操作系统结构
我们操作系统的最底层是我们的底层硬件,硬件上层就是我们的Kernel(内核),内核的上层可以有我们的应用程序,这种不通过库直接访问内核的方式叫做系统调用(system call),我们的内核上层也有封装好的库(library)和API(Application Program Interface->应用程序接口),库和API的上层就是我们的Shell,应用程序通过Shell和我们的封装好的库进行交互的方式叫做库调用,库的上层有一些可以直接进行库调用而不用通过Shell的应用程序,这些应用程序就类似我们的KDE和IDE(Integrated Develop Environment->集成开发环境),这些应用程序可以开机自启而不用通过Shell来启动,所以总的来说,操作系统的结构由上到下分别是:
Shell->最关键的程序
库
内核->我们的内核文件在Windows操作系统中的后缀为.dll(dynamic link library->动态链接库),在我们的Linux系统中的后缀为.so(shared object->共享对象)或者是.dso(dynamic shared object->动态共享对象)
硬件
·login(登录)
登录机制中的用户名是为了用户识别,我们的计算机识别的是用户的ID(数字),我们Linux操作系统是多用户多任务操作系统,我们的Linux操作系统的登录认证(Athentication)机制是先进行资源授权(Authorization),因为每个用户可用资源的权限是不一样的,是通过审计(Audition)进行授权的,审计是通过日志进行的。
·命令
1,prompt(命令提示符):
->#,表示为超级用户
->$,表示为普通用户
2,magic number(魔数):shebang
例如Shell脚本开头的#!/bin/bash即为魔数,表示命令或者脚本的执行入口。
3,命令的格式:
...#/$ command options(选项,-跟短选项,--跟长选项,短选项可以合并) argumnts(参数,即作用对象),有些选项中包含参数
ls(list)命令->列出,列表,用来列出指定路径下的文件或者是列表
·目录
Linux中的目录不是Windows中的文件夹,Windows中的文件夹相当于是一个容器,而我们的Linux中的目录不是容器,它也是一种文件,一种路径映射文件,Linux系统的层次化管理机制称为文件系统(Filesystem),我们Linux系统的结构为倒树状结构:
目录从根(/)目录起始,不可交叉的节点称为文件,可交叉节点称为目录,从"/"开始的路径称为绝对路径,当前位置的目录称为相对路径,我们的当前目录(current directory)也被称为工作目录(working directory),我们用户登录系统的时候就在工作目录中,FHS(Filesystem Hierarchy Standard->文件系统目录标准)中规定的默认(缺省)目录及目录中的文件都是不能改变的,我们的pwd(print working directory)命令,可以打印当前目录:
Linux系统中用"/"表示目录和文件的分隔符,Windows系统中用"\",而且文件和目录还有颜色之间的区别,蓝色字体表示目录:
绿色字体表示有执行权限的文件:
·ls命令
ls命令后面如果不加选项表示使用改名令的默认选项
-l(=--long)选项->表示显示长格式,显示完整信息
上图中的第一个字段的第一个字符表示的是该文件的类型,d表示目录文件,-表示普通文件(也可以用f=file表示),文件类型的后面9个字符代表的是文件的权限,第二个字段的数字表示该文件被硬链接的次数,第三个字段分别表示该文件的属主属组,第五个字段的数字表示的是文件的大小,默认单位为字节,最后一个字段代表的是文件的时间戳(timestamp->最近一次被修改的时间):
timastamp
我们Linux中的每个文件有三个时间戳:
->文件最近一次被访问的时间(atime),访问就是读的意思,acess
->文件最近一次被修改的时间(mtime),修改,modify
->文件最近一次被改变的时间(ctime),改变,change
Linux中的文件的数据由两部分组成:
->文件中包含的数据,文件的内容,修改文件只能是修改文件的内容,故文件中包含的数据对应的是mtime
->文件的属性数据,也叫做文件的元数据(metadata),改变只能改变文件的元数据,故文件的元数据对应的是ctime
-h(humanreadable)选项,表示的是单位换算
将文件大小的默认单位字节转换为KB、MB以及GB
-a选项,表示显示所有文件,将以"."开头的隐藏文件也全部显示出来
上图中的目录"."表示当前目录,目录".."表示的是当前目录的上一层目录
-A选项,和-a选项功能一样,唯一的区别是不显示目录"."和目录".."
-d选项,表示显示目录自身属性
-i选项,表示显示目录中文件的索引节点(inode),我们人类是依靠文件名识别文件的,而我们的计算机是依靠inode(index node)来识别我们文件系统中不同的文件的
-r选项,表示逆序显示文件
-R(Recursive)选项,表示的是递归显示文件(显示子目录,子子目录及其中的文件)
·cd命令
cd(change directory),顾名思义这是一个切换工作目录的命令,该命令后面只可以跟目录名
cd命令后面什么参数都不接的话,表示切换至家目录(home directory),家目录又叫做主目录,在bash中,以"~"表示我们的家目录
·Linux中的命令类型
->内置命令
是我们的Shell内置的,也叫做内建命令,builtin
->外部命令
我们的外部命令能否直接执行而不用列出具体路径是由我们bash中的环境变量PATH决定的
由上图可知,我们的环境变量PATH里面是使用冒号分隔的一堆路径,我们使用的命令如果不在环境变量PATH所包含的路径中的话,那么在使用时必须得加上具体的路径
我们可以使用type命令来显示我们的命令属于哪种类型:
·环境变量
定义当前用户工作环境的变量称为环境变量,我们的变量指的是一段被命名了的内存空间,往这段内存空间中存放数据叫做给变量赋值,变量的声明过程其实就是申请内存空间的过程,printenv命令可以显示当前的环境变量:
·clear命令
清屏命令
·hash命令
该命令可以用于显示缓存,这是我们bash中的内置命令
hash(哈希),是我们的命令数据库,当我们第一次执行某命令的时候,系统会在环境变量PATH中的路径中查找该命令,之后当我们再次执行相同命令的时候系统都是在hash缓存中查找,查找速度为O(1)->表示不管我们的文件列表有多长,我们查找文件的速度都不变,因为是在数据库中查找,上图中的hits表示命中次数,也就是我们命令的使用次数,所以这里我们就可以知道我们缓存(cache)的作用就是为了实现系统加速
·date命令
这是一个系统时间管理命令,date命令显示的是系统时间,CST指的是时间格式
date命令的使用方法:
->date +%D表示以月/日/年的格式来显示系统时间
date +"Today is %D."还可以打印引号里的字符串
->date +%d表示只显示年月日中的日
->date +%n表示换行
->date +%T表示以小时:分钟:秒的格式来显示系统时间
相当于使用date +%H:%M:%S
->date +%F表示以年-月-日的格式来显示系统时间
相当于使用date +%Y-%m-%d
->date +%s表示的是计算机元年计时法,指的是从1970年1月1日的零点到此时此刻的秒数,UTC表示格林尼治时间
·clock/hwclock命令
该命令用来管理硬件时间
我们计算机的主板上有纽扣电池,主板上有一个晶体震汤器,故我们的计算机在我们关机断电的时候还可以继续记录时间,这个时间就叫做硬件时间(rtc->real time clock:实时时钟),我们的系统时间是通过软件模拟的rtc,故我们可以利用硬件时间来手动同步我们的系统时间:
hwclock -w->表示将硬件时间同步为系统时间
hwclock -s->表示将系统时间同步为硬件时间
hwclock -r->表示的是显示硬件时间
Windows系统上是通过NTP(Network Time Protocol)协议来进行时间同步的
·获得命令的使用帮助
help命令
->内部命令的使用帮助
格式:help COMMAND
->外部命令的使用帮助
格式:COMMAND --help,这种用法只能显示出命令的简要帮助信息,而且针对大多数的外部命令
命令手册(manual)
格式:man COMMAND,man命令无法查看内部命令的使用帮助
由上图知,man命令是分章节的:
第一章节查看的是用户命令的帮助,是针对所有用户的命令,即/bin、/usr/bin及/usr/local/bin下的命令
第二章节查看的是系统调用的帮助
第三章节查看的是C语言库函数的使用帮助
第四章节查看的是特殊文件和设备文件(设备访问的入口)的使用帮助
第五章节查看的是文件格式(文件格式用来解释配置文件的语法)的使用帮助
第六章节查看的是游戏相关的使用帮助
第七章节查看的是杂项(Miscellaneous)的使用帮助
第八章节查看的是系统管理工具(只有管理员才可以使用即/sbin、/usr/sbin以及/usr/local/sbin)的使用帮助
我们可以使用whatis命令来查看命令的章节,使用格式:whatis COMMAND:
从而可以根据章节来精准的查看命令的使用帮助
man手册中的条目分别都指的是:
NAME->指的是命令名称及功能简要说明
SYOPSIS->用法说明,包括可用选项
DESCRIPTION->命令功能的详尽说明,可能包括每一个选项的意义
OPTIONS->说明没一个选项的意义
FILES->与此命令相关的配置文件
EXAMPLES->命令使用示例
SEEALSO->另外参照
man手册使用方法:
翻屏
空格键->表示向后翻一屏
b->表示向前翻一屏
回车键->表示向后翻一行
k->表示向前翻一行
查找
->/KEYWORD,小写n表示向后查找,大写N表示向前查找
->?KEYWORD,小写n表示向后查找,大写N表示向前查找
退出
q,表示退出man手册
·在线文档
->info
info相当于是对man手册的补充,使用格式info COMMAND:
PageUp表示向前翻屏,PageDown表示向后翻屏,Tab键表示切换超级链接
->doc(documentation,文档)
在我们的/usr/share/doc有一个文档
FAQ(Frequently Answer and Question,表示的是常见问题解答)
·cal命令
日历
·echo命令
默认换行输出
-n选项表示不换行输出
·printf命令
默认不换行输出
使用换行符可以使之换行输出
转载于:https://blog.51cto.com/zhubo/1842564