简 述: 『Shell』 =『图形用户界面(GUI)shell』 + 『命令行界面(CLI)的 shell』 ,捋一下 Mac / Linux / Windows 下常见的 shell
。讲解 shell
、bash
、cmd
、zsh
、PowerShell
等的区别。
[TOC]
本文初发于 “偕臧的小站“,同步转载于此。
预备知识
『DOS』:是磁盘操作系统(英文:Disk Operating System)的缩写,是个人计算机上的一类操作系统。DOS 家族包括 MS-DOS、PC-DOS、DR-DOS、FreeDOS、PTS-DOS、ROM-DOS、JM-OS等,其中以 MS-DOS 最为著名。虽然这些系统常被简称为”DOS”,但没有任何一个系统单纯以”DOS”命名。注释
Shell 介绍
『Shell / 壳层』:命令行界面的解释器,用户和系统内核的沟通桥梁。分为:①命令行界面(CLI) ;② 图形用户界面(GUI)。注释
图形用户界面(GUI)shell
MacOS 的 shell
『Finder / 访达』: 在 MacOS 中,能让用户管理文件、文件、磁盘、网络,以及启动其他的应用程序的引用程序。注释
Linux 的 shell
『X窗口管理器』: 独立的 X窗口管理器
,例如 Blackbox 与 Fluxbox 。注释
『Desktop Environment / 桌面环境』: 桌面环境是依靠于窗口管理器的的扩展实现。如 KDE、GNOME、Xfce、DDE 。注释
Windows 的 shell
『Explorer / 文件资源管理器』: 此操作系统中浏览电脑中文件与文件夹结构的基本工具,win + E
快捷键呼出。注释
『开始菜单』: 屏幕的左下角菜单, win
键呼出。注释
『DOS Shell』: 1998 年发布于 MS-DOS 的文件管理器,是终端里面生成的可视化界面。注释
命令行界面(CLI)的 shell
MacOS / Linux 的 shell
『sh / Bourne shell』: 1977 在 Version 7 Unix 上的默认 shell。注释
『Bash』: 名称由来 Bourne-Again SHell,在 GNU 计划中,于 1989 发布于第一个版本,是 sh 的兼容的开源的续作。亦是 Linux 和 MacOS (含10.14之前)的默认 shell。注释
『Z shell / Zsh』: 是 sh + bash + 扩展功能。自2019 年起,MacOS 的默认 Shell 已从 『Bash 』改为『Zsh』。注释
Windows 的 shell
『命令提示符 / cmd.exe』:是 Win32 应用程序,取代『COMMAND.COM』。Windows命令提示符(cmd.exe) 是 Windows NT 下的一个用于运行 Windows 控制台程序或某些 DOS 程序的壳层程序;注释
『PowerShell』 : 包括 ①Windows PowerShel
+ ②PowerShell Core
,基于 .NET 框架开发,自 2016 年后开源且跨平台。① 为前四年的版本,仅支持 Win 平台;② 则是其演进,支持跨平台 Linux 和 Mac。注释
『COMMAND.COM』: 是一个16位的 DOS 应用程序。已经被 命令提示符(cmd.exe)
取代在 MS-DOS、Windows 95、Windows 98、Windows 98SE 和 Windows Me 上的默认命令行界面。注释
总结
『Shell』 =『图形用户界面(GUI)shell』 + 『命令行界面(CLI)的 shell』
『PowerShell』和其它命令解释器比较
重点关心一下 『PowerShell』 的一些命令,看一下 **PowerShell命令行与其他命令行解释器的内部和外部命令的比较。注释 **
PowerShell(命令行) | PowerShell(别名) | 命令提示符 | Unix shell | 描述 |
---|---|---|---|---|
Get-ChildItem | gci, dir, ls | dir | ls | 列出目前或指定文件夹中的所有文件和文件夹 |
Test-Connection[a] | ping | ping | ping | 从目前电脑向指定电脑发送Ping,或指示另一台电脑这样做 |
Get-Content | gc, type, cat | type | cat | 获取文件内容 |
Get-Command | gcm | help | type, which, compgen | 列出可用的命令 |
Get-Help | help, man | help | apropos, man | 在控制台上打印命令的文档 |
Clear-Host | cls, clear | cls | clear | 清除屏幕[b] |
Copy-Item | cpi, copy, cp | copy, xcopy, robocopy | cp | 将文件和文件夹复制到另一个位置 |
Move-Item | mi, move, mv | move | mv | 将文件和文件夹移动到新位置 |
Remove-Item | ri, del, erase, rmdir, rd, rm | del, erase, rmdir, rd | rm, rmdir | 删除文件或文件夹 |
Rename-Item | rni, ren, mv | ren, rename | mv | 重命名单个文件、文件夹、硬链接或符号链接 |
Get-Location | gl, cd, pwd | cd | pwd | 显示工作路径(目前文件夹) |
Pop-Location | popd | popd | popd | 将工作路径更改为最近推送到堆栈上的位置 |
Push-Location | pushd | pushd | pushd | 将工作路径存储到堆栈中 |
Set-Location | sl, cd, chdir | cd, chdir | cd | 改变工作路径 |
Tee-Object | tee | 不适用 | tee | 将输入管道传输到文件或变量,并沿管道传递输入 |
Write-Output | echo, write | echo | echo | 将字符串或其他对像打印到标准流 |
Get-Process | gps, ps | tlist,[c] tasklist[d] | ps | 列出所有正在执行的进程 |
Stop-Process | spps, kill | kill,[c] taskkill[d] | kill[e] | 停止正在执行的进程 |
Select-String | sls | findstr | find, grep | 打印与模式匹配的行 |
Set-Variable | sv, set | set | env, export, set, setenv | 创建或更改环境变量的内容 |
Invoke-WebRequest | iwr, curl, wget[f] | curl | wget, curl | 获取互联网上的网页内容 |