Terminal

Application

Konsole

自从用了konsole的分屏后就很少用tmux了

sudo apt install konsole

Tmux

安装

sudo apt install -y tmux

配置文档

触发配置文档生效

tmux source ~/.tmux.conf`

备注

配置文档所在位置为 ~/.tmux.conf

分屏

image-20210902091648903
分屏得四宫格(split-window alias:split)
tmux new -s ros
tmux split -v
tmux split -h
tmux select-pane -t 1
tmux split -h

image-20210902094739706

pane操作

  • 显示panes

tmux list-panes

image-20210902092500394

  • panes切换

tmux select-pane <-t pane_id>
pane id可通过display-panes来知悉

session操作

  • 创建session

image-20210902093923093

常用快捷键

该部分快捷键包含自定义的快捷键

作用

快捷键

分屏:vertical split

前导符+-

分屏:horizon split

前导符+|

分屏:panel switch

前导符+o

游走(navigation):panel/window 选择性地切换

前导符+w

粘贴版:显示粘贴板

前导符+w

粘贴板:粘贴

前导符+p

粘贴板:选择性粘贴

前导符+P

实战

需要在使用前使用 shift

  • 安装tpm

安装后,后续可用前导符+I(大写)进行插件安装

git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
  • 面板缩放(zoom): 前导符+z

Terminator

  • 安装与使用

sudo apt install terminator
terminator

Screen

Yakuake

顶部终端,暂感觉用处不大(2022.06.04)

NNN

基于终端的文件管理

显示icon

需要源码编译才能支持该功能

步骤一:安装icons-in-terminal

git clone https://github.com/sebastiencs/icons-in-terminal.git
./install.sh
# Follow the instructions to edit ~/.config/fontconfig/conf.d/30-icons.conf

步骤二:源码编译nnn

安装相关依赖
sudo apt install pkg-config libncursesw5-dev libreadline-dev
git clone https://github.com/jarun/nnn
cd nnn
sudo make O_ICONS=1

NOTE

  • nnn不是所有版本都有-S(du)的功能

  • 其效果有点像spacevim,学习曲线较长,暂没从中提高过什么效率

img

Appearance

cowsay

apt install cowsay
cowsay <...文本>

echo

  • echo颜色

echo -e "\e[32mComplete \e[0m"
\e 等价于 \033
echo -e "\033[32mComplete \033[0m"

figlet

  • 字体符号化

img

Shell

Bash

首行配置

e.g. 用于指明执行当前脚本的执行器
/bin/bash

特殊参数

$$:查看当前终端的pid
$1:取命令行的第1个参数(序号从0开始)
${@}:取所有的参数
${@:2}:取所有的参数,取从第2个开始的所有参数
$?:获取上一个命令行返回的exit code
`

配置特殊的终端效果

一般用在bash脚本中,该选项对应于 bash [option]

启动调试模式,输出详细的日志(会标准输出当前执行的命令)
set -x
若脚本执行有问题,则直接退出脚本
set -e

输入输出流重定向

1>     标准输出重定向 (dafault)
2>     标准输出错误重定向
1>&2   标准输出转换为标准输出错误(放置在命令行末尾)
2>&1   标准输出错误转换为标准输出   (放置在命令行末尾)
echo "hello" 2> /dev/null

read函数

read -r -p "Are You Sure? [Y/n] " input
read -p "Remove all RealSense cameras attached. Hit any key when ready"
-p:输入时显示提示信息
-r: 不支持字符串转义 do not allow backslashes to escape any characters(支持直接接收回车键)
`

自定义函数

  • bash option

img
-i:启动交互式的脚本(若没显式制定-i,bash会根据代码是否有IO交互,隐式加上 -i )
-v:执行脚本前,先显示脚本内容
-x:显示正在执行的命令行(commands)和其参数(arguments)
-e:若有一个命令行返回值为非0则退出(end)脚本

img

判断语法

  • 使用方括号作为shell的判断式

判断变量是否非空
temp="..."
[ -z "$temp" ] 单对中括号变量必须要加双引号
[[ -z $temp ]] 双对括号,变量不用加双引号
一般配合if语法使用
if [...]
then
fi
常用:
-d: 文件夹存在
Get the linux kernel and change into source tree
if [ ! -d ${kernel_name} ]; then
 mkdir ${kernel_name}
 cd ${kernel_name}
 git init
 git remote add origin git://kernel.ubuntu.com/ubuntu/ubuntu-${ubuntu_codename}.git
 cd ..
fi

注意

注意空格,[空格... 空格]

  • 拓展资料:

  1. 方括号的等价含义

  2. test command (or man test)

for语法

/bin/bash
ans=0
for i in {1..100}; do
    let ans+=$i
done
echo $ans

Zsh

install zsh
sudo apt install zsh
install onmyzsh
bash -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

Theme

vim ~/.zshrc
修改主题:ZSH_THEME="bira"

Plugin

需在zsh中运行
添加zsh
hstr --show-configuration >> ~/.zshrc
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions

Shortcut

  • 快捷键:

快捷键

作用

ctrl+w

删除一个单词

ctrl+7 / ctrl+8

撤销操作(cancel) / 取消撤销

ctrl+u

剪切至开头

ctrl+k

剪切至末尾

ctrl+y

粘贴

ctrl+←/ctrl+→

以单词为单位进行左右跳转

ctrl+#

注释当前命令行

注意

此处快捷键的剪切板并不是系统的剪切板

SpecialInfo

  • 想要在输入密码时,有提示信息,可修改/etc/ssh/sshd_configBanner字段

  • 想要在登录界面中,添加提示信息,可

sudo apt install landscape-common
添加bash文件到/etc/update-motd.d/,其中文件顺序从小到大进行执行

TTY

  • 界面分为 命令行界面图像化界面

  • 命令行界面 ,又称为 终端界面,对应的tty为 ttyX

  • ubuntu下默认提供6个 终端界面 给用户登录,每个终端界面下启动的 terminal 对应的tty为 pts/X

img

查看某些按键的特殊效果

stty -a

切换界面

查询当前默认的界面(命令行界面or终端界面)
systemctl get-default
切换界面(依次为命令行界面和终端界面)
systemctl isolate multi-user.target
systemctl isolate graphical.target
设置默认界面
systemctl set-default graphical.target

注销

qdbus org.kde.ksmserver /KSMServer logout 1 0 3
重定向
alias logout="qdbus org.kde.ksmserver /KSMServer logout 1 0 3"

TUI

Textual

python模块,暂时没感觉到适用的地方(2022.6.5)

Dialog

Extension

hstr

命令行补全工具

sudo add-apt-repository ppa:ultradvorka/ppa && sudo apt-get update && sudo apt-get install hstr && hstr --show-configuration >> ~/.bashrc && . ~/.bashrc

script

命令行录制工具

script <output_file_name>
命令行操作
结束操作
exit

history

  • 默认存放数据的文件为 ~/.bash_history

img
  • 使用history时,显示的是命令行 历史列表 的内容。此处的 历史列表当前终端执行过的命令 +读取 ~/.bash_history 得到的历史记录(默认打开终端时读取一次)

  • 只有终端 logout 后才会将终端输入过的命令行加入到 ~/.bash_history

  • 如果不需要等终端 logout(ctrl+d/exit) 后才将命令行写入文件中,使得新开一个终端按history就能看到所有终端执行过的命令行),可添加该行到 ~/.bashrc ;安装了 hstr. 的话,该部分会自动添加。

设置每执行完一个指令后的操作,以下的作用为即时刷新文件内容和更新历史列表
export PROMPT_COMMAND="history -a; history -n; ${PROMPT_COMMAND}"
option:
a:(写)将历史列表中相对于文件增加的命令行 追加到文件中
n:(读)将文件中相对于历史列表增加的命令行 追加到终端的历史列表中

Q&A

隐藏Qt警告

export QT_LOGGING_RULES='*=false'