1
0
wiki/FormalSciences/ComputerScience/GettingStarted/3.CommandLineTools/Shell/Shell 必备锦囊.md
2024-10-13 20:52:05 +08:00

119 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Shell 必备锦囊
description: Shell 必备锦囊
keywords:
- Shell
- 必备锦囊
tags:
- Shell
- 技术/入门
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$
```