Linux的基础知识*
-
Linux系统的组成:
linux内核(linus 团队管理)
shell:用户与内核交互的接口
文件系统:ext3、ext4等。windows 有 fat32 、ntfs
第三方应用软件 -
Shell的基本知识
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器)
Shell可以执行:
内部命令
应用程序
shell脚本利用Shell就可以干下面这些事了:
命令行解释(这是用得最多的!)
命令的多种执行顺序
通配符( wild-card characters )
命令补全、别名机制、命令历史
I/O重定向( Input/output redirection )
管道( pipes )
命令替换( 或$( ) )
Shell编程语言( Shell Script )
Shell的主要版本有以下这么多:我们常用(默认)的就是bash(bourne again shell)
使用ps命令观察正在执行的shell -
Linux的基本目录结构:
Linux 文件系统是一个目录树的结构,文件系统结构从一个根目录开始,根目录下可以有任意多个文件和子目录,子目录中又可以有任意多个文件和子目录bin 存放二进制可执行文件(ls,cat,mkdir等)
boot 存放用于系统引导时使用的各种文件
dev 用于存放设备文件
etc 存放系统配置文件
home 存放所有用户文件的根目录
lib 存放跟文件系统中的程序运行所需要的共享库及内核模块
mnt 系统管理员安装临时文件系统的安装点
opt 额外安装的可选应用程序包所放置的位置
proc 虚拟文件系统,存放当前内存的映射
root 超级用户目录
sbin 存放二进制可执行文件,只有root才能访问
tmp 用于存放各种临时文件
usr 用于存放系统应用程序,比较重要的目录/usr/local 本地管理员软件安装目录
var 用于存放运行时需要改变数据的文件 -
通配符
*:匹配任何字符和任何数目的字符
?:匹配单一数目的任何字符
[ ]:匹配[ ]之内的任意一个字符
[! ]:匹配除了[! ]之外的任意一个字符,!表示非的意思 -
文件的类型:
普通文件 -
目录d
符号链接l硬链接: 与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块 软链接: 保存了其代表的文件的绝对路径,是另外一种文件,在硬盘上有独立的区块,访问时替换自身路径(简单地理解为 Windows 中常见的快捷方式)。
字符设备文件 c
块设备文件b
套接字s
命名管道p我们常见的就是普通文件,目录和符号链接。其他的了解一下即可~
-
用户主目录
Linux是多用户的网络系统!所以,我们可以在Linux下创建多个用户,每个用户都会有自己专属的空间。所以,在创建用户时,系统管理员会给每个用户建立一个主目录,通常在/home/目录下
比如:用户osmond的主目录为:/home/osmond
用户对自己主目录的文件拥有所有权,可以在自己的主目录下进行相关操作。
常用的命令
1. 文件,目录命令:
-
可用 pwd命令查看用户的当前目录
-
可用 cd 命令来切换目录
-
.表示当前目录
-
… 表示当前目录的上一级目录(父目录)
-
-表示用 cd 命令切换目录前所在的目录
-
~ 表示用户主目录的绝对路径名
绝对路径:
以斜线(/)开头 ,描述到文件位置的完整说明 ,任何时候你想指定文件名的时候都可以使用相对路径 :
不以斜线(/)开头 ,指定相对于你的当前工作目录而言的位置 ,可以被用作指定文件名的简捷方式tips:输入命令的时候要常用tab键来补全
ls:显示文件或目录信息
mkdir:当前目录下创建一个空目录
rmdir:要求目录为空
touch:生成一个空文件或更改文件的时间
cp:复制文件或目录
mv:移动文件或目录、文件或目录改名
rm:删除文件或目录
ln:建立链接文件
find:查找文件
file/stat:查看文件类型或文件属性信息
cat:查看文本文件内容
more:可以分页看
less:不仅可以分页,还可以方便地搜索,回翻等操作
tail -10: 查看文件的尾部的10行
head -20:查看文件的头部20行
echo:把内容重定向到指定的文件中 ,有则打开,无则创建
管道命令 | :将前面的结果给后面的命令,例如:ls -la | wc,将ls的结果加油wc命令来统计字数
重定向 > 是覆盖模式,>> 是追加模式,例如:echo “Java3y,zhen de hen xihuan ni” > qingshu.txt把左边的输出放到右边的文件里去巩固知识点:
(1)Linux的shell程序默认是bash 程序;
(2)Linux命令格式包含三个部分,分别是: 命令 、 选项 、 参数 ;
(3)Linux命令选项前为单个减号(-),后面一般为 单字符 ,选项前为双减号(–),后面一般为 单词;
(4)Linux命令中使用的通配符有 ? * [] ;
(5)命令 ls /usr/bin/w* 的效果是 列出指定目录下的所有以w开头的文件或目录 ;
(6)命令 ls /usr/bin/w?? 的效果是 列出指定目录下的以w开头名称长度为3的所有文件或目录 ;
(7)命令 ls /usr/bin/[xyz]* 的效果是 列出指定目录下的文件名以x或y或z开头的所有文件或目录 ;
(8)命令 ls /usr/bin/[!a-h]* 的效果是 列出指定目录下的文件名不以a到h区间字母开头的所有文件或目录 ;
(9)目录操作时,“.” 表示 当前目录 ;
(10)目录操作时,“…” 表示 上一级目录 ;
(11)目录操作时,“-” 表示 上一次工作目录 ;
(12)目录操作时,“~” 表示 用户主目录 ;
(13)命令ln可以建立文件链接,这种链接分为: 硬链接 和 软链接 ;
(14)命令touch可以改变文件的三种时间,分别是: access time 、 modify time 、 change time ;
2. 文件打包和压缩
压缩的方式也是有好几种,我们常用的有下面这三种:
gzip
bzip2
tar
常用的压缩的命令就有:
gzip filename
bzip2 filename
tar -czvf filename
常用的解压命令有:
gzip -d filename.gz
bzip2 -d filename.bz2
tar -xzvf filename.tar.gz
3. 正则表达式+grep
grep命令
grep(global search regular expression)是一个强大的文本搜索工具。grep 使用正则表达式搜索文本,并把匹配的行打印出来。
格式:grep [options] PATTERN [FILE...]
PATTERN 是查找条件:可以是普通字符串、可以是正则表达式,通常用单引号将RE括起来。
FILE 是要查找的文件,可以是用空格间隔的多个文件,也可是使用Shell的通配符在多个文件中查找PATTERN,省略时表示在标准输入中查找。
grep命令不会对输入文件进行任何修改或影响,可以使用输出重定向将结果存为文件
例子:
在文件 myfile 中查找包含字符串 mystr的行
grep -n mystr myfile
显示 myfile 中第一个字符为字母的所有行
grep '^[a-zA-Z]' myfile
在文件 myfile 中查找首字符不是 # 的行(即过滤掉注释行)
grep -v '^#' myfile
列出/etc目录(包括子目录)下所有文件内容中包含字符串“root”的文件名
grep -lr root /etc/*
4. Shell 变量和Shell 环境
Shell 变量大致可以分为三类:
内部变量:由系统提供,用户只能使用不能修改。
?
GROUPS
环境变量:这些变量决定了用户工作的环境,它们不需要用户去定义,可以直接在 shell 中使用,其中某些变量用户可以修改。
用户变量:由用户建立和修改,在 shell 脚本编写中会经常用到。
变量赋值(定义变量)
varName=Value
export varName=Value
引用变量$varName
Shell变量的作用域:
- 局部变量的作用范围仅仅限制在其命令行所在的Shell或Shell脚本文件中;
- 全局变量的作用范围则包括本Shell进程及其所有子进程。
- 局部变量与全局变量互换:可以使用 export 内置命令将局部变量设置为全局变量。 可以使用 export
内置命令将全局变量设置为局部变量。
export命令:
显示当前Shell可见的全局变量
export [-p]
定义变量值的同时声明为全局变量。
export <变量名1=值1> [<变量名2=值2> ...]
声明已经赋值的某个(些)局部变量为全局变量。
export <变量名1> [<变量名2> ...]
声明已经赋值的某个(些)全局变量为局部变量。
export -n <变量名1> [<变量名2> ...]
Shell环境变量:
环境变量定义 Shell 的运行环境,保证 Shell 命令的正确执行。
Shell用环境变量来确定查找路径、注册目录、终端类型、终端名称、用户名等。
所有环境变量都是全局变量(即可以传递给 Shell 的子进程),并可以由用户重新设置。
Shell变量:查询、显示和取消:
显示当前已经定义的所有变量
所有环境变量:env
所有变量和函数(包括环境变量) :set
显示某(些)个变量的值
echo $NAME1 [$NAME2 ……]
取消变量的声明或赋值
unset <NAME>
Shell环境变量的值是否可以修改?为什么?
答:环境变量的值一般情况下,可以修改。但一定要慎重修改,因为一旦修改错误,对shell正常运行造成严重影响,甚至导致shell无法运行。
VI编辑器
vi 是 “Visual interface” 的简称,它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。
vi可以看做成我们Windows下的记事本
vim 即 Vi IMproved,vi 克隆版本之一
使用Vi来编辑文件:
Vi有三种模式:
1.普通模式
G用于直接跳转到文件尾
ZZ用于存盘退出Vi
ZQ用于不存盘退出Vi
/和?用于查找字符串
n继续查找下一个
yy复制一行
p粘帖在下一行,P粘贴在前一行
dd删除一行文本
x删除光标所在的字符
u取消上一次编辑操作(undo)
2.插入模式
在 Normal 模式下输入插入命令 i、 a 、 o进入insert模式。用户输入的任何字符都被vim当做文件内容保存起来,并将其显示在屏幕上。
在文本输入过程中,若想回到Normal模式下,按 Esc 键即可。
3.命令行模式
Normal 模式下,用户按冒号 :即可进入 Command 模式,此时 vim 会在显示窗口的最后一行 (屏幕的最后一行) 显示一个 “:” 作为 Command 模式的提示符,等待输入命令。
:w 保存当前编辑文件,但并不退出
:w newfile 存为另外一个名为 “newfile” 的文件
:wq 用于存盘退出Vi
:q! 用于不存盘退出Vi
:q用于直接退出Vi (未做修改)
4.设置Vi环境:
:set autoindent 缩进,常用于程序的编写
:set noautoindent 取消缩进
:set number 在编辑文件时显示行号
:set nonumber 不显示行号
:set tabstop=value 设置显示制表符的空格字符个数
:set 显示设置的所有选项
:set all 显示所有可以设置的选项
我只是精简了一下,详细内容可以看:
原文:https://zhuanlan.zhihu.com/p/36801617