自从换了笔记本就直接用默认终端了,出过一堆奇奇怪怪的问题和BUG,这里正好打算好好学习和优化下终端,系统的学习下。

1. 终端基础

终端(Terminal) 是一个应用程序,它提供了一个界面,让用户可以与操作系统的命令行进行交互(Shell)。在macOS中,默认的终端应用程序叫做“终端”(Terminal),你可以在应用程序文件夹中的“实用工具”(Utilities)子文件夹中找到它。

Shell 是操作系统的一个组件,它提供了一个用户界面,通过这个界面用户可以输入命令来与操作系统交互。Shell 充当用户和操作系统内核之间的中介,解释用户输入的命令并执行相应的操作。其中zshbash 是两种不同的 Shell,它们都有自己的特性和用法:

echo $SHELL  # 查看当前shell
  • 默认设置:macOS Catalina之前,默认的Shell是bash;macOS Catalina及之后,默认的Shell是zsh。
  • 配置文件:bash的配置文件是 .bashrc 或 .bash_profile,而zsh的配置文件是 .zshrc。

1.1 常见命令

zsh 和 bash 这两种shell 的命令 大多与linux相同,大部分命令都是通用的

arch                                            #  rch命令用于显示当前主机的硬件架构类型
# 在M系列芯片,可以使用 arch 命令来在 Rosetta 2 翻译层下运行 x86_64 程序 , 。Rosetta 2 是一种翻译层,可以让基于 ARM 的 Mac 运行基于 Intel 的应用程序。
arch -x86_64 python # 在 ARM64 Mac 上运行 x86_64 版本的 python (仅当前程序有效)
textutil -convert txt 文件路径          # 文件转换命令 互相转换 txt, html, rtf, rtfd, doc, docx
touch 1111                                 # touch命令 除了创建文件之外,还可以修改文件时间 
echo "Hello" > hello.txt               # echo命令接收字符串”Hello”作为标准输入,把接收到的字符串作为标准输出打印到终端。
cat source.txt > target.txt # 主要用于  >  重定向标准输出到文件(覆盖) 
cat< target.txt #  同理,这点也可以用来绕过空格 , < 重定向标准输入到命令
# 可以把 | 理解为一个管道,把左边命令的标准输出作为右边命令的标准输入传递给右边的命令
# wc 命令的作用是分别列出内容种的行数,字数和字符数
cat volcanoes.txt | wc
cat file1.txt | wc | cat > file2.txt # 多个|和>可以组合使用
# grep -R 搜索目录下所有文件,输出包含匹配关键字的文件的文件名和匹配的行,-R代表迭代(recursive)。 
# grep -i 允许搜索时大小写不敏感,默认是大小写敏感的。
grep Keyword file.txt # 搜索文件中与表达式(Keyword )匹配的行,并返回结果。

再就是在MAC上一些有趣的命令

# 将桌面的文件全部隐藏 ; 将 false 替换为 true 重新看到桌面的图标
defaults write com.apple.finder CreateDesktop -bool false; killall Finder
#  制造一个隐藏文件夹 ls -a 能看见的
chflags hidden ~/Desktop/Hidden
# 重新让该文件夹显示
chflags nohidden ~/Desktop/Hidden

在 bash 中,配置文件是用于设置和定制用户环境的脚本文件。当你启动一个新的终端会话或登录到系统时,bash 会自动读取和执行这些配置文件中的命令。配置文件可以包含环境变量、别名、函数、命令历史设置、提示符定制等。

# bash的配置文件是 .bashrc 或 .bash_profile
定义别名:例如 alias ll='ls -la'
设置环境变量:例如 export PATH=$PATH:/usr/local/bin
配置命令提示符:例如 PS1='\u@\h:\w\$ '
启用命令历史设置:例如 HISTSIZE=1000
# ~/.bash_logout 在用户退出登录 shell 时执行。可以用于清理工作,例如删除临时文件或记录退出时间。
清理临时文件:例如 rm -rf /tmp/mytempfile
打印退出信息:例如 echo "Goodbye!"

1.2 包管理工具

Homebrew 是 Mac 上管理软件包的最实用工具之一。 目前在使用的时候也需要注意下架构问题(X86或ARM), 其中常用的命令如下:

brew update # 更新
brew search package_name      # 查找软件包   package_name 
brew info package_name          # 查看 package_name  软件包信息
brew install package_name       # 安装 package_name 
brew uninstall package_name     # 卸载  package_name 
brew list   # 查看已经安装的软件

1.3 终端管理快捷命令

学习参考 https://blog.csdn.net/helunqu2017/article/details/113749611
使用“终端”窗口和标签页

command + N  # 新建一个新的窗口
shift + command + D # 水平切分
command + D # 垂直切分 
command + F # 查找 
Command + W # 关闭当前小窗口 
Shift + Command + W # 关闭所有窗口
command + +/-  # 字体放大缩小   

编辑命令行

Control + A  # 将插入点移到行的开头
Control + E # 将插入点移到行的结尾 
点按该行三下 # 选择整行文本   
按住 Shift-Command 键并连按 URL # 选择 URL   

2. 终端美化

主要是使用的终端美化 + zsh的shell美化

2.1 iTerm2

https://iterm2.com/

之前用的,现在不用了,下载在设置进行设置就行了。

2.2 hyper

官网下载 : https://hyper.is/
在安装主题方面非常方案,直接在官网找到主题然后运行命令就可以了

hyper i verminal   # 在  hyper 终端运行并重启

如果woman还需个性化设置, 在配置方面使用 hyper.js 这种配置文件的形式进行配置

2.3 oh-my-zsh

官网 : https://ohmyz.sh/
开源代码: https://github.com/ohmyzsh/ohmyzsh/

安装

# 通过 curl 安装 oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# 通过 wget 安装 oh-my-zsh
sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

安装完成后会在用户目录出现一个 .zshrc 文件 和 .oh-my-zsh的文件夹,.zshrc 是配置环境变量、配置oh-my-zsh、命令别名的地方。

接下来就是配置你想要的主题, 在 .zshrc 文件中进行设置 , 主题样式网址 https://github.com/ohmyzsh/ohmyzsh/wiki/Themes 这里的 robbyrussell 就是一个默认主题

ZSH_THEME="robbyrussell"  # 等号后面就是oh-my-zsh 主题

主题文件在 ~/.oh-my-zsh/themes 目录 , 修改配置后,通过 source ~/.zshrc 或者退出重新登录使配置生效。

配置 oh-my-zsh 插件 : https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins
.zshrc 中 进行配置即可

vim ~ /.zshrc
plugins=(
  git
  extract
  autojump
  zsh-autosuggestions
  zsh-syntax-highlighting
  )

  source ~/.zshrc   # 记得重启