Shell:Shell 必备锦囊
This commit is contained in:
parent
41051fa1b3
commit
8bcc0d8a92
117
wiki/getting-started/Shell/Shell 必备锦囊.md
Normal file
117
wiki/getting-started/Shell/Shell 必备锦囊.md
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
---
|
||||||
|
title: Shell 必备锦囊
|
||||||
|
description: Shell 必备锦囊
|
||||||
|
keywords:
|
||||||
|
- Shell
|
||||||
|
- 必备锦囊
|
||||||
|
tags:
|
||||||
|
- Shell
|
||||||
|
sidebar_position: 2
|
||||||
|
author: 7Wate
|
||||||
|
date: 2022-12-04
|
||||||
|
---
|
||||||
|
|
||||||
|
## tab 补全
|
||||||
|
|
||||||
|
在 Shell 中可以使用 tab 键盘实现快速补全,双击 tab 可以显示补全列表。
|
||||||
|
|
||||||
|
``` shell
|
||||||
|
@:~$ cd
|
||||||
|
.ansible/ .config/ .wget-hsts index.html
|
||||||
|
.bash_history .lesshst ChangeMirrors.sh index.html.1
|
||||||
|
.bash_logout .profile DockerInstallation.sh
|
||||||
|
.bashrc .ssh/ aaaa/
|
||||||
|
.cache/ .sudo_as_admin_successful demo/
|
||||||
|
```
|
||||||
|
|
||||||
|
## history 历史
|
||||||
|
|
||||||
|
history 命令可以显示执行过的命令历史。
|
||||||
|
``` shell
|
||||||
|
@:~$ history
|
||||||
|
1 pwd
|
||||||
|
2 ls -l
|
||||||
|
3 ip addr
|
||||||
|
4 apt-get update
|
||||||
|
5 sudo apt-get update
|
||||||
|
```
|
||||||
|
|
||||||
|
## `^` 替换命令
|
||||||
|
|
||||||
|
如果输错了命令,特别是命令较长的情况下可以使用 `^` 替换错误的地方。
|
||||||
|
|
||||||
|
``` shell
|
||||||
|
@:~$ cat a。txt
|
||||||
|
cat: a。txt: No such file or directory
|
||||||
|
@:~$ ^。^.
|
||||||
|
cat a.txt
|
||||||
|
helloworld!
|
||||||
|
@:~$
|
||||||
|
```
|
||||||
|
|
||||||
|
## `!` 快捷符号
|
||||||
|
|
||||||
|
`!` 符号拥有很多便捷的实用方法,例如 `!!` 快速执行上条命令,特别适用于 sudo 权限的情况下。`!foo` 快速执行历史命令中 foo 开头的命令。`!$` 命令引用上调命令中的最后一位参数。
|
||||||
|
|
||||||
|
``` shell
|
||||||
|
@:~$ !!
|
||||||
|
cat a.txt
|
||||||
|
helloworld!
|
||||||
|
@:~$ !ca
|
||||||
|
cat a.txt
|
||||||
|
helloworld!
|
||||||
|
@:~$ mkdir path-a
|
||||||
|
@:~$ cd !$
|
||||||
|
cd path-a
|
||||||
|
@:~/path-a$
|
||||||
|
```
|
||||||
|
|
||||||
|
## 目录操作
|
||||||
|
|
||||||
|
Linux 终端执行命令的很多情况下需要经常的更换目录,cd 命令、pushd 命令、popd 命令可以快速移动目录。
|
||||||
|
|
||||||
|
- cd:回到当前用户目录。
|
||||||
|
- cd ~:回到当前用户目录(方便切换到其他用户目录)。
|
||||||
|
- cd -:回到上次工作的目录。
|
||||||
|
- pushd path:存入 path 目录到目录栈。
|
||||||
|
- pop:移动到目录栈弹出的目录。
|
||||||
|
|
||||||
|
``` shell
|
||||||
|
@:~/demo/a$ cd ~
|
||||||
|
@:~$ cd -
|
||||||
|
/home/xxb/demo/a
|
||||||
|
@:~/demo/a$ cd
|
||||||
|
@:~$ cd -
|
||||||
|
/home/xxb/demo/a
|
||||||
|
@:~/demo/a$ pushd /home/xxb/demo/a
|
||||||
|
~/demo/a ~/demo/a
|
||||||
|
@:~/demo/a$ cd ~
|
||||||
|
@:~$ popd
|
||||||
|
~/demo/a
|
||||||
|
@:~/demo/a$
|
||||||
|
```
|
||||||
|
|
||||||
|
## alias 别名
|
||||||
|
|
||||||
|
一些常用的命令可以使用 alais 定义别名,方便快速操作。移除别名使用 unalias 命令。
|
||||||
|
|
||||||
|
``` shell
|
||||||
|
@:~/demo/a$ cat aa.txt
|
||||||
|
helloworld!
|
||||||
|
@:~/demo/a$ alias abc='cat aa.txt'
|
||||||
|
@:~/demo/a$ abc
|
||||||
|
helloworld!
|
||||||
|
@:~/demo/a$
|
||||||
|
```
|
||||||
|
|
||||||
|
## 命令替换
|
||||||
|
|
||||||
|
Shell 内可以使用反引号和 $() 命令执行命令。
|
||||||
|
|
||||||
|
```shell
|
||||||
|
@:~/demo/a$ pushd `pwd`
|
||||||
|
~/demo/a ~/demo/a
|
||||||
|
@:~/demo/a$ pushd $(pwd)
|
||||||
|
~/demo/a ~/demo/a ~/demo/a
|
||||||
|
@:~/demo/a$
|
||||||
|
```
|
@ -6,7 +6,7 @@ keywords:
|
|||||||
- Shell
|
- Shell
|
||||||
tags:
|
tags:
|
||||||
- Shell
|
- Shell
|
||||||
sidebar_position: 2
|
sidebar_position: 3
|
||||||
author: 7Wate
|
author: 7Wate
|
||||||
date: 2022-11-16
|
date: 2022-11-16
|
||||||
---
|
---
|
||||||
|
@ -85,25 +85,24 @@ runoob2()
|
|||||||
|
|
||||||
## import
|
## import
|
||||||
|
|
||||||
Python 中,模块(包、类、函数)的导入方式有以下四种:
|
import 语句不带 from 会分两步执行:
|
||||||
|
|
||||||
import 语句(不带 from 子句)会分两步执行:
|
|
||||||
|
|
||||||
1. 查找一个模块,如果有必要还会加载并初始化模块。
|
1. 查找一个模块,如果有必要还会加载并初始化模块。
|
||||||
|
|
||||||
2. 在局部命名空间中为 import 语句发生位置所处的作用域定义一个或多个名称。
|
2. 在局部命名空间中为 import 语句发生位置所处的作用域定义一个或多个名称。
|
||||||
|
|
||||||
from 形式使用的过程略微繁复一些:
|
from 形式使用的过程略微繁复一些:
|
||||||
|
|
||||||
1. 查找 from 子句中指定的模块,如有必要还会加载并初始化模块;
|
1. 查找 from 子句中指定的模块,如有必要还会加载并初始化模块;
|
||||||
|
|
||||||
2. 对于 import 子句中指定的每个标识符:
|
2. 对于 import 子句中指定的每个标识符:
|
||||||
1. 检查被导入模块是否有该名称的属性
|
1. 检查被导入模块是否有该名称的属性。
|
||||||
2. 如果没有,尝试导入具有该名称的子模块,然后再次检查被导入模块是否有该属性
|
2. 如果没有,尝试导入具有该名称的子模块,然后再次检查被导入模块是否有该属性。
|
||||||
3. 如果未找到该属性,则引发 ImportError。
|
3. 如果未找到该属性,则引发 ImportError。
|
||||||
4. 否则的话,将对该值的引用存入局部命名空间,如果有 as 子句则使用其指定的名称,否则使用该属性的名称
|
4. 否则的话,将对该值的引用存入局部命名空间,如果有 as 子句则使用其指定的名称,否则使用该属性的名称。
|
||||||
|
|
||||||
```python
|
```python
|
||||||
|
# Python 中,模块(包、类、函数)的导入方式有以下四种:
|
||||||
import xx.xx
|
import xx.xx
|
||||||
from xx.xx import xx
|
from xx.xx import xx
|
||||||
from xx.xx import xx as rename
|
from xx.xx import xx as rename
|
||||||
|
Loading…
Reference in New Issue
Block a user