Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
目前安装操作系统方式有2种:真机安装、虚拟机安装。
如果是学习或者测试使用,强烈建议使用虚拟机安装方式。虚拟机目前有2个比较有名的产品:vmware出品的vmware workstation、oracle 出品的virtual Box。关于如何安装虚拟机,以及如何在虚拟机中安装Linux系统,可以参见网上其他文章。
文件:一般都是一个独立的东西,可以通过一些特定的工具进行打开,并且其中不能在包含除了文字以外的东西。
文件夹:可以在其中包含其他文件的东西。
本质上说,文件是数据的实体,而文件夹则是用于组织和管理文件的概念性容器。文件可以存储在文件夹中,而文件夹本身无法存储数据,它只是用来存放和管理文件。文件夹通过文件系统的层级结构来组织文件,使得用户能够更方便地定位和操作文件。
Linux 本身也是一个基于文件形式表示的操作系统。Linux一切皆文件。在windows是文件的,在Linux下同样也是文件;在windows不是文件的,在Linux下也是以文件的形式存储的;
日常学习中和日常工作中,对文件的操作有:创建文件、编辑文件、保存文件、关闭文件、重命名文件、删除文件、恢复文件。
Linux 目录结构:
处理目录的常见命令见下表。
项目 | Value |
---|---|
ls(英文全拼:list files) | 列出目录及文件名 |
cd(英文全拼:change directory) | 切换目录 |
pwd(英文全拼:print work directory) | 显示目前的目录 |
mkdir(英文全拼:make directory) | 创建一个新的目录 |
rmdir(英文全拼:remove directory) | 删除一个空的目录 |
cp(英文全拼:copy file) | 复制文件或目录 |
rm(英文全拼:remove) | 删除文件或目录 |
mv(英文全拼:move file) | 移动文件与目录,或修改文件与目录的名称 |
在介绍上述命令详细用法之前,需要了解一下相对目录和绝对目录。
语法
ls [-aAdfFhilnrRSt] 目录名称
ls [–color={never,auto,always}] 目录名称
ls [–full-time] 目录名称
选项与参数:
将目录下的所有文件列出来(含属性与隐藏档)
请注意,在Linux中,以“-”开头的都是文件,以“d”开头的都是文件夹。
pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。
如果想要创建新的目录的话,那么就使用mkdir (make directory)吧。
mkdir [-mp] 目录名称
选项与参数:
rmdir [-p] 目录名称
选项与参数:
cp 即拷贝文件和目录。
cp [-adfilprsu] 来源档(source) 目标档(destination)
cp [options] source1 source2 source3 … directory
下面为复制一个文件,注意:Linux在复制过程中是可以重新对新位置的文件进行重命名的,但是如果不是必须的需要,则建议保持前后名称一致。
下面为复制一个文件夹,注意:当使用cp命令进行文件夹复制操作的时候需要添加选项“-r”【-r表示递归复制】,否则目录将被忽略
rm [-fir] 文件或目录
选项与参数:
mv [-fiu] source destination
mv [options] source1 source2 source3 … directory
选项与参数:
复制一文件,创建一目录,将文件移动到目录中。
注意,文件和文件夹的重命名操作也是 mv 命令。
管道符:|
作用:管道一般可以用于“过滤”,“特殊”,“扩展处理”。
语法:管道不能单独使用,必须需要配合前面所讲的一些指令来一起使用,其作用主要是辅助作用。
案例1:过滤某个文件夹下所有包含“init”字符串的文件或文件夹
案例2:统计当前目录下文档的总个数
Linux系统中使用以下命令来查看文件的内容:
作用:cat有直接打开一个文件的功能
cat 文件的路径
作用:查看一个文件的前n行,如果不指定n,则默认显示前10行。
head -n 文件路径 【n表示数字】
查看一个文件的未n行,如果n不指定默认显示后10行.
tail -n 文件的路径 n同样表示数字
作用:查看文件,以较少的内容进行输出,按下辅助功能键(数字+回车、空格键+上下方向键)查看更多
less 需要查看的文件路径
作用:统计文件内容信息(包含行数、单词数、字节数)
wc -lwc 需要统计的文件路径
选项与参数:
一般命令的输出都会显示在终端中,有些时候需要将一些命令的执行结果想要保存到文件中进行后续的分析/统计,则这时候需要使用到的输出重定向技术。
输出重定向有两种方式:
语法:
正常执行的指令 > / >> 文件的路径
注意:文件可以不存在,不存在则新建
使用覆盖重定向,保存ls -la 的执行结果,保存到当前目录下的ls.txt
作用:用于查找文档(其参数有55个之多)
find 路径范围 选项 选项的值
选项:
案例1:使用find来搜索passed
案例2:使用find来搜索/etc下所有的文件夹。
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个惟一的用户名和各自的密码。
用户在登录时键入正确的用户名和密码后,就能够进入系统和自己的主目录。
在用户和用户组管理当中,需要格外注意三个文件:
打开 /etc/passwd ,我们截取最后几行
可以看出,该文件中每行的字段都是用冒号分隔开的,每行的格式为:
用户名:密码:用户ID:用户组ID:注释:家目录:解释器shell
以冒号分隔开的每个字段含义为:
项目 | Value |
---|---|
用户名: | 创建新用户名称,后期登录的时候需要输入; |
密码: | 此密码位置一般情况都是“x”,表示密码的占位; |
用户ID: | 用户的识别符; |
用户组ID: | 该用户所属的主组ID; |
注释: | 解释该用户是做什么用的; |
家目录: | 用户登录进入系统之后默认的位置; |
解释器shell: | 等待用户进入系统之后,用户输入指令之后,该解释器会收集用户输入的指令,传递给内核处理; |
su [用户名] (switch user)
如果用户名不指定则表示切换到root用户。
切换用户需要注意的事项:
提示:所有跟用户操作的命令(除passwd外)只有root超级管理员有权限执行。以下所有的用户操作需要首先切换到root用户下。
#useradd 选项 用户名
常用选项:
案例:创建用户zhangsan,并且创建同名的主目录。
验证用户创建是否成功,可以通过下面两种方式之一。
userdel 选项 用户名
常用选项:
案例:删除zhangsan用户
注意:已经登录的zhangsan用户删除的时候提示删除失败,这是需要 kill对应用户的全部进程。
usermod 选项 用户名
常用选项:
案例:新建用户李四,将李四的主组改为1000,附加组改为1001。
Linux不允许没有密码的用户登录到系统,因此前面创建的用户目前都处于锁定状态,需要设置密码之后才能登录计算机。
#passwd 用户名
案例:设置lisi用户的密码
在设置密码的时候也是没有任何输入提示的,放心输入,确保两次输入的密码一致,按下回车即可。
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
文件结构:
用户组名:密码:用户组ID:组内用户名
密码:X表示占位符,虽然用户组可以设置密码,但是绝大部分的情况下不设置密码;
组内用户名:表示附加组是该组的用户名称;
groupadd 选项 用户组名
常用选项:
案例:使用groupadd指令创建一个新的用户组,组的ID为3001,命名为Administrator
groupmod 选项 用户组名
常用选项:
案例:修改Administrators用户组,将组ID改为888.
groupdel 用户组名
注意:当如果需要删除一个组,但是这个组是某个用户的主组时,则不允许删除;如果确实需要删除,则先从组内移出所有用户。
作用:操作服务器的主机名(读取、设置)
hostname 含义:表示输出完整的主机名
#hostname -f 含义:表示输出当前主机名中的FQDN(全限定域名)
作用:查看一个用户的一些基本信息(包含用户id,用户组id,附加组id…),该指令如果不指定用户则默认当前用户。
#d 默认显示当前执行该命令的用户的基本信息
id 用户名 显示指定用户的基本信息
作用:“我是谁?”显示当前登录的用户名,一般用于shell脚本,用于获取当前操作的用户名方便记录日志。
whoami
作用:主要是查看服务器的进程信息
选项含义:
作用:查看服务器的进程占的资源(100%使用)
进入命令:top (动态显示)
退出命令:按下q键
在运行top的时候,可以按下方便的快捷键:
作用:查看目录的真实大小
du -sh 目录路径
选项含义:
作用:用于操作网卡相关的指令。
ifconfig (获取网卡信息)
作用:表示杀死进程(当遇到僵尸进程或者出于某些原因需要关闭进程的时候)
kill 进程PID (语法需要配合ps一起使用)
作用:重新启动计算机
语法1:#reboot 重启
语法2:#reboot -w 模拟重启,但是不重启(只写关机与开机的日志信息)
作用:关机
#shutdown -h now “关机提示”
或者 #shutdown -h 15:25 “关机提示”
作用:manual,手册(包含了Linux中全部命令手册,英文)
man 命令 (退出按下q键)