在网络上,您可以找到许多在控制台中有效工作的技巧。 在大多数这些文章中,作者谈论陈词滥调,例如“学习热键”或“ sudo !!
将在sudo下运行最后一个命令”。 我将告诉您当您已经学会了热键并了解sudo !!
时该怎么做sudo !!
。
终端应立即启动
您需要启动终端多长时间? 还有一个? 很长一段时间,我的终端是通过Ctrl + Alt + T启动的,我认为它很快。 但是,当我从Openbox迁移到i3时,我开始通过Win + Enter运行终端,此组合位于默认配置中。 你知道吗? 我不再认为Ctrl + Alt + T很快。
当然,开玩笑不是以毫秒为单位,而是以反射级别打开终端的事实,完全没有引起注意。
如果您经常在终端上工作,但要用鼠标将其启动,请尝试设置一个便捷的热键。 我相信你会喜欢的。
Zsh代替bash
我知道这是一个好莱坞主题。 应该至少安装Zsh的三个功能:高级自动完成功能,错字校正和多路径名补全:当一个Tab将/u/s/d
转换为/usr/share/doc
。 长期以来,Arch Linux在其安装光盘中已切换到zsh。 我希望有一天zsh将成为Ubuntu中的默认Shell。 这将是历史性的时刻。
开始使用zsh并不困难。 通过包管理器安装它并进行一些现成的配置。 我推荐Arch Linux使用的配置:
wget -O ~/.zshrc https://git.grml.org/f/grml-etc-core/etc/zsh/zshrc
仅保留将“默认外壳”更改为zsh并登录。
chsh -s $(which zsh)
一切,继续工作,好像什么都没发生。
什么是shell提示
Shell提示符是在命令前出现在终端中的小文本。 需要根据您的工作特点对其进行定制。 可以将其视为汽车仪表板。 将有用的信息放在此处,以帮助您进行导航。 方便使用,尤其是每天看到的时候!
Shell提示符应显示Shell的当前目录。 如果当前目录未显示在shell提示符中,则必须将其保留在脑海中,并定期使用pwd
检查。 不要那样做 请记住更重要的事情,不要浪费时间使用pwd
。
如果您定期从用户切换到root用户,则需要指示当前用户。 通常,重要的不是特定的用户名,而是其状态(常规或root)。 最简单的方法是使用颜色:红色的shell提示位于根,绿色提示用户。 因此,您永远不会将根外壳与通常的外壳混淆。
如果通过ssh连接到服务器,则需要以某种方式将本地shell与服务器外壳区分开。 为此,shell提示符应包含主机名,或者更好的是ssh连接的指示符。
Shell提示符可以显示最后一条命令的返回码。 让我提醒您,返回码为空意味着命令成功完成,非零-命令失败。 可以使用echo $?
找到最后一条命令的返回码echo $?
,但是在键盘上输入的内容过长。 更好的是,shell提示符将让您知道命令是否失败。
如果您使用git仓库,那么在shell提示符下显示仓库状态会很有用:当前分支和工作目录的状态。 这样,您将节省git status
和git branch
命令的时间,并且在提交时不会在分支中出错。
有人在他们的shell提示符中添加了一个时钟或虚拟终端名称(tty)或一些任意的花样。 这都是多余的。 最好为团队留出更多空间。
我在不同条件下的shell提示如下:

屏幕截图显示终端窗口标题执行类似的任务。 这也是仪表板的一部分,也可以自定义。
如何在您的.zshrc
实现所有这些? PROMPT
变量负责左侧提示, RPROMPT
负责右侧RPROMPT
。 EUID
变量将帮助确定用户(常规或EUID
的状态以及ssh连接的存在SSH_CLIENT
或SSH2_CLIENT
。 我们得到以下工件:
if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then if [[ $EUID == 0 ]]; then PROMPT=... else PROMPT=... fi else
我没有特别指出准备好复制粘贴的代码,因为具体的实现方式取决于品味。 如果您不想打扰,而我的屏幕截图也没让您感到厌恶,则可以从github中获取配置。
总结:
- 最低要求是当前目录。
- 口壳应清晰可见。
- 如果您始终坐在同一用户名下,则用户名不会携带有效负载。
- 如果您通过SSH连接到服务器,则主机名很有用。 如果您始终在同一台计算机上工作,则不需要。
- 立即查看最后一条命令的成功失败很有用。
- git信息库的状态节省了
git status
和git branch
命令的时间,是防止傻瓜的附加保护措施。
积极使用命令历史记录
您一生中的大多数命令都会多次输入,这意味着将它们从历史记录中拉出而不是再次键入将很方便。 所有现代外壳程序都能够记住团队的历史记录,并提供几种搜索此历史记录的方法。
也许您已经知道如何使用Ctrl + R深入研究故事。 它有两个明显的缺点:
- 要开始搜索,输入字段必须为空。 即 在“我开始键入命令-我记得搜索”的情况下,您必须删除开始的内容,按Ctrl + R并重复输入。 这是很长的时间。
- 默认情况下,正向搜索不起作用,因为 Ctrl + S停止终端。
最快和最方便的搜索如何工作:
- 你开始组队
- 您还记得搜索吗?
- 您按一个热键,外壳程序就会提供从完全相同的历史记录开始的团队。
例如,您要使用rsync
将本地目录与远程目录同步。 您已经在几个小时前完成了此操作,并且希望使团队脱离历史。 键入rsync
,按一次或两次特定的组合,可以运行该命令。 您不需要先打开历史搜索模式,shell提示符不会更改为(reverse-i-search)':
:,任何地方都不会跳转。 您只需遍历故事中的命令即可。 就像箭头↑↓一样,您仅在命令开头使用过滤器,即可遍历先前输入的命令。 该死的方便了,节省了很多时间。
在fish和ipython壳中,这种搜索已分配给箭头。 我认为许多人只是出于这种箭头行为而转向钓鱼。
在bash和zsh中,默认情况下,此搜索无效,您必须手动启用它。 我将PgUp配置为向后搜索,将PgDown配置为向前搜索。 对于他们来说,这是遥不可及的,但是我已经习惯了。 也许将来我会重新分配给更接近的对象,例如Ctrl + P和Ctrl +N。
对于bash,您需要在/etc/inputrc
或~/.inputrc
添加几行:
"\e[5~": history-search-backward "\e[6~": history-search-forward
如果您准备好了zshrc
,那么搜索很可能已经分配给了PgUp和PgDown。 如果没有,请添加到~/.zshrc
bindkey "^[[5~" history-beginning-search-backward
奇怪的是,随着时间的流逝,我开始组建团队是基于这样的假设:以后我会从历史中挑选他们。 这里有一些技巧:
总是总是一个接一个地执行的团队
ip link set eth1 up && dhclient eth1 mkdir /tmp/t && mount /dev/sdb1 /tmp/t
绝对路径而不是相对路径允许您从任何目录运行命令:
systemd-nspawn /home/chroot/stretch
vim ~/.ssh/config
代替vim .ssh/config
, systemd-nspawn /home/chroot/stretch
代替systemd-nspawn stretch
等
通配符屏蔽使团队更加灵活。 通常与chmod
和chown
。
chown root:root /var/www/*.sq && chmod 644 /var/www/*.sq
热键
我将列出必要的最低要求。
Alt +。 -替换上一个命令的最后一个参数。 您也可以输入序列!$
Ctrl + A,Ctrl + E-分别转到已编辑命令的开头和结尾。
Ctrl + U,Ctrl + Y-将所有内容剪切到剪贴板,然后从剪贴板粘贴。 当您打印复杂的命令,然后您知道需要在它前面执行另一个命令时,它会有所帮助。 嗯,在哪里隐藏当前输入? 在这里躲起来。
Ctrl + W-删除光标左侧的一个单词。 如果夹紧并保持住,请快速清除命令行。 默认情况下,不删除文本,而是将其放置在缓冲区中(用于Ctrl + Y)。
Ctrl + K-从光标删除到行尾。 Ctrl + A,Ctrl + K快速清除命令行。
PgUp,PgDown,Ctrl + R-按历史记录搜索。
Ctrl + L-清除终端。
键盘响应度
我将告诉您一个小的设置,该设置可让您更快地滚动,在文本周围移动或擦除。 要长时间删除某些东西,我们该怎么办? 按住Backspace键,然后观察光标如何向后移动,拾取多余的字母。 这会发生什么? 按下Backspace键时,将删除一个字符,然后稍有延迟,然后触发自动重复:Backspace字符一一删除,就好像它们不断敲打一样。
我建议根据您的手指速度调整延迟和自动重复频率。 当您只想删除一个字符时,需要延迟自动重试的时间-它使您有时间释放密钥。 延迟时间太长会导致等待自动重试。 不够长的时间足以烦人,但足以减慢思想从头部到计算机的转移。 重复频率越高,删除文本的速度越快,及时停止此过程就越困难。 该设置的本质是找到中间立场。
所以魔术命令:
xset r rate 190 20
190-延迟持续时间(以毫秒为单位),
20-每秒重复的频率。
我建议从这些值开始,并逐渐减少延迟,直到出现误报,然后再稍微回退。 如果设置的延迟很短,则将无法使用键盘。 您必须重新启动X服务器或整个计算机。 所以要小心
要保存参数,请将此命令添加到X自动启动的某个位置。
进度条
我经常不得不开始漫长的过程:某种大胆的备份,通过网络复制,解压缩/打包档案,构建软件包等。 通常,我开始这样一个过程,切换到另一个任务,并定期查看我的漫长过程是否结束。 碰巧我沉迷于工作而忘了它。 解决方案是添加一个有关该过程完成的通知,这将使我摆脱困境。
您可以为此使用不同的工具:通知发送,dzen2,蜂鸣声,播放。 所有这些都以自己的方式很好,但不适用于ssh。 因此,我使用终端提示音:
long-running-command; echo $'\a'
在ASCII编码中,有一个0x7字符,称为bell 。 它旨在与PC扬声器一起发出哔声。 PC扬声器不是最新的,并非无处不在,耳机中也听不到。 因此,某些终端使用所谓的可视铃。 我使用urxvt,它使可视铃声打开了紧急标志。 这是一个窗口告诉您需要注意的时候。
您现在可以检查终端对响铃符号的反应:
sleep 3; echo $'\a'
您将有三秒钟的时间切换到另一个窗口,否则可能无法正常工作。
不幸的是,并非在所有终端上都因紧急情况而出现可视铃声。 我检查了最受欢迎的。
终端 | 紧急求助 |
---|
康索尔 | 包含在设置中 |
urxvt | 在那边 |
xfce4终端 | 包含在设置中 |
xterm | 没有啦 |
很酷的复古词 | 没有啦 |
终端 | 没有啦 |
侏儒终端 | 没有啦 |
写echo $'\a'
花费了太长时间,所以我做了一个别名wake
。
别名
cp
, scp
和rm
命令应始终以递归方式工作。 -r
参数只是一个不好的遗产! cp
仍然有借口:
cp * foodir
它仅将文件复制到foodir,并且使用-r
开关,它将认为您决定将foodir复制到其自身。 但是,您多久需要一次此功能?
rm
和scp
没有任何借口,它们只是无聊! mkdir
命令与-p
开关的情况类似。 所以随时添加到~/.zshrc
alias cp='cp -r' alias scp='scp -r' alias rm='rm -r' alias mkdir='mkdir -p'
哇,以前没有这个我怎么过! 您甚至可以更进一步,将-f
添加到rm
,但后果自负。 我现在要克制自己。
您很可能已经使用过ls
不同变体,因为它们是最流行的别名。
alias ls='ls -F --color=auto' alias la='ls -A --color=auto' alias ll='ls -l --color=auto -h' alias lla='ll -A --color=auto -h'
好吧,color grep比无色更好。
alias grep='grep --colour=auto'
不要忘记别名在脚本中不起作用! 必须在此处指定所有键。
盲印方式
不管它有多粗糙,但盲十指打印方法可以使您更快地打印。 起初这将很困难,但是随着时间的流逝,您将加速到前所未有的速度。
最好在度假时或在没有人赶着你的假期中掌握盲印方法。 在学习过程中,绝不能仓促。 您的任务是记住哪个字母在哪里。 与大脑相比,与肌肉无关。 最好缓慢输入但没有错误,而不要快速输入有错误。 切记:大师们达到高速并非以牺牲快速手指为代价,而是因为他们不会犯错。
首先不要被键盘演奏者带走。 在比赛中保持冷静在心理上是困难的。 在模拟器上学习。 模拟器提供可以在心理上发音的单词会很好。 我研究了vse10和类型研究在线模拟器。 著名的“键盘上的独奏”模拟器对我来说似乎很愚蠢。
值得从Fyvaprolge的中央行开始。 只有记住了哪个键位于何处,才值得继续操作。 只有在那之后。
休息一下。 休息你的大脑和手指。 感觉到错误已涌入-现在该休息一下了。
最初,我精通俄语的盲印方法,并从一开始就开始学习。 现在,我正在提高英语布局的技能。