(Linux学习笔记) - shell和linux命令
本帖最后由 redballoon 于 2023-4-11 22:20 编辑# 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中的命令
+ Linux命令
命令主要存放在/bin和/sbin这两个文件夹中
+ Shell内置命令
相对Linux命名执行效率更高,资源消耗也更低,主要常用的例如:cd、echo、exit、kill等命令
+ 实用程序
主要来源是/user/bin、/user/sbin、/user/share和/user/local/bin这四个目录
+ 用户程序
网上下载的或自己生产的源程序,编译后的可执行文件
+ shell脚本
使用shell语言编写的批处理文件
### Linux命令的基本格式
```shell
command
```
[]内是可选的,可有可无。
command:命令
:选项, 一般是 -l -r 啥的哪些
:参数
### ls命令
ls命令可以直接打印当前目录内所存放的东西。
ls命令还可以在当前目录去查看其他目录内的东西,即添加参数,也就是路径。
ls命令还有很多可选项,如:
+ -a 显示所有文件及目录 (**.** 开头的隐藏文件也会列出)
+ -d 只列出目录(不递归列出目录内的文件)
+ -l 以长格式显示文件和目录信息,包括权限、所有者、大小、创建时间等
+ -r 倒序显示文件和目录。
- -t 将按照修改时间排序,最新的文件在最前面。
- -A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
- -F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
- -R 递归显示目录中的所有文件和子目录。
更多命名推荐去学:(https://www.runoob.com/linux/linux-command-manual.html)
### mkdir命令
```shell
mkdir -p /home/learn
```
在home目录下创建一个名learn的目录
选项说明:
- -p 确保目录名称存在,不存在的就建一个。
在创建目录时如果上一级目录不存在则会保错,可添加 -p 来递归创建
### touch命令
创建以该命令的参数命名的文件,如果该文件已存在,会更新文件的修改时间
### rm命令
删除文件或目录
```shell
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>**:设备文件
还有一种:
浅蓝色 软链接
白色 [-] 普通文件/硬链接
蓝色 目录
红色 某文件被删除后,链接到该文件的软链接的颜色
红色闪烁无表示该文件已被删除,但还存在该文件的软链接
红色 [-] 压缩包
黄色 字符设备文件,如键盘鼠标
绿色 [-] 可执行文件,可执行的程序
桃红色 套接字文件
土黄色 管道文件
灰色文件 表示其它文件
追更,支持一下 {:1_921:}{:1_921:}很好,很好 刚好在学Linux,谢谢楼主的分享。 谢谢楼主分享 谢谢分享 这是第二笔记了,继续支持 感觉需要用到的时候学的很快 不错,感谢分享~
页:
[1]
2