目录
一、什么是shell?
二、shell的功能及基本工作流程
三、Linux的文件系统
1.Linux的文件系统是一个倒树形结构
2.2级目录的作用/解释
3.Linux下的文件管理
3.11文件的批处理命令(通配符与精确匹配)
Linux一般由4个主要部分组成:内核、shell、文件系统、应用程序;前三个以前形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。
安装Linux的时候了解了Linux是一个内核,那接下来要了解的是shell。
shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从shell或其他程序向Linux传递命令时,内核会做出相应的反应。
shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。
Shell是一种具备特殊功能的程序, 它是介于使用者和Linux 操作系统之核心程序(kernel)间的一个接口。为什么我们说 shell 是一种介于系统核心程序与使用者间的中介者呢?读过操作系统概论的读者们都知道操作系统是一个系统资源的管理者与分配者,当您有需求时,您得向系统提出;从操作系统的角度来看,它也必须防止使用者因为错误的操作而造成系统的伤害?众所周知,对计算机下命令得透过命令(command) 或是程序(program);程序有编译器(compiler)将程序转为二进制代码,可是命令呢?
其实shell 也是一支程序,它由输入设备读取命令,再将其转为计算机可以了解的机械码,然后执行它。
(各种操作系统都有它自己的 shell,以 DOS 为例,它的 shell 就是 command.com文件。如同 DOS 下有 NDOS,4DOS,DRDOS 等不同的命令解译程序可以取代标准的command.com ,UNIX 下除了 Bourne shell(/bin/sh) 外还有 C shell(/bin/csh)、Korn shell(/bin/ksh)、Bourne again shell(/bin/bash)、Tenex C shell(tcsh)等其它的 shell。UNIX/Linux将 shell 独立于核心程序之外,使得它就如同一般的应用程序, 可以在不影响操作系统本身的情况下进行修改、更新版本或是添加新的功能。)
有一些命令,比如改变工作目录命令cd,是包含在shell内部的。还有一些命令,例如拷贝命令cp和移动命令rm,是存在于文件系统中某个目录下的单独的程序。对用户而言,不必关心一个命令是建立在shell内部还是一个单独的程序。
shell首先检查命令是否是内部命令,若不是再检查是否是一个应用程序(这里的应用程序可以是Linux本身的实用程序,如ls和rm,也可以是购买的商业程序,如xv,或者是自由软件,如emacs)。然后shell在搜索路径里寻找这些应用程序(搜索路径就是一个能找到可执行程序的目录列表)。如果键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。如果能够成功找到命令,该内部命令或应用程序将被分解为系统调用并传给Linux内核。
1.shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。当普通用户成功登录,系统将执行一个称为shell的程序。正是shell进程提供了命令行提示符。作为默认值(TurboLinux系统默认的shell是BASH),对普通用户用“$”作提示符,对超级用户(root)用“#”作提示符。
具体如下图:
一旦出现了shell提示符,就可以键入命令名称及命令所需要的参数。shell将执行这些命令。如果一条命令花费了很长的时间来运行,或者在屏幕上产生了大量的输出,可以从键盘上按ctrl+c发出中断信号来中断它(在正常结束之前,中止它的执行)。
当用户准备结束登录对话进程时,可以键入logout命令、exit命令或文件结束符(EOF)(按ctrl+d实现),结束登录。
行提示符含义:[dlee@localhost Desktop]$
dlee:##表示用户
@:##分隔符
localhost:##主机短名称
Desktop:##所在系统位置
$:##身份提示符
我们学习不能直接用真机练习基本指令,万一玩坏了以初学者的水平恐怕难以修复,所以装个虚拟机是最佳的方法。
虚拟机管理命令:
rht-vmctl start desktop/server:##开启虚拟机
rht-vmctl poweroff desktop/server:##关闭虚拟机
rht-vmctl view desktop/server:##显示虚拟机
rht-vmctl reset desktop/server:##重置虚拟机
/bin:##二进制文件,系统常规命令;bin是Binary的缩写,这个目录存放着最经常使用的命令;
/boot:##系统启动分区,系统启动时读取的文件;这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev:##设备文件;dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc:##大多数配置文件;这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:##普通用户的家目录;用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib:##32位函数库;这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/lib64:##64位函数库;
/media:##手动临时挂载点;linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt:##手动临时挂载点;系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/opt:##第三方软件安装位置;这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:##远程信息及硬件信息;这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
/root:##超级用户家目录;该目录为系统管理员,也称作超级权限者的用户主目录。
/run:##临时设备的默认挂载点;
/sbin:##系统管理命令;s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/srv:##数据; 该目录存放一些服务启动之后需要提取的数据。
/var:##数据;这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/sys:##内核相关信息;这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp:##临时文件;
/usr:##用户相关设定;这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
3.1建立文件
touch file:建立空文件,或修改文件的时间戳;
touch file1 file2 :建立多个文件;
3.2建立目录(Windows中我们常叫做文件夹,Linux下我们叫它目录)
mkdir:建立单个目录
mkdir -p:建立多层目录
3.3文件的删除
rm -f file:强行删除文件且没有任何提示
rm - fr file:强行删除目录包括里面的内容且没有任何提示
3.4文件的编辑(vim)
vim file:进入文件后是浏览模式,不能编辑;按下insert键进入编辑模式;按ESC退出编辑模式;按下‘shift+:’键输入wq表示保存退出;w表示写入;q表示退出。
vim使用技巧:
①复制粘贴操作
yy:复制一整行
yl;复制一个字母
yw:复制一个单词
cc:剪掉整行
cl:剪掉一个字母
cw:剪掉一个单词
tips:按下剪贴操作后会进入插入模式,如需粘贴则需按下
p:粘贴
②删除操作
dd:删除一整行
dl:删除一个字母
dw:删除一个单词
③后悔操作
u:撤销上次操作
Ctrl+r:恢复撤销
④字符批量操作
Ctrl+v:方向键控制光标批量选择一部分然后操作;
⑤批量添加:
1)把光标移动到要加入字符所在列
2)ctrl + v 进入可视化模式
3)选中要家字符所在列
4)按进入插入模式并写入要加入的字符
5)按
⑥批量修改:
%s/原有字符/修改后的字符/g
2,6s/原有字符/修改后的字符/g:任意行的字符改动
⑦同时编辑多个文件:
vim test进入第一个-->shift+:键-->输入sp test2
tips:光标在那个中操作的就是那个,按Ctrl+W键再按↑或↓键可以切换;
⑧vim的退出
ESC退出编辑-->“shift+:”键-->:
q:未做修改直接退出;
q!:修改了不想保存,强制退出;
wq:退出保存;
wq!:当文件属于自己或用户为root时可用;
⑨异常退出
当vim非以上正常退出时会产生.filename.swp文件
再次打开文件是会产生如下报错
退出;
如果想要删除swp可以采用rm操作:rm -f .filename.swp或者rm -f .*.swp(表示全部swp文件)
3.5查看文件:
cat test:输出所有内容
cat -b test:输入内容并加入行号
less test:分页浏览-->↑或↓移动行&pgdn或pgup翻页&q退出
tail -数字 test:显示文件后几行
head -数字 test:显示文件前几行
3.6文件复制
cp 被复制的文件名 粘贴文件名:cp test testcopy
复制多个文件到某个目录中:cp test test1 test2 file/
复制目录:cp -r file file1/
3.7文件移动
重命名目录:mv file rm
移动目录:mv rm file1
移动文件:mv test1 file1
移动某个文件中的所有文件到当前目录:mv file1/* .(*与.直接有个空格,‘.’代表当前目录)
3.8文件路径
相对路径:
文件相对当前系统位置的一个名称简写
文件名称省略了当前路径的值
只有当前在此目录中时可以使用
文件名称不以/开头
文件名称会自动在字符前加入'pwd'显示的路径
绝对路径:
是文件在系统中真实的位置
任何时间都可以精确表示一个文件的名称
文件名称以/开头
3.9关于路径的命令
pwd:显示当前工作目录
cd:切换当前工作目录
cd /mnt:切换到/mnt目录中
cd -:进入当前目录之前所在目录中
cd ~student:进入到student用户家目录
3.10查看/显示文件信息
ls:显示当前目录或指定目录中所包含的可见的文件及子目录
如图,显示普通用户家目录中的子目录&显示root用户家目录的文件及子目录
以及查看根目录下的所有文件
如图,显示指定目录的所有内容
ls -l:长列表显示文件的详细信息(除了文件名,还包括该文件的形态、权限、拥有者、文件大小、创建日期等等)
如图,显示了该目录中所有文件的详细信息
ls -a:显示包括不可见(以.xxxx开头的文件)文件&目录在内的所有文件
如图,创建几个以"."开头的文件并尝试查看
ls -s:显示文件大小
如图,显示/root目录下的文件大小信息
ls -S:按大小顺序显示文件
ls -d:显示目录本身属性(显示目录名)
ls -R:递归显示(依次列出该目录下的所有文件,包括子目录)
tips:树形显示文件列表
安装一个树形显示目录信息的软件-->tree
1.执行yum install tree安装tree(执行yum安装出现问题的大多都是因为未注册导致,可将yum源替换为Centos的免费yum源,详细更换yum源:https://blog.csdn.net/otmqixi/article/details/81564515)
2.使用tree命令查看目录
通配符:通用匹配符号
通配符是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。 实际上用“*Not?pad”可以对应Notpad\MyNotpad【*可以代表任何文字】;Notpad\Notepad【?仅代表单个字】;Notepad\Notepod【ao代表a与o里二选一】,其余以此类推。
*:匹配0到任意字符
查看/root目录下的隐藏文件
?:匹配单个字符
创建几个如图的文件
[[:alpha:]]:单个字母
[[:upper:]]:单个大写字母
[[:lower:]]:单个小写字母
[[:digit:]]:单个数字
[[:alnum:]]:单个字母或数字
[[:space:]]:单个空格
[[:punct:]]:单个符号
精确匹配与模糊匹配
{..}:精确匹配
{1..3}:精确匹配123 ——>1到3
[..]:模糊匹配 ——>
[1..3]:模糊匹配1或3——>1或3
通过下面可以看出[..]无法生成
只能删除或查找
[^ac]:除了a和c
生成a-z数个文件
显示除了a或z的文件
[!ac]:除了a和c ——>
功能同上: