Linux基础 装饰你的Shell
本文最后更新于 140 天前,如有失效请评论区留言。

本博客由ZGOCLOUD大力赞助!如何更快地访问本站?有需要可加电报群获得更多帮助。本博客用什么VPS?创作不易,请支持苯苯!推荐购买本博客的VIP喔,10元/年即可畅享所有VIP专属内容!

日志

  • 2023-12-06:新增oh-my-zsh如何设置默认启用HOME和END键。
  • 2023-02-16:补充htop的颜色含义说明。
  • 2022-12-10:更新ncdu/htop/ranger/neofetch的使用方法。
  • 2022-10-29:更新ohmyzsh的更新方法。

前言

上回刚刚学完Linux 简单地使用Vim编辑器,有没有发现自己变强了 :stuck_out_tongue_winking_eye:

那么,本回会继续在Shell中,再学多几条命令,顺便装饰一下自己的Shell吧!

如果你还是用root用户也没关系;如果你用了普通用户,那么有些命令前面需要用sudo并输入密码以获取root权限。

测试环境

uname -a  # Linux VM-12-8-ubuntu 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

我们可以先进入自己的home目录(虽然好像没什么用):

cd ~

apt和apt-get

现在,你可以尝试一下这个命令:

sudo apt-get update

我的主机输出结果是:

Hit:1 http://mirrors.tencentyun.com/ubuntu focal InRelease
Hit:2 http://mirrors.tencentyun.com/ubuntu focal-security InRelease
Hit:3 http://mirrors.tencentyun.com/ubuntu focal-updates InRelease
Hit:4 https://download.docker.com/linux/ubuntu focal InRelease
Reading package lists... Done

我用的是一个腾讯云VPS,所以上面用的是http://mirrors.tencentyun.com/XX之类的地址。如果你是自己装系统,一般是国外的地址,还需要特别地改变一个国内的镜像(比如阿里云、清华大学的镜像等待),这样可以大大增加访问的速度。如果你用VPS,一般都是内置好的。这里我也不改了。

sudo apt-get update大致就是获得一个清单,以了解镜像源中有哪些软件信息和本机相比发生了变化。如果要更新全部内容,只需要:

sudo apt-get upgrade

一般而言,更新是比较安全的,不会过度地影响系统的稳定性。如果偶然有一些Error报错,但只要不影响使用,我觉得也没有关系。但也有翻车的时候——比如在使用Openmediavault时,我曾经遇到过一次比较严重的更新相关后果,就是所有docker容器都无法正常工作(可以看这个thread)。这种只能见招拆招了 (ฅ´ω`ฅ)

另外,将软件更新至最新版本也有利于降低软件漏洞本身所带来的安全隐患。不过对个人用户而言重不重要,就见仁见智了,哈哈!我只是单纯地觉得更新到latest是比较爽的,每次看着很多信息输出,就觉得蛮帅的。当然,你也可以用Ctrl+L或者clear清一下屏。

下面,我们来装一些酷酷的软件:

sudo apt-get install -y ncdu htop zsh ranger neofetch

随便一提,-y参数是表明自己要安装,就不要再在安装的过程询问YesorNo了。

我的输出如下:

Reading package lists... Done
Building dependency tree
Reading state information... Done
htop is already the newest version (2.2.0-2build1).
ncdu is already the newest version (1.14.1-1).
neofetch is already the newest version (7.0.0-1).
ranger is already the newest version (1.9.3-1build1).
vim is already the newest version (2:8.1.2269-1ubuntu5.7).
vim set to manually installed.
zsh is already the newest version (5.8-3ubuntu1.1).
0 upgraded, 0 newly installed, 0 to remove and 12 not upgraded.

因为我已经安装过了,所以是0 upgraded, 0 newly installed。如果你第一次装,应该会下载一堆东西。等它结束就好。

从这里,你应该可以感觉到,apt-get(或者apt)有点类似于360软件库之类的,可以下载软件。确实,通过apt-get可以安装很多比较常用或者基础的软件,我觉得这也是Linux发行版与Windows相比的一个特别之处。当然,并不是所有的软件都可以通过apt-get这样安装的。比如,安装docker应用的时候,docker应用也会有一个自己的镜像源和命令docker pull。还有很多奇奇怪怪的源,不过其实并不太常用。如果你曾经给IOS设备越狱,那个软件源和这里的源就是类似的。

这个时候,细心的同学可能会发现一些特别的东西。比如上面这几个命令,可以归纳成这种形式:

sudo apt-get [参数] # 参数=update/upgrade/install等

实际上,这也是许多Shell命令的基本形式了。我们尝试看看apt-get的help文档:

apt-get -h

或者:

apt-get --help

输出结果类似于:

apt 2.0.6 (amd64)
Usage: apt-get [options] command
       apt-get [options] install|remove pkg1 [pkg2 ...]
       apt-get [options] source pkg1 [pkg2 ...]

apt-get is a command line interface for retrieval of packages
and information about them from authenticated sources and
for installation, upgrade and removal of packages together
with their dependencies.

Most used commands:
  update - Retrieve new lists of packages
  upgrade - Perform an upgrade
  install - Install new packages (pkg is libc6 not libc6.deb)
  reinstall - Reinstall packages (pkg is libc6 not libc6.deb)
  remove - Remove packages
  purge - Remove packages and config files
  autoremove - Remove automatically all unused packages
  dist-upgrade - Distribution upgrade, see apt-get(8)
  dselect-upgrade - Follow dselect selections
  build-dep - Configure build-dependencies for source packages
  satisfy - Satisfy dependency strings
  clean - Erase downloaded archive files
  autoclean - Erase old downloaded archive files
  check - Verify that there are no broken dependencies
  source - Download source archives
  download - Download the binary package into the current directory
  changelog - Download and display the changelog for the given package

See apt-get(8) for more information about the available commands.
Configuration options and syntax is detailed in apt.conf(5).
Information about how to configure sources can be found in sources.list(5).
Package and version choices can be expressed via apt_preferences(5).
Security details are available in apt-secure(8).
                                        This APT has Super Cow Powers.

-h或者--help对于多数linux软件来说,就是查看帮助文档。

原来apt-get有这么多小功能!不过多数我也没怎么用过,哈哈 :stuck_out_tongue:

同样,你也可以试试:

ls --help

ls -h中,-h却不会展示帮助文档。所以还是有少数例外的。

还有一些软件,有很多个参数。我随便举个例子哈:

nohup stringtie ${id} -e -v \
        -A ${path_res}/${name}/gene_abund.tab \
        -C ${path_res}/${name}/cov_refs.gtf \
        -B -p 10 \
        -G ${path_gtf} \
        -o ${path_res}/${name}/merged.gtf --fr \
        > ${path_log}/${name}.log 2>&1 &

看,stringtie这个函数有一堆参数。如果你以前有一些编程基础,估计已经是司空见惯了。

好了,apt-get的介绍到这里就结束了,还夹杂了一个其它命令的使用。

基本上apt-get我们用得到的就是updateupgrade

下面,我们来简单地介绍一下刚刚安装的软件怎么用。这些软件,我觉得将有效地帮助管理和美化我们的Linux系统。

安装软件

下面我们会尝试装一些比较酷的软件。它们在linux日常管理中将大有用途。

oh-my-zsh

不知你有没有觉得Shell有点丑?其实我很早就有这种感觉。不过,我也是最近才知道,Shell可以穿上漂亮的衣服,还可以换装!我觉得你可以试一下看看!正好趁这个机会,讲一下怎么不用apt-get安装软件。

我们可以在自己的home目录新建一个目录专门用来放软件,比如:

mkdir -p ~/softwares/omz && cd ~/softwares/omz

然后我们安装ohmyzsh软件:

# 三选一即可

# wget
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

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

# fetch
sh -c "$(fetch -o - https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

有些人没法正常使用github,那你可以用它在gitee上的镜像:

# 国内个人复制github的镜像
sh -c "$(wget -O- https://gitee.com/pocmon/ohmyzsh/raw/master/tools/install.sh)" 

因为我安装过了,所以有这种提示:

--2022-04-18 14:20:45--  https://gitee.com/pocmon/ohmyzsh/raw/master/tools/install.sh
Resolving gitee.com (gitee.com)... 212.64.62.183
Connecting to gitee.com (gitee.com)|212.64.62.183|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13253 (13K) [text/plain]
Saving to: ‘STDOUT’

-                              100%[=================================================>]  12.94K  --.-KB/s    in 0.03s

2022-04-18 14:20:45 (509 KB/s) - written to stdout [13253/13253]

The $ZSH folder already exists (/home/test_user/.oh-my-zsh).

You ran the installer with the $ZSH setting or the $ZSH variable is
exported. You have 3 options:

1. Unset the ZSH variable when calling the installer:
   `ZSH= sh install.sh`
2. Install Oh My Zsh to a directory that doesn't exist yet:
   `ZSH=path/to/new/ohmyzsh/folder sh install.sh`
3. (Caution) If the folder doesn't contain important information,
   you can just remove it with `rm -r /home/test_user/.oh-my-zsh`

这个时候,我们可以用ls -ahl ~命令来看一下home目录中的隐藏文件,里面有一个~/.zshrc文件:

image-20220418142314946

之前我们有提过,-rw-r--r--代表的是文件权限。这里我们再稍微讲一下这个-rw-r--r--是啥意思。它由4个部分组成:

  • -:如果是文件,一般是-(这里表明.zshrc是一个文件)。如果是文件夹,一般是d
  • rw-:代表你自己对这个文件的权限。r代表read,w代表write。所以你自己对它的权限就是read/write,即读和写的权限。你可以阅读它的内容,也可以修改它。
  • r--:和你同一个用户组的其它用户的权限。这里就是只读了。就是和你同一个用户组的其它用户可以阅读这个内容,但是不可以修改它。
  • r--:和你不同用户组的其它用户的权限。这里也是只读。

大致就是这样,可能不一定十分准确哈!

不过,这些规则对root是无效。root可以为所欲为:grinning:

在刚刚开始时,你可能会觉得linux文件修改怎么啰里啰嗦的,各种规则。你姑且认识和接受吧,以后慢慢的,你就会发现它的重要性了。毕竟linux系统的设计核心就是一切都是文件嘛!这也是它的魅力所在了!

反正,我们已经知道我们有修改这个文件的权限。我们修改一些参数:

vim ~/.zshrc

image-20220418143256125

我们要修改的就是ZSH_THEME这个参数。我比较喜欢re5et这个主题。你也可以去github上看看哪些选择,先个好看的就行:https://github.com/ohmyzsh/ohmyzsh/wiki/Themes

还记得怎么用Vim吗?自己再试试看!最后不要忘记用:wq来保存喔!

最后,关闭终端,重新登陆一下,就变成一个漂亮的终端了:

image-20220418143950568

可能你觉得,这算啥呀!好像也没啥变化!

这里我不会说太多omz的功能,以后自己慢慢挖掘吧!这可是一个144k Start的项目!

还有其它类似的项目:

参考zsh下 home end 键失效的解决办法 – privil – 博客园,可以在.zshrc里添加下列配置,从而保证HOME和END键可用(默认不可用):

#Rebind HOME and END to do the decent thing:
bindkey '\e[1~' beginning-of-line
bindkey '\e[4~' end-of-line
case $TERM in (xterm*)
bindkey '\eOH' beginning-of-line
bindkey '\eOF' end-of-line
esac

#To discover what keycode is being sent, hit ^v
#and then the key you want to test.

#And DEL too, as well as PGDN and insert:
bindkey '\e[3~' delete-char
bindkey '\e[6~' end-of-history
bindkey '\e[2~' redisplay

#Now bind pgup to paste the last word of the last command,
bindkey '\e[5~' insert-last-word

oh-my-zsh二次安装

感谢cye提出问题!

在某个用户里安装oh-my-zsh后,在新用户里再安装会有$ZSH路径的冲突。这时安装特别指定某用户的安装路径即可。比如,我以非root用户test_user为例。

国内小伙伴可以:

ZSH=/home/test_user/ohmyzsh sh -c "$(wget -O- https://gitee.com/pocmon/ohmyzsh/raw/master/tools/install.sh)" 

其中,ZSH=/home/test_user/ohmyzsh用于指定该用户的oh-my-zsh安装目录。

国外用户类似,只要:

# 三选一即可

# wget
ZSH=/home/test_user/ohmyzsh sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

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

# fetch
ZSH=/home/test_user/ohmyzsh sh -c "$(fetch -o - https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

有问题请评论区留言喔!

oh-my-zsh更新方法的变更

参考《【MacOS / 搬运】Oh-My-Zsh更新失败的解决办法

近期oh-my-zsh自动更新时会有一些与git相关的报错,这是由于将git协议更换为https协议导致的。只要按以下步骤操作即可:

  • cd $ZSH:进入 ZSH 的目录。
  • git remote set-url origin "https://github.com/ohmyzsh/ohmyzsh.git":修改远程仓库的地址。
  • 执行 omz update 即可更新成功。

ncdu

这是一个看目录大小(包含子文件),支持鼠标点击控制。你可以试试:

cd / && ncdu

耐心等待一下,马上就有一个界面:

image-20220418144340372

你可以Enter一下进去看看。比如我进入/usr文件夹看一下:

image-20220418144452560

用途很简单,可以查看一下有哪些文件。

以后你会发现,查找大文件在linux中不是一件容易的事。然而,因为Linux软件经常会产生一些log文件或者json文件,它们体积很大,除了占据空间也没有什么实质的用途(我觉得除了专业的运维人员,没人会去专门查看日志的吧)。对于VPS这种容量敏感的服务,找出并适当地进行删除等管理就很重要了。

此时,ncdu就有大用场喽!

最后,按q就可以停止。Ctrl+CCtrl+Z应该也可以停止。自己随便玩一下吧!

类似的项目有:

htop

htop中的颜色条–它们是什么意思?

查看系统资源使用状态,支持鼠标点击控制。无非就是CPU占用和内存占用,以及是哪些进程在工作。如果你想检测自己的电脑没有有被植入挖矿程序之类的,htop就会派上大用途!当然,有原生的top命令,但这里不做具体介绍。

htop的用法也很简单,只要在Shell中输入:

htop

image-20220418144719774

下面还显示某些快捷键。我觉得提示得很明显了。实在不懂的话自己Google一下,不要太懒!

颜色的对应关系如下:

  • CPU线程:绿色为正常进程,深蓝为低优先级进程,红色为内核时间,浅绿色为虚拟化进程。一般看总比例。
  • 内存线程:绿色表示已用内存,蓝色表示向缓冲区分配了多少内存,橙色表示已分配给缓存的内存量。“绿用蓝冲橙缓存”。

ncdu不同的是,它是按F10退出界面并返回Shell

类似的项目还有:

ranger

这是一个动态查看子目录的神器,支持鼠标点击控制。灵活运用箭头,可以慢慢地找到子目录。我感觉是个很好用的软件,不过它在我这里没有什么特别的应用场景。大家可以看看它有没有用吧!

image-20220418145019999

q可停止并返回Shell。

neofetch

简单地查看主机的硬件信息。

image-20220418145140031

VPS的属性还蛮垃圾的,哈哈!自己是不是有点眼花,感觉左边的图标和写轮眼好像(~ ̄▽ ̄)~

neofetch的用法挺复杂的,大家可以通过neofetch --help来了解。noefetch还可通过config.conf自定义输出项目,详情可见Getting Started。当前用户的设置文件可以这样查看:

vim ~/.config/neofetch/config.conf

如图所示:

MobaXterm1_CHS_lVj2littHl

慢慢探索吧!之后我会贴出一个我觉得不错的配置。敬请期待!

小结

好了,这回主要是介绍了一些软件的安装和基本使用,顺便也复习了一下以前学过的东西,比如Vim

其实你大可以搜索一下诸如“有哪些好用的Linux软件”之类的问题,应该可以有很多好的建议。你也可以在B站找一下。不过呢,还是建议你对Linux比较熟悉再慢慢地花式玩Linux。

细心的同学可能发现了,我推荐软件好像用法简单,但输出特效很花里胡哨。哈哈!因为这些软件主要作用给你装B用的呀!更重要的是,我希望可以打破一般所认为的“Shell是冷冰冰的”的刻板印象,给Linux的学习过程中多一点点色彩和味道。

看着这些花里胡哨的输出,是不是感觉自己很强,哈哈:grinning: 下一回,我将讲述一些可以让你真正变强的技能!

欲知后事如何,且听下回分解了!

---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍

感谢ZGOCLOUD友情赞助 (ฅ´ω`ฅ) 本博客基于m2w创作。版权声明:除特殊说明,博客文章均为Bensz原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。VIP内容严禁转载!由于可能会成为AI模型(如chatGPT)的训练样本,本博客禁止将AI自动生成内容作为文章上传(特别声明时除外)。如有需要,请至学习地图系统学习本博客的教程。加Telegram群可获得更多帮助喔! | 博客订阅:RSS | 广告招租请留言 | 博客VPS | 致谢渺软公益CDN |

评论

  1. cye
    置顶
    Macintosh Chrome 102.0.0.0
    已编辑
    2 年前
    2022-6-13 11:18:20

    刚才装omz的时候遇到一个坑。如果用root用户直接装omz,它会被装在/root/.oh-my-zsh下,导致别的用户无法访问。我试了一下,可以在安装前先export ZSH="/another/directory",就可以装到一个所有用户都能access的地方(比如/usr/share/oh-my-zsh)。
    References:

    • 博主
      cye
      Windows Chrome 102.0.5005.63
      已编辑
      2 年前
      2022-6-13 11:21:27

      正解 我平时也是多用户安装的 只不过当时写教程时只用了一个root用户,忽略了这个细节。谢谢提醒!
      教程已经于2022-06-12更新,详见oh-my-zsh二次安装部分。

  2. Windows Edge 107.0.1418.62
    1 年前
    2022-12-06 22:25:39

    omz好像不能用默认的bash,如果只想简单的美化可以设置bash的 $1 $2 $3

    • 博主
      Windows Edge 107.0.1418.62
      1 年前
      2022-12-06 22:26:57

      喔,这个之前没留意过哎~有空时我看看。谢谢提醒!

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇