害,一不小心还是暴露了自己的名字。如果想退出当前 Shell 到默认 Shell 的话,敲 exit
命令就可以了。
02、初用 Shell
在启动台找到“终端”,打开(我用的 Mac),如下图所示。
先从窗口标题说起,重点是 zsh。
2019 年,Apple 发布了新一代 macOS——macOS Catalina,为专业用户带来了一项重大变化,zsh 取代了 bash,成为默认的 Shell。相比 bash,zsh 拥有更强大的功能,比如说更智能的自动补全、更丰富的主题等等。这逼绝对是马车中的跑车,跑车中的飞行车,史称「终极 Shell」。
再说说窗体内容。
第一行内容显示了最近一次的登录时间。有些同学会好奇,“ttys000”是什么鬼?
简单来说,tty 是终端的统称。看过「终于制服了它们」的同学应该知道了,早期的终端是电传字打印机(Teletype / Teletypewriter
),英文缩写就是 tty。虽然终端设备已经不再限制于电传打字机了,但是 tty 这个名称还是就这么保留了下来。
“ttys000” 就是 tty 加了一个代号 s000。
第二行内容告诉我们,主机名是 itwanger
。可通过「系统偏好设置」→「共享」→「电脑名称」→「编辑」修改主机名。%
后面跟了一个提示符,可以在此输入任意字符,只不过有些可以被 Shell 解析,有些则不能。
03、Oh My Zsh
zsh 本身非常强大,但配置复杂,对普通用来来说体验非常差。直到有一天,有个无聊的家伙开发出了一个能够快速配置 zsh 的项目,叫做「Oh My Zsh」,GitHub 地址如下所示:
https://github.com/ohmyzsh/ohmyzsh
这玩意安装起来极为简单,能够让我们神功速成,有点「五分钟学会 XXX」的味道。
直接在终端里执行 sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
就可以自动安装 Oh My Zsh 了。
如果自动安装失败的话,可以尝试手动安装。
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
由于某些原因,速度可能会比较慢,耐心地等待一会。
安装完成后重新打开一个新的终端,就可以看到彩色的提示符(Oh My Zsh 默认主题的标志)了。
Oh My Zsh 的配置集中在 ~/.zshrc
文件里(~/ 表示根目录
),可以通过 vim 打开。
vim ~/.zshrc
可以看到,Oh My Zsh 默认使用的主题是 robbyrussell,可在 ~/.oh-my-zsh/themes
目录下找到更多主题进行切换。
如果你不知道选择哪个主题,可以通过下面的网址进行预览。
https://github.com/ohmyzsh/ohmyzsh/wiki/External-themes
如果你有选择困难症,可以像我一样,配置成随机,每新开一次窗口,Oh My Zsh 就替你选一次。
ZSH_THEME=“random”
现在,就新开一个窗口吧,可以看到主题随机到了 essembeh。
再来说说插件。Oh My Zsh 提供了完善的插件体系,默认有 100 多种,可以在 ~/.oh-my-zsh/plugins
目录下找到这些插件。如果不确定这些插件是干嘛的,可以查看一下插件目录下对应的 README.md 文件。插件的配置同样在 .zshrc 文件里,目前默认的插件只有 git。
到此为止,Oh My Zsh 的安装、配置、插件完成了三位一体,终极 Shell 全面登场。
04、再用 Shell
来执行一个最简单的命令 date
,不出意外的话,它将会打印出当前的日期和时间。
然后,光标等待我们输入其他命令,我们可以在执行命令的时候带上参数。
echo hello
echo 命令会将参数 hello 打印出来,Shell 是基于空格分隔命令进行解析的,第一个单词代表可执行的程序,后续的单词作为传递给程序的参数。如果你希望参数里包含空格的话,可以使用单引号或者双引号包裹起来。
echo “hello world”
当我们在 Shell 中执行命令时,实际上是在执行一段 Shell 可以解释执行的简单代码。如果命令不是 Shell 的预知范围之内的话,它会去咨询环境变量 $PATH
。
可以使用 which 命令来确定某个程序名代表的是哪个具体的程序。也可以绕过 $PATH,直接使用带路径的命令来执行,比如 /bin/date
。
Shell 中的路径是一组被分割的目录,在 Linux 和 macOS 上使用的 /
分割,在 Windows 上是 \
,正因为这样,我们在编程的时候一定要先获取系统的分隔符(Java 是 File.separator
获取的),不然会导致程序在不同的操作系统下无法执行!
如果某个路径以 /
开头,那么它就是一个绝对路径,其他都是相对路径。当前工作目录可以通过 pwd
命令来获取,切换目录通过 cd
命令。.
表示的是当前目录,..
表示上级目录。
Shell 会实时显示当前的路径信息。可以通过 ls
命令查看当前目录下包含哪些文件,安装了 Oh My Zsh 后,还可以通过 ll
(其实是 ls -l
的简写)显示文件或者文件夹的详细信息。
简单来介绍一下文件属性,以后会很有用。
-
d:第 1 位表示文件类型,d 是目录、l 是链接文件、- 是普通文件。
-
rwx:第 2-4 位表示这个文件的所有者拥有的权限,r 是读、w 是写、x 是执行。
-
r-x:第 5-7 位表示和这个文件的所有者所在同一个组的用户具有的权限。
-
r-x:第 8-10 位表示其他用户所具有的权限。
比如:
-rw-r–r-- 1 maweiqing staff 6B 1 12 16:35 hello.txt
表示 hello.txt
是个普通文件,maweiqing 拥有读和写的权限,但没有执行的权限,和 maweiqing 所在的同一个 staff 组的用户拥有只读权限,剩余用户同样。
如果你想要知道命令的参数、输入输出信息,或者是想要了解它们的工作方式,可以试试 man
这个命令。它会接受一个程序名作为参数,然后将它的文档(用户手册)展现出来。
man ls
分享
1、算法大厂——字节跳动面试题
2、2000页互联网Java面试题大全
3、高阶必备,算法学习
要了解它们的工作方式,可以试试 man
这个命令。它会接受一个程序名作为参数,然后将它的文档(用户手册)展现出来。
man ls
分享
1、算法大厂——字节跳动面试题
[外链图片转存中…(img-KAHS3HKC-1714797003719)]
2、2000页互联网Java面试题大全
[外链图片转存中…(img-XcVgUMRb-1714797003719)]
3、高阶必备,算法学习
[外链图片转存中…(img-QTSfi9AI-1714797003720)]