Linux
下载安装
zsh
# 1. 下载 Alma Linux 的镜像
% docker pull almalinux
# 2. 创建并执行 Docker 容器
% docker run --name study_bash -it almalinux
目录结构
/ # 根目录
│
├─ bin/ # 二进制可执行文件
│
├─ etc/ # 系统配置
│
├─ home/ # 用户的主目录 ( ~ )
│ ├─ 用户1/
│ │ └─ ...
│ ├─ 用户2/
│ │ └─ ...
│ └─ ...
│
└─ ...
常用命令
目录
bash
$ pwd # 查看当前所处目录
移动
bash
$ cd [目录名] # 移动到指定目录中
$ cd .. # 移动到上一级目录中
$ cd / # 移动到根目录
$ cd ~ # 移动到用户的主目录
$ cd - # 移动到之前所在的目录
创建
bash
$ mkdir [目录名] # 创建一个目录
$ mkdir -p [目录名1]/[目录名2] # 创建嵌套目录
$ touch [文件名] # 创建一个空白文件
$ touch [文件名1] [文件名2] # 创建多个空白文件
删除
bash
$ rm [文件名] # 删除一个指定的文件
$ rm [文件名1] [文件名2] # 删除多个指定的文件
$ rm -r [目录名] # 删除一个指定的目录及其内容
$ rm -r [目录名1] [目录名2] # 删除多个指定的目录及其内容
rm
命令要慎用,删除后无法恢复
拷贝
bash
$ cp [源文件路径] [目标路径] # 将源文件拷贝到目标路径
$ cp -i [源文件路径] [目标路径] # 在覆盖时会有提示
移动
bash
$ mv [源文件路径] [目标路径] # 将源文件移动到目标路径
$ mv -i [源文件路径] [目标路径] # 在覆盖时会有提示
例子:通过mv
命令实现重命名 ( 路径不变仅文件名改变 )
bash
$ pwd
/home
$ ls
11.sh
$ mv /home/11.sh /home/22.sh
$ ls
22.sh
重定向
重定向是指:将命令的返回值作为文件的内容
bash
$ echo [内容] # 在终端在输出内容
$ echo [内容] > [文件名] # 将内容覆盖到指定的文件
$ echo [内容] >> [文件名] # 将内容追加到指定的文件
$ [命令] > [文件名] # 将命令的返回值覆盖到指定的文件
$ [命令] >> [文件名] # 将命令的返回值追加到指定的文件
例子:验证重定向操作符>
、>>
的基本使用
bash
$ ls
$ touch xx.sh
$ echo "hello" > xx.sh
$ cat xx.sh
hello
$ echo "hello world" >> xx.sh
$ cat xx.sh
hello
hello world
$ ls -lh > xx.sh
$ cat xx.sh
cat xx.sh
total 0
-rw-r--r-- 1 root root 0 Feb 12 20:19 xx.sh
管道
管道是指:将命令的返回值作为另一个命令的参数
bash
$ [命令1] | [命令2]
例子:验证管道符|
结合more
、grep
bash
$ ls -lh | more # 分页查看当前目录下的所有内容
# 省略...
$ ls -lh | grep -n xxx # 在当前目录下查看名为 xxx 的内容
# 省略...
查看文本
bash
$ cat [文件名] # 查看一个文件的内容 ( 全部展示 )
$ cat -b [文件名] # 给非空的每行加上行号
$ cat -n [文件名] # 给每行加上行号
$ more [文件名] # 查看一个文件的内容 ( 超出画面长度分页展示,↑↓翻页,q退出 )
$ grep [文本内容] [文件名] # 从文件中查找指定的文本内容 ( 内容包含空格时需要用引号包裹 )
$ grep -n [文本内容] [文件名] # 同时展示对应的行数
$ grep -i [文本内容] [文件名] # 查找时忽略大小写
查看目录
bash
$ ls # 显示当前目录中的所有子目录与文件
$ ls -a # 可以展示隐藏的子目录与文件
$ ls -l # 可以展示子目录与文件的详细信息 ( 权限、用户、群组、尺寸、创建日期、名称 )
$ ls -lh # 在 -l 的基础上为文件尺寸加上合适的单位
$ ls [通配符] # 利用通配符匹配
ls -l
返回值中包含的权限信息
目录 | 所有者权限 | 组权限 | 其他用户权限 | |||||||
文件的权限 | - | r | w | - | r | w | - | r | - | - |
---|---|---|---|---|---|---|---|---|---|---|
目录的权限 | d | r | w | x | r | w | x | r | - | x |
例子:验证ls
命令的基本使用
bash
$ touch 11.sh 12.sh 13.sh 21.sh
$ ls
11.sh 12.sh 13.sh 21.sh
$ ls 1*.sh
11.sh 12.sh 13.sh
$ ls *1.sh
11.sh 21.sh
例子:通过ls -l
命令查看新增的文件与目录的权限
bash
$ mkdir xxx && touch aaa.sh
$ ls -l
-rw-r--r-- 1 root root 0 Feb 21 16:45 aaa.sh
drwxr-xr-x 2 root root 4096 Feb 21 16:45 xxxx
权限
权限、数字代号总数的计算
缩写字母 | 数字代号 | |
---|---|---|
可读 | r | 4 |
可写 | w | 2 |
可执行 | x | 1 |
- | - | - | r | - | - | r | - | w | - | - | x |
0 | 0 | 0 | 4 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 1 |
0 | 4 | 2 | 1 |
r | w | x | r | w | - | r | - | x | - | w | x |
4 | 2 | 1 | 4 | 2 | 0 | 4 | 0 | 1 | 0 | 2 | 1 |
7 | 6 | 5 | 3 |
bash
# 通过缩写字母实现统一修改所有者权限、组权限、其他用户权限
$ chmod +[权限] [文件名/目录名] # 添加权限
$ chmod -[权限] [文件名/目录名] # 删除权限
# 通过数字代号总数实现对应修改所有者权限、组权限、其他用户权限
$ chmod [总数总数总数] [文件名/目录名] # 添加权限
$ chmod [总数总数总数] [文件名/目录名] # 删除权限
例子:通过缩写字母实现统一修改文件权限
bash
$ echo "echo 'hello world'" > aaa.sh
$ ls -l
-rw-r--r-- 1 root root 19 Feb 21 16:45 aaa.sh
$ ./aaa.sh
sh: ./aaa.sh: Permission denied
$ chmod +x aaa.sh
$ ls -l
-rwxr-xr-x 1 root root 19 Feb 21 16:45 aaa.sh
$ ./aaa.sh
hello world
$ chmod -rwx aaa.sh
$ ls -l
---------- 1 root root 19 Feb 21 16:45 aaa.sh
$ ./aaa.sh
sh: ./aaa.sh: Permission denied
例子:通过数字代码总数实现修改文件权限
bash
$ touch aaa.sh
$ ls -l
-rw-r--r-- 1 root root 19 Feb 21 16:45 aaa.sh
$ chmod 000 aaa.sh
$ ls -l
---------- 1 root root 19 Feb 21 16:45 aaa.sh
$ chmod 070 aaa.sh
$ ls -l
----rwx--- 1 root root 19 Feb 21 16:45 aaa.sh
$ chmod 644 aaa.sh
$ ls -l
-rw-r--r-- 1 root root 19 Feb 21 16:45 aaa.sh
用户
超级用户root
用于系统维护与管理,不会受到权限限制
用户一般使用各种的标准用户身份登陆系统,可通过sudo + 命令
以超级用户身份执行命令
bash
$ woami # 查看当前登陆的用户名
vim
bash
$ vi [文件名]