Shell 基础操作


在计算机科学中,Shell 俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(command interpreter,命令解析器),它接收用户命令,然后调用相应的应用程序。

Shell 同时也是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

在 Linux/Unix 平台上,Shell 一般默认为 Bash Shell,也有其他 Shell,比如 C Shell 等;Mac 平台,从 Catalina 版本开始,默认 Shell 从 Bash 改为 Zsh;Windows 平台上,Shell = CMD(Command Shell 的简写,也叫做命令提示符)。

Mac 平台通过 terminal.app、Windows 平台通过 cmd.exe 来运行 shell。

在 Linux/Mac 上,通过如下命令查看当前系统所有的 shell:

1
cat /etc/shells

结果如下:

1
2
3
4
5
6
7
8
9
10
11
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

查看当前使用的 shell:

1
echo $0

结果如下:

1
-zsh

修改系统默认 shell 为 bash:

1
chsh -s /bin/bash

查看结果(需要重启终端):

1
2
xiongxiangdeAir:~ xiongxiaoyang$ echo $0
-bash

切换目录

无论是 Linux 平台、Mac 平台还是 Windows 平台,都是通过 cd+目录名进入目录, cd ..返回上级目录。我们还可以通过pushd+目录名进入新目录同时记住之前的目录名,之后可以使用 popd 返回之前的目录。

1
2
3
4
5
xiongxiaoyang@xiongxiangdeAir ~ % pushd java/novel
~/java/novel ~
xiongxiaoyang@xiongxiangdeAir novel % popd
~
xiongxiaoyang@xiongxiangdeAir ~ %

目录列表

Linux/Mac 平台通过ls命令查看当前目录下的所有文件和子目录,Windows 平台通过dir命令查看。可以使用通配符*对显示的内容进行过滤。

1
2
3
4
5
6
xiongxiaoyang@xiongxiangdeAir manager % ls *Cache*.java
AuthorInfoCacheManager.java BookRankCacheManager.java
BookCategoryCacheManager.java FriendLinkCacheManager.java
BookChapterCacheManager.java HomeBookCacheManager.java
BookContentCacheManager.java NewsCacheManager.java
BookInfoCacheManager.java UserInfoCacheManager.java

新建目录

Linux/Mac 平台通过mkdir命令新建目录,Windows 平台通过md命令新建目录。

删除文件

Linux/Mac 平台通过rm+文件名删除文件,Windows 平台通过del+文件名删除文件。

删除目录

Linux/Mac 平台通过rm -r命令删除目录及其包含的所有文件,Windows 平台通过deltree命令实现。

重复命令

所有平台都可以通过⬆️键来显示上一条命令,Linux/Mac 平台可以通过!!来执行上一条命令,!n来执行第 n 条命令。

命令历史

Linux/Mac 平台通过 history命令来查看所有使用过的命令,Windows 平台通过F7键来实现。Linux/Mac 平台还会显示历史序号,这样就可以通过上面的!n命令来方便重复执行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
xiongxiaoyang@xiongxiangdeAir bin % history
992 ls
993 cd front
994 ls
995 cd ../../manager
996 ls
997 ls *Cache*.java
998 chsh -s /bin/bash
999 echo $0
1000 echo $0
1001 cd java/novel-plus/novel-front/target/build/bin
1002 start.sh
1003 ls
1004 ll
1005 chsh -s /bin/bash
1006 ls
1007 ll

1
2
3
4
xiongxiaoyang@xiongxiangdeAir bin % !1006
ls
readme.txt stop.sh
start.sh windows-start.bat

解压文件

Linux/Mac 平台通过unzip命令来解压.zip后缀的压缩包文件,Windows 平台需要通过互联网安装unzip命令。