redballoon 发表于 2023-4-11 22:18

(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>**:设备文件

还有一种:

浅蓝色            软链接
白色                [-]      普通文件/硬链接
蓝色                目录
红色               某文件被删除后,链接到该文件的软链接的颜色
红色闪烁无表示该文件已被删除,但还存在该文件的软链接
红色         [-] 压缩包
黄色          字符设备文件,如键盘鼠标
绿色         [-] 可执行文件,可执行的程序
桃红色       套接字文件
土黄色    管道文件
灰色文件                表示其它文件

lmarch2 发表于 2023-4-11 22:22

追更,支持一下

null2008 发表于 2023-4-11 22:24

{:1_921:}{:1_921:}很好,很好

tfl1 发表于 2023-4-11 22:32

刚好在学Linux,谢谢楼主的分享。

dengyy 发表于 2023-4-11 22:59

谢谢楼主分享

王大拿7758521 发表于 2023-4-11 23:39

谢谢分享

daoye9988 发表于 2023-4-12 07:28

这是第二笔记了,继续支持

jmxjiamingxu 发表于 2023-4-12 08:51

感觉需要用到的时候学的很快

tlf 发表于 2023-4-12 08:56

superFlyfly 发表于 2023-4-12 08:57

不错,感谢分享~
页: [1] 2
查看完整版本: (Linux学习笔记) - shell和linux命令