linux学习笔记(二)
Shell简介
现在我们使用的操作系统(Windows、Mac OS、Android、iOS 等)都是带图形界面的,简单直观,容易上手,对专业用户和普通用户都非常适用;计算机的普及离不开图形界面。
对于图形界面,用户点击某个图标就能启动某个程序;对于命令行,用户输入某个程序的名字(可以看做一个命令)就能启动某个程序。这两者的基本过程都是类似的,都需要查找程序在硬盘上的安装位置,然后将它们加载到内存运行。
然而,真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel),图形界面和命令行只是架设在用户和内核之间的一座桥梁。
由于安全、复杂、繁琐等原因,用户不能直接接触内核(也没有必要),需要另外再开发一个程序,让用户直接使用这个程序;该程序的作用就是接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核。如此一来,用户和内核之间就多了一层“代{过}{滤}理”,这层“代{过}{滤}理”既简化了用户的操作,也保护了内核。
用户界面和命令行就是这个另外开发的程序,就是这层“代{过}{滤}理”。在Linux下,这个命令行程序叫做 Shell。
Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。
Shell的作用
- Shell 能解释用户输入的命令,将它传递给内核
- Shell 能调用其他程序,给其他程序传递数据或参数,并获取程序的处理结果
- 还能在多个程序之间传递数据,把一个程序的输出作为另一个程序的输入
- Shell 本身也可以被其他程序调用
由此可见,Shell 是将内核、程序和用户连接了起来。
Shell的版本
- (sh) Bourne Shell
- (bash) Bourne Again Shell
- (csh) C Shell, 适用于编程
- (ksh) Korn Shell,集合了csh和sh的优点
可以输入命令 cat /etc/shells
查看Linux系统中的shell
Shell的环境变量
环境变量是用户给系统或应用程序设置的一些变量,具体作用和具体的环境变量相关。(!环境变量区分大小写,通常都是大写命名)
例如环境变量PATH, 当我们要运行一个程序时,如果不告诉系统这个程序的路径,系统便不知道去哪里找,就只会在当前目录找,自然就无法成功运行该程序,
但如果设置环境变量,那系统除了在当前目录找之外还会去PATH环境变量所定义的目录去找。
常见的环境变量:
- LOGNAME,记录当前登录Linux使用shell的账户名
- SHELL,当前用户使用的shelll类型
- PWD,当前用户所在的目录
- PATH,程序或命令的搜索路径
- HOME,当前用户主目录的位置
使用 env 来列出系统的环境变量
使用 echo $环境变量名
可以打印环境变量的值
shell的环境变量分两种:系统环境变量和用户环境变量。
- 系统环境变量(全局环境变量):在
/etc/profile
配置,对所有Linux用户都有效
- 用户环境变量:在用户环境变量中设置的环境变量只有该用户可以使用,在
~/.bash_profile
设置
Linux中的命令
命令主要存放在/bin和/sbin这两个文件夹中
相对Linux命名执行效率更高,资源消耗也更低,主要常用的例如:cd、echo、exit、kill等命令
主要来源是/user/bin、/user/sbin、/user/share和/user/local/bin这四个目录
网上下载的或自己生产的源程序,编译后的可执行文件
使用shell语言编写的批处理文件
Linux命令的基本格式
command [option] [argument]
[]内是可选的,可有可无。
command:命令
[option]:选项, 一般是 -l -r 啥的哪些
[argument]:参数
ls命令
ls命令可以直接打印当前目录内所存放的东西。
ls命令还可以在当前目录去查看其他目录内的东西,即添加参数,也就是路径。
ls命令还有很多可选项,如:
-
-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-
-d 只列出目录(不递归列出目录内的文件)
-
-l 以长格式显示文件和目录信息,包括权限、所有者、大小、创建时间等
-
-r 倒序显示文件和目录。
-
-t 将按照修改时间排序,最新的文件在最前面。
-
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-
-R 递归显示目录中的所有文件和子目录。
更多命名推荐去学:Linux 命令大全
mkdir命令
mkdir -p /home/learn
在home目录下创建一个名learn的目录
选项说明:
在创建目录时如果上一级目录不存在则会保错,可添加 -p 来递归创建
touch命令
创建以该命令的参数命名的文件,如果该文件已存在,会更新文件的修改时间
rm命令
删除文件或目录
rm /home/test
提供文件的路径就可以直接删除,若删除的对象是目录,则需要添加 -r 选项。
会发现删除时需要我们进行确认,如果很多就会很麻烦,有一个可以自动确认的选项 -f
cp命令
复制粘贴文件或目录
复制目录时需要添加-r
来递归进行
mv命令
移动文件或目录
cd命令
作用是切换目录
如:我当前在 / 要切换到 /home下的test目录可以以绝对路径的方式来
cat命令
查看文件内容
Linux的目录结构
不同于windows系统的盘符概念,linux系统的目录结构是以/为根目录
在完成root登录后会看到 ~
#
-
~ 指当前用户的家目录
-
超级用户root的家目录 —— /root
-
普通用户的家目录 —— /home
-
#
是当前用户为超级用户root
-
$
是当前用户为普通用户
相对路径和绝对路径
相对路径:是以用户当前的工作目录开始
绝对路径:是以根目录 / 开始的
目录的相关命令:
.
表示当前的工作目录
..
表示上一级的目录
~
表示家目录
~user
表示user的家目录
pwd
查看用户当前工作目录的绝对路径
文件类型
我们知道ls命令可以查看目录的内容,但会有不同颜色,需要知道不同颜色所对应的文件类型
- <span style="color: rgba(0, 0, 255, 1)">蓝色</span>:目录
- <span style="color: rgba(0, 128, 0, 1)">绿色</span>:可执行文件
- <span style="color: rgba(255, 0, 0, 1)">红色</span>:压缩文件
- <span style="color: rgba(0, 255, 255, 1)">浅蓝色</span>:链接文件
- <span style="color: rgba(169,169,169)">灰色字</span>:其他文件
- <span style="color: rgba(255, 255, 0, 1)">黄色</span>:设备文件
还有一种:
浅蓝色 [l] 软链接
白色 [-] 普通文件/硬链接
蓝色 [d] 目录
红色 [l] 某文件被删除后,链接到该文件的软链接的颜色
红色闪烁 无 表示该文件已被删除,但还存在该文件的软链接
红色 [-] 压缩包
黄色 [c] 字符设备文件,如键盘鼠标
绿色 [-] 可执行文件,可执行的程序
桃红色 [s] 套接字文件
土黄色 [p] 管道文件
灰色文件 表示其它文件