前言
- 原版课程地址:Command-line Environment
- 中文版本:命令行环境
任务控制(jobs)
当执行一条命令时,在命令结尾加上&
,可以让当前命令在后台执行。常用的命令:
#查看当前的后台jobs状态
jobs -l
#将后台执行的job调到前台
fg %jobnumber
# 停止当前job
ctrl + z
# 将job状态stop改变为run
bg %jobnumber
#结束在后台的job
kill -9 pid
示例演示
xiaoran@cjdll:~$ sleep 2000 &
[1] 77404
xiaoran@cjdll:~$ jobs -l
[1]+ 77404 Running sleep 2000 &
#使编号为1的job到终端运行
xiaoran@cjdll:~$ fg %1
# 正在sleep中
sleep 2000
# ctrl z 使job变更为stop状态
^Z
[1]+ Stopped sleep 2000
xiaoran@cjdll:~$ jobs -l
[1]+ 77404 Stopped sleep 2000
#先让停止的job变为运行状态,然后再查看job状态。;代表命令按顺序执行。
xiaoran@cjdll:~$ bg %1;jobs -l
[1]+ sleep 2000 &
[1]+ 77404 Running sleep 2000 &
终端多路复用tmux
tmux
是一个终端多路复用工具之一,比如screen
也是。tmux
可以做到在当前终端分割出多个窗口,这样就可以切换不同的窗口,每个窗口执行不同的任务或命令。离开窗口后,原有窗口正在执行的程序或命令仍会继续执行,不会中断或停止。tmux
的快捷键需要掌握,它们都是类似 <C-b> x
这样的组合,即需要先按下Ctrl+b
,松开后再按下 x
。tmux
常用的命令如下
- 会话 - 每个会话都是一个独立的工作区,其中包含一个或多个窗口
tmux
开始一个新的会话tmux new -s NAME
以指定名称开始一个新的会话tmux ls
列出当前所有会话- 在
tmux
中输入<C-b> d
,将当前会话分离 tmux a
重新连接最后一个会话。您也可以通过-t
来指定具体的会话
- 窗口 - 相当于编辑器或是浏览器中的标签页,从视觉上将一个会话分割为多个部分
<C-b> c
创建一个新的窗口,使用<C-d>
关闭<C-b> N
跳转到第 N 个窗口,注意每个窗口都是有编号的<C-b> p
切换到前一个窗口<C-b> n
切换到下一个窗口<C-b> ,
重命名当前窗口<C-b> w
列出当前所有窗口
- 面板 - 像 vim 中的分屏一样,面板使我们可以在一个屏幕里显示多个 shell
<C-b> "
水平分割<C-b> %
垂直分割<C-b> <方向>
切换到指定方向的面板,<方向> 指的是键盘上的方向键<C-b> z
切换当前面板的缩放<C-b> [
开始往回卷动屏幕。您可以按下空格键来开始选择,回车键复制选中的部分<C-b> <空格>
在不同的面板排布间切换
具体使用教程可以参考文章:
别名(alias)
通过设置别名,可以自定义常用的较长的命令,例如设置别名alias ll='ls -alF'
,再次执行ll
命令时会有输出,而非提示命令未找到。默认情况下shell并不会保存别名,关闭终端再次连接后别名就会失效,想永久保存别名的话,需要将设置的别名放到配置文件中,比如.bashrc
.zshrc
等等。下面是几个常用的命令
#查看已经设置的别名
alias
#设置别名;=两边是没有空格的,因为alias是一个 shell 命令,它只接受一个参数。
alias alias_name="command_to_alias arg1 arg2"
#取消别名
unalias alias_name
#永久性设置别名就需要将设置别名命令写入配置文件中,取消的话,删除对应的别名命令就ok
配置文件(Dotfiles)
很多程序的配置文件以.
开头的文件名,比如Bash
的配置文件~/.bashrc
、vim
的配置文件~/.vimrc
以及ssh
的配置文件~/.ssh/config
等等。如果想多平台同步配置这些配置文件,可以使用版本控制系统进行管理,比如git
。在管理这些配置文件时,通过脚本将其 符号链接 到需要的地方
远端设备(ssh使用)
想要链接远端的设备,比如服务器或者虚拟机,这时就会用到ssh
。最简单的使用方式便是ssh admin@192.168.1.4
,意思是以用户名为admin
登录ip为192.168.1.4
,端口为22
的服务器。ssh的登录可以参考文章关于ssh登陆服务器这件事
通过ssh复制文件
ssh+tee
, 最简单的方法是执行ssh
命令,然后通过这样的方法利用标准输入实现cat localfile | ssh remote_server tee serverfile
。回忆一下,tee
命令会将标准输出写入到一个文件;scp
:当需要拷贝大量的文件或目录时,使用scp
命令则更加方便,因为它可以方便的遍历相关路径。语法如下:scp path/to/local_file remote_host:path/to/remote_file
;rsync
对scp
进行了改进,它可以检测本地和远端的文件以防止重复拷贝。它还可以提供一些诸如符号连接、权限管理等精心打磨的功能。甚至还可以基于--partial
标记实现断点续传。rsync
的语法和scp
类似;
小结
这一小结主要介绍了jobs
的管理、多路复用工具tmux
的基本使用、以.
开头的配置文件以及ssh的使用。
评论区