ubuntu怎么读取u盘名称_ubuntu无法读取源列表

ubuntu怎么读取u盘名称_ubuntu无法读取源列表为什么说 zsh 是 shell 中的极品?它相对与 bash,tcsh 等有什么优势呢?如果优势很突出的话可以直接只学 zsh 吗?相比bash,zsh兼容bash,且有更灵活多样的配置、更强大的命令补全等,提供了更好的交互易用性;bash是绝大部分*nix系统的默认shell,是事实上的标

为什么说 zsh 是 shell 中的极品? 它相对与 bash,tcsh 等有什么优势呢?如果优势很突出的话可以直接只学 zsh 吗?

相比bash,zsh兼容bash,且有更灵活多样的配置、更强大的命令补全等,提供了更好的交互易用性;bash是绝大部分*nix系统的默认shell,是事实上的标准shell,我们通常所说的shell脚本其实指的是bash脚本,所以bash肯定是使用最广泛的主流shell,但若是你想要找一个既能兼容bash,又要比bash更强大的shell,那就只有zsh了。

然而,一方面zsh的可定制性非常强,另一方面也提高了使用门槛,因此zsh出现的早期,使用它的人并不多。后来,社区出现了很多zsh的颜色主题和插件项目,让我们可以快速上手;再后来还出现了 oh-my-zsh 这样的zsh主题和插件的集成项目,让zsh的使用门槛基本就消失了。

以下介绍一下我的zsh安装和配置步骤,让您在1分钟内就能拥有非常好用的zsh。

iterm2

(若您不是macOS用户,可忽略这部分内容,直接看下一节zsh的安装)。
macOS自带的终端不好用,iterm2比较漂亮,所以先装个iterm2替换它。

  1. 安装:brew install iterm2
  2. 设置iterm2为默认:iTerm2->选择【Make iTerm2 Default Term】。
  3. 设置配色: 进入 iTerm2->Preferences->Profiles->Colors,在【Color Presets】下拉框选择【Dark Background】,Cursor改为红色:

再进入【text选项卡】, Cursor设置为Box:

zsh

设置zsh为默认shell

macOS预装了zsh,输入”chsh -s /bin/zsh”即可将默认shell设置为zsh;

如果发现系统没有预装,您也可以用brew安装。

  • 安装zsh,并设置为默认Shell
# 查看当前Shell,若返回值为/bin/zsh,则无需修改
echo $SHELL 

# 查看可用shell
cat /etc/shells

# 若没有zsh,则安装
# macOS:
brew install zsh
# ubuntu:
apt install zsh

# 将默认shell设置为zsh
chsh -s /bin/zsh
  • 让zsh加载bash配置:打开~/.zshrc,添加: source ~/.bash_profile
  • oh-my-zsh安装: oh-my-zsh主要提供zsh的颜色主题(scheme)和各种功能插件的集成。那些主题和插件都是可以单独安装的,如果你知道你需要哪些主题和插件,并知道怎么安装它们,你也可以不需要oh-my-zsh。
# oh-my-zsh安装命令:
sh -c "$(curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh)"

zsh颜色主题设置

# 打开~/.zshrc,找到ZSH_THEME,改为自己想要设置的主题,默认是robbyrussel:
ZSH_THEME="robbyrussel"

iTerm2 改主题之后,可能会出现乱码的情况。需要安装Powerline字体来解决。

Powerline字体 Powerline 是 vim 的一个 statusline 插件,它为其他几个应用程序提供 statuslines 和提示,包括 zsh、bash、fish、tmux、IPython等。

Powerline字体仓库 提供了一些Powerline需要用到的字体。例如其中一个字体下载地址:Droid Sans Mono Slashed for Powerline.ttf,下载后双击即可安装。

然后打开iTerm2,打开Preferences配置界面,然后Profiles -> Text -> Font -> Chanage Font,选择 “Droid Sans Mono Slashed for Powerline” 字体。

zsh插件设置

~/.zshrc中找到plugins,将需要的插件添加到列表中,例如git是oh-my-zsh默认设置好的,另外再推荐设置几个有用的插件Z、sudo、tmux:

plugins=(
    git
    Z
    tmux
    sudo
)
  • git: 提供了许多命令缩写(alias),例如输入ga,执行git add命令。使用这个插件需要先安装git: brew install git。
  • Z: 使用z {path}用于跟踪您最常访问的目录,进行快速跳转。例如,假设您之前访问过目录 ~/.oh-my-zsh/plugins,后续输入 z pl就能进入~/.oh-my-zsh/plugins。
  • tmux: 为tmux提供一些便捷指令(alias设置),例如输入tl,执行tmux list-sessions。使用这个插件需要先安装tmux: brew install tmux。
  • sudo: 如果你执行一个命令,发现没有权限,那连按两次ESC即可为您当前或以前的命令添加sudo前缀。

其它插件

另外推荐几个有用的插件:zsh-syntax-highlighting、zsh-autosuggestions和zsh-autocomplete,它们未集成到oh-my-zsh,不能在plugins中直接添加,需要自行安装。

  • zsh-syntax-highlighting: 语法高亮显示
# 安装
brew install zsh-syntax-highlighting
# 向.zshrc文件的plugins中添加插件调用:
echo "source $(brew --prefix)/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ~/.zshrc

source ~/.zshrc
  • zsh-autosuggestions: 命令自动提示
# 安装
brew install zsh-autosuggestions 
# 向.zshrc文件的plugins中添加插件调用:
echo "source $(brew --prefix)/share/zsh-autosuggestions/zsh-autosuggestions.zsh" >> ~/.zshrc
source ~/.zshrc
  • zsh-autocomplete: Ctrl+R输入时的历史命令补全
# 安装
brew install zsh-autocomplete 
# 向.zshrc文件的plugins中添加插件调用:
echo "source $(brew --prefix)/share/zsh-autocomplete/zsh-autocomplete.plugin.zsh" >> ~/.zshrc
source ~/.zshrc

  1. 强大的自动补全: zsh 提供了高度可定制和智能的自动补全功能,可以根据你的历史命令、路径、文件等进行预测性的补全,提高了命令行操作的效率。
  2. 主题和提示符: zsh 允许用户轻松定制命令提示符和主题,使命令行界面更具有个性化和可读性。
  3. 插件支持: zsh 支持丰富的插件系统,允许用户通过社区贡献或自定义插件来扩展功能,例如语法高亮、版本控制信息显示等。
  4. 丰富的内建命令和特性: zsh 提供了许多有用的内建命令和特性,例如通配符、数组操作、数学运算等,使得在命令行中更容易完成各种任务。
  5. 路径导航: zsh 具有强大的路径导航功能,允许用户通过模糊搜索、目录堆栈等方式轻松切换工作目录。
  6. 历史命令搜索: zsh 允许用户通过模糊搜索历史命令,快速找到并执行之前执行过的命令。
  7. 多语言支持: zsh 对于多种语言的本地化和国际化提供了支持,使得不同语言环境下的用户都能够方便地使用。
  8. 丰富的文档和社区支持: zsh 的文档相当详细,社区庞大活跃,用户可以轻松找到解决问题的方法并分享经验。

zsh还要配置 fish 直接用就可以了 当然不嫌烦zsh肯定比fish 香

22_Shell使用其他shell_Linux基础Shell篇

由于没有其他
Shell的环境,只有
zsh的,所以本章只讲
zsh,还有一个
dash不做了解

1. zsh shell

你可能会碰到的另一个流行的shellZ shell(称作zsh)。zsh shell是由Paul Falstad开发的一个开源Unix shell。它汲取了所有现有shell的设计理念并增加了许多独到的功能,为程序员创建了一个无所不能的高级shell

zsh shell的一些独特的功能:

  • 改进的shell选项处理
  • shell兼容性模式
  • 可加载模块

zsh shell提供了一组核心内建命令,并提供了添加额外命令模块command module)的能力。每个命令模块都为特定场景提供了另外一组内建命令,比如网络支持和高级数学功能。可以只添加你觉得有用的模块。

2. zsh shell 的组成

2.1 shell选项

大多数shell采用命令行参数来定义shell的行为。zsh shell使用了一些命令行参数来定义shell的操作,但大多数情况下它用选项来定制shell的行为。你可以在命令行上或在shell中用 set 命令设置shell选项。

zsh shell命令行参数

参数 描述
-c 只执行指定的命令,然后退出
-i 作为交互式shell启动,提供一个命令行交互提示符
-s 强制shell从 STDIN读取命令
-o 指定命令行选项

虽然这看起来像是一小组命令行参数,但-o参数有些容易让人误解。它允许你设置shell选项来定义shell的功能。到目前为止,zsh shell是所有shell中可定制性最强的。你可以更改很多shell环境的特性。不同的选项可以分成以下几大类。

  • 更改目录:该选项用于控制 cd命令和dirs 命令如何处理目录更改。
  • 补全:该选项用于控制命令补全功能。
  • 扩展和扩展匹配:该选项用于控制命令中文件扩展。
  • 历史记录:该选项用于控制命令历史记录。
  • 初始化:该选项用于控制shell在启动时如何处理变量和启动文件。
  • 输入输出:该选项用于控制命令处理。
  • 作业控制:该选项用于控制shell如何处理作业和启动作业。
  • 提示:该选项用于控制shell如何处理命令行提示符。
  • 脚本和函数:该选项用于控制shell如何处理shell脚本和定义函数。
  • shell仿真:该选项允许设置zsh shell来模拟其他类型shell行为。
  • shell状态:该选项用于定义启动哪种shell的选项。
  • zle:该选项用于控制zsh行编辑器功能。
  • 选项别名:可以用作其他选项别名的特殊选项。

2.2 内建命令

  1. 核心内建命令

zsh shell的核心包括一些你在其他shell中已经见到过的基本内建命令。列出了可用的内建命令。

命令 描述
alias 为命令和参数定义一个替代性名称
autoload 将shell函数预加载到内存中以便快速访问
bg 以后台模式执行一个作业
bindkey 将组合键和命令绑定到一起
builtin 执行指定的内建命令而不是同样名称的可执行文件
bye 跟 exit相同
cd 切换当前工作目录
chdir 切换当前工作目录
command 将指定命令当作外部文件执行而不是函数或内建命令
declare 设置变量的数据类型(同 typeset)
dirs 显示目录栈的内容
disable 临时禁用指定的散列表元素
disown 从作业表中移除指定的作业
echo 显示变量和文本
emulate 用zsh来模拟另一个shell,比如Bourne、Korn或C shell
enable 使能指定的散列表元素
eval 在当前shell进程中执行指定的命令和参数
exec 执行指定的命令和参数来替换当前shell进程
exit 退出shell并返回指定的退出状态码。如果没有指定,使用最后一条命令的退出状态码
export 允许在子shell进程中使用指定的环境变量名及其值
false 返回退出状态码 1
fc 从历史记录中选择某范围内的命令
fg 以前台模式执行指定的作业
float 将指定变量设为保存浮点值的变量
functions 将指定名称设为函数
getln 从缓冲栈中读取下一个值并将其放到指定变量中
getopts 提取命令行参数中的下一个有效选项并将它放到指定变量中
hash 直接修改命令哈希表的内容
history 列出历史记录文件中的命令
integer 将指定变量设为整数类型
jobs 列出指定作业的信息,或分配给shell进程的所有作业
kill 向指定进程或作业发送信号(默认为SIGTERM )
let 执行算术运算并将结果赋给一个变量
limit 设置或显示资源限制
local 为指定变量设置数据属性
log 显示受 watch 参数 ① 影响的当前登录到系统上的所有用户
logout 同 exit ,但只在shell是登录shell时有效
popd 从目录栈中删除下一项
print 显示变量和文本
printf 用C风格的格式字符串来显示变量和文本
pushd 改变当前工作目录,并将上一个目录放到目录栈中
pushln 将指定参数放到编辑缓冲栈中
pwd 显示当前工作目录的完整路径名
read 读取一行,并用IFS 变量将数据字段赋给指定变量
readonly 将值赋给不能修改的变量
rehash 重建命令散列表
set 为shell设置选项或位置参数
setopt 为shell设置选项
shift 读取并删除第一个位置参数,然后将剩余的参数向前移动一个位置
source 找到指定文件并将其内容复制到当前位置
suspend 挂起shell的执行,直到它收到 SIGCONT信号
test 如果指定条件为TRUE 的话,返回退出状态码0
times 显示当前shell以及shell中所有运行进程的累计用户时间和系统时间
trap 阻断指定信号从而让shell无法处理,如果收到信号则执行指定命令
true 返回退出状态码0
ttyctl 锁定和解锁显示
type 显示shell会如何解释指定的命令
  1. 附加模块
模块 描述
zsh/datetime 额外的日期和时间命令及变量
zsh/files 基本的文件处理命令
zsh/mapfile 通过关联数组来访问外部文件
zsh/mathfunc 额外的科学函数
zsh/pcre 扩展的正则表达式库
zsh/net/socket Unix域套接字支持
zsh/stat 访问stat系统调用来提供系统的统计状况
zsh/system 访问各种底层系统功能的接口
zsh/net/tcp 访问TCP套接字
zsh/zftp 专用FTP客户端命令
zsh/zselect 阻塞,直到文件描述符就绪才返回
zsh/zutil 各种shell实用工具
  1. 查看、添加和删除模块

zmodload 命令是zsh模块的管理接口。你可以在zsh shell会话中用这个命令查看、添加或删除模块。

zmodload 命令不加任何参数会显示zsh shell中当前已安装的模块。

zmodload

不同的zsh shell实现在默认情况下包含了不同的模块。要添加新模块,只需在zmodload命令行上指定模块名称就行了。

zmodload zsh/zftp

不会有信息表明模块已经加载成功了。你可以再运行一下 zmodload命令,新添加的模块会出现在已安装模块的列表中。

一旦加载了模块,该模块中的命令就成为了可用的内建命令。

% zftp open myhost.com rich testing1 
Welcome to the myhost FTP server. 
% zftp cd test 
% zftp dir 
01-21-11 11:21PM    120823 test1 
01-21-11 11:23PM    118432 test2 
% zftp get test1 > test1.txt 
% zftp close 
%

zftp 命令允许你直接在zsh shell命令行操作完整的FTP会话!你可以在zsh shell脚本中使用这些命令,直接在脚本中进行文件传输。

要删除已安装的模块,用-u参数和模块名。

zmodload -u zsh/zftp 
% zftp 
zsh: command not found: zftp

通常习惯将
zmodload命令放进
$HOME/.zshrc启动文件中,这样在
zsh启动时常用的函数 就会自动加载。

3. zsh脚本编程

3.2 数学运算

  1. 执行计算

zsh shell提供了执行数学运算的两种方法:

  • let命令
  • 双圆括号

在使用let 命令时,你应该在算式前后加上双引号,这样才能使用空格。

let value1=" 4 * 5.1 / 3.2 " 
echo $value1

注意,使用浮点数会带来精度问题。为了解决这个问题,通常要使用 printf 命令,并指定能正确显示结果所需的小数点精度。

printf "%6.3f\n" $value1

现在好多了! 第二种方法是使用双圆括号。这个方法结合了两种定义数学运算的方法。

value1=$(( 4 * 5.1 )) 
(( value2 = 4 * 5.1 )) 
printf "%6.3f\n" $value1 $value2

注意,你可以将双圆括号放在算式两边(前面加个美元符)或整个赋值表达式两边。两种方法输出同样的结果。 如果一开始没用 typeset 命令来声明变量的数据类型,那么zsh shell会尝试自动分配数据类型。这在处理整数和浮点数时很危险。看看下面这个例子。

value1=10 
value2=$(( $value1 / 3 )) 
echo $value2

现在这个结果可能并不是你所期望的。在指定数字时没指定小数点后的位数的话,zsh shell会将它们都当成整数值并进行整数运算。要保证结果是浮点数,你必须指定该数小数点后的位数。

value1=10. 
value2=$(( $value1 / 3. )) 
echo $value2

  1. 数学函数

zsh shell中,内建数学函数可多可少。默认的zsh并不含有任何特殊的数学函数。但如果安装了zsh/mathfunc 模块,你就会拥有远远超出你可能需要的数学函数。

value1=$(( sqrt(9) )) 
zsh: unknown function: sqrt 
zmodload zsh/mathfunc 
value1=$(( sqrt(9) )) 
echo $value1

zsh中支持很多数学函数。要查看
zsh/mathfunc模块提供的所有数学函数的清单,可以参看
zsh模块的手册页面。

3.2 结构化命令

zsh shellshell脚本提供了常用的结构化命令:

  • if-then-else 语句
  • for 循环(包括C语言风格的)
  • while 循环
  • until 循环
  • select 语句
  • case 语句

zsh中的每个结构化命令采用的语法都跟你熟悉的bash shell中的一样。zsh shell还包含了另外一个叫作 repeat 的结构化命令。 repeat命令使用如下格式。

repeat param 
do 
   commands 
done

param 参数必须是一个数字或能算出一个数值的数学算式。 repeat 命令就会执行指定的命令那么多次。

#cat test1 
#!/bin/zsh 
# using the repeat command 

value1=$(( 10 / 2 )) 
repeat $value1 
do 
   echo "This is a test" 
done

3.3 函数

zsh shell支持使用 function命令或通用圆括号定义函数名的方式来创建自定义函数。

function functest1 { 
> echo "This is the test1 function" 
} 
% functest2() { 
> echo "This is the test2 function" 
} 
% functest1 
This is the test1 function 
% functest2 
This is the test2 function 
%

总结

文章知识内容摘自《Linux命令行与shell脚本编程大全》,边学边做。

此外有关Linux的内容我都汇总在了如下文章中:

  • Linux系列(Ubuntu平台)学习文章整理总目录

到本章为止,有关这本书的学习就结束了,虽然书中话有一些其他内容,比如介绍了一些有意思的脚本,写脚本的思路。但是基础的知识到这里已经差不多了,我学习Shell脚本的目的,现在不是想写脚本,而是加强我对Linux的认识和基础,在运维或是之后做项目的时候,能够看得懂,能自己去发现和解决问题。以我目前的水平,写不出什么好的脚本,但是学了基础之后,能够去分析脚本,解决问题,拓宽思路。

有关文章的原稿(markdonw)会一起分享在上面的总目录中,有需要的可以下载,在本地当质料库,可以随时搜索,查阅。


ZSH!在 Windows 上使用 WSL+ZSH

1.安装WSL

关于如何安装 WSL这里就不介绍了,大家可以去找找相关的教程,很多。最直接的就是去微软官方:learn.microsoft.com/en-

最简单的方法是从 Microsoft Store 安装 Ubuntu

2.ubuntu

在开始菜单中搜索Ubuntu图标并打开终端(也可以使用Windows终端)

使用此命令更新包源列表并更新当前安装的所有包。

# wsl 中执行
sudo apt update && sudo apt upgrade

这可能需要一段时间,具体取决于需要更新的软件包数量。或者你可以更新以下 Ubuntu 默认的软件源为国内的清华源(mirrors.tuna.tsinghua.edu.cn)。

3.install ZSH

Bash 是默认的 Ubuntu shell,但 ZSH 因其生产力的提升而处于另一个联盟。因此,我们将通过 Bash 安装 ZSH

安装

sudo apt install zsh

验证安装的版本。

zsh --version
zsh 5.8.1 (x86_64-ubuntu-linux-gnu)

关闭并重新打开终端以使其生效

4. install zsh

安装

添加超能力zsh安装Oh my zsh! 运行这个命令。

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

答案y是更改默认外壳。

Time to change your default shell to zsh:
Do you want to change your default shell to zsh? [Y/n] y

字体

手动下载并安装Meslo Nerd 字体,以包含 Powerlevel10k 可能需要的所有字形和符号

复制文件夹.ttf内的文件~/.fonts。如果您还没有的话,请创建一个。

并运行这些命令:

sudo apt install fontconfig
fc-cache -fv

主题

有很多主题,但我最喜欢的是Powerlevel10k,因为它易于设置和使用,并且自定义功能强 。

git clone https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k

~/.zshrc文件中添加此附加配置

ZSH_THEME="powerlevel10k/powerlevel10k"
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(history)
POWERLEVEL9K_SHORTEN_DIR_LENGTH=1

export LS_COLORS="rs=0:no=00:mi=00:mh=00:ln=01;36:or=01;31:di=01;34:ow=04;01;34:st=34:tw=04;34:pi=01;33:so=01;33:do=01;33:bd=01;33:cd=01;33:su=01;35:sg=01;35:ca=01;35:ex=01;32:"

重新启动终端并输入p10k configure来个性化配置。

插件

oh-my-zsh!有很多插件可以使用。建议探索这些选项并使用最适合您需求的选项。

我已经安装了很多与软件开发和其他相关的软件来添加更多功能。运行这些命令:

git clone https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/Pilaton/OhMyZsh-full-autoupdate.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/ohmyzsh-full-autoupdate

以上这些插件是必备插件,推荐安装使用,但是他默认不是 zsh 的插件,所以需要安装使用。zsh 默认的插件可以直接配置.zshrc 中的 plugin 中使用,并不需要安装。

现在编辑~/.zshrc文件并将其添加到属性中plugins(不要使用逗号作为分隔符),注意格式:

ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern cursor root line)
ZSH_HIGHLIGHT_PATTERNS=('rm -rf *' 'fg=white,bold,bg=red')

plugins=(
    adb
    command-not-found
    extract
    deno
    docker
    git
    github
    gitignore
    history-substring-search
    node
    npm
    nvm
    yarn
    volta
    vscode
    sudo
    web-search
    z
    zsh-autosuggestions
    zsh-syntax-highlighting
    ohmyzsh-full-autoupdate
)

如果您使用 NVM,请注意遵循此配置以避免减慢 zsh 启动速度,并遵循此配置以加快 compinit

⚠ 如果您在之前的 ZSH 安装中完成了之前的包配置、别名定义或其他操作,~/.basrc则需要将它们手动移动到~/.zshrc.

4. 终端

要在 VSCode 和 Windows 终端中使用相同的终端,请遵循以下配置。

VS代码

将这些属性添加到用户setttings.json,这些配置是新添加的:

{ 
    ...
+   "terminal.integrated.fontFamily": "MesloLGS NF",
+   "terminal.integrated.fontSize": 12,
+   "terminal.integrated.shellIntegration.enabled": true,
+   "terminal.integrated.defaultProfile.windows": "Git Bash",
+   "terminal.integrated.defaultProfile.linux": "zsh",
    ...
}

windows terminal 终端

将这些配置添加到 Ubuntu 选项中。如果你不知道如何打开windows terminal 配置,可以先去找找相关的文档:

{
    "profiles": {
        "defaults": {},
        "list": [
                "colorScheme": "Ubuntu-ColorScheme",
                "cursorShape": "filledBox",
+               "font": {
+                   "face": "MesloLGS NF",
+                   "size": 10
+               },
                "guid": "{57ff1822-68a9-4a3f-90c5-a55c8557df50}",
                "hidden": false,
                "icon": "https://assets.ubuntu.com/v1/49a1a858-favicon-32x32.png",
                "name": "Ubuntu",
+               "commandline": "wsl",
+               "startingDirectory": "~/Developer"
            },
        ]
    }
}

折腾使你进步!!!

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/8078.html

(0)
上一篇 2024年 5月 9日 下午6:16
下一篇 2024年 5月 9日 下午7:02

相关推荐

关注微信