- 快捷键的使用
(1)搜索操作 搜索历史命令的快捷键:ctrl+r. 当然,不是你想要的命令的时候,你可以继续Ctrl + r,搜索到相关命令,请按Enter。
如果想增加命令记录保存的数量,请到.bash_profile下面去设置 HISTFILESIZE 和 HISTSIZE 两个参数。 (2)移动操作 ctrl + f: 向右移动一个字符 ctrl + b: 向左移动一个字符 esc + f: 向右移动一个单词 esc + b: 向左移动一个单词 ctrl + a: 跳到行首 ctrl + e: 跳到行尾 (3)删除操作 ctrl + d: 删除光标下的字符 ctrl + h: 向左删除一个字符 ctrl + u: 删除当前位置字符至行首(不包含光标下的字符) ctrl + k: 删除当前位置字符至行尾(包含光标下的字符) ctrl + w: 删除从光标到当前单词开头 (4)命令切换操作 ctrl + p: 查找上一个命令 ctrl + n: 查找下一个命令
(5)替换
ctrl + t: 将光标当前字符与前面一个字符替换
alt + t: 交换两个光标当前所处位置单词和光标前一个单词
alt + u: 把光标当前位置单词变为大写
alt + l: 把光标当前位置单词变为小写
alt + c: 把光标当前位置单词头一个字母变为大写
(5)其他操作
ctrl + y: 插入最近删除的单词
ctrl + c: 终止操作
ctrl + z: 当前操作转到后台
ctrl + l: 清屏
ctrl + ?: 撤消前一次输入
alt + r: 撤消前一次动作
alt + d: 删除光标所在位置的后单词
ctrl + 方向键左键 光标移动到前一个单词开头
ctrl + 方向键右键 光标移动到后一个单词结尾
ctrl + x 在上次光标所在字符和当前光标所在字符之间跳转
alt + f 跳到光标所在位置单词尾部
ctrl + s: 锁住终端
ctrl + q: 解锁终端
ctrl + c: 另起一行
ctrl + i: 类似TAB健补全功能
ctrl + o: 重复执行命令
alt + 数字键 操作的次数
!!:重复执行上一条指令
!a:重复执行上一条以a为首的指令
!number:重复执行上一条在history表中记录号码为number的指令
!-number:重复执行前第number条指令
!$:表示获得上一条命令中的最后一项内容
可以查看man readline来获取bash里面默认键的绑定设置。内容很多。比如Alt-.(注:点)遍历之前命令中使用过的参数,Alt-* 扩展了参数的匹配模式。
- 查看当前shell名称的方法
(1)ps -p $$
或者
(2)echo "$0"
- 查看系统已安装的所有shell的方法
cat /etc/shells
- 变更系统shell的方法,使用chsh命令
修改当前系统shell从bash换成zsh:chsh -s /bin/zsh
把其他用户的shell从bash换成ksh:sudo chsh -s /bin/ksh userNameHere
- 打开bash命令补齐
source /etc/bash_completion
- man多彩手册
需要安装 ‘most’;她会使你的你的man手册的色彩更加绚丽。
sudo apt-get install most
export PAGER=most
建议配置环境变量
这样做需要修改/etc/profile或者/etc/environment文件,添加或修改如下内容:
PAGER="/usr/bin/most -s"
如果仅是对特定的用户,只需要修改~/.bashrc文件即可。
- BASH的两个特殊变量
Bash中,有常量FUNCNAME,但是有一点区别是,它是一个数组而非字符串,其中数组的第一个元素为当前函数的名称。
BASH_SOURCE,同样是一个数组,不过它的第一个元素是当前脚本的名称。
这在source的时候非常有用,因为在被source的脚本中,$0是父脚本的名称,而不是被source的脚本名称。而BASH_SOURCE
就可以派上用场了。
# If the script is sourced by another script
if [ -n "$BASH_SOURCE" -a "$BASH_SOURCE" != "$0" ]
then
do_something
else # Otherwise, run directly in the shell
do_other
fi
唯一遗憾的是,这种做法会让脚本失去一些可移植性,因为不是所有的shell都支持这些常量。
- 在干净的 bash/ksh/zsh 环境中运行程序
语法如下所示:
env -i your-program-name-here arg1 arg2 ...
例子:设置一个环境变量
语法如下:
env var=value /path/to/command arg1 arg2 ...
## 或 ##
var=value /path/to/command arg1 arg2 ...
- SUDO !!
如果你还不知道这个命令,我觉得你应该好好感谢我,因为如果你不知道的话,那每次你在输入长串命令后看到“permission denied”后一定会痛苦不堪。
sudo !!
如何使用sudo !!?很简单。试想你刚输入了如下命令:
apt-get install ranger
一定会出现“Permission denied”,除非你已经登录了足够高权限的账户。
sudo !! 就会用 sudo 的形式运行上一条命令。所以上一条命令就变成了这样:
sudo apt-get install ranger
- 使用nohup在登出SSH会话后仍运行命令
如果你用ssh登录别的机器时,nohup命令真的非常有用。
那么怎么使用nohup呢?
想象一下你使用ssh远程登录到另一台电脑上,你运行了一条非常耗时的命令然后退出了ssh会话,不过命令仍在执行。而nohup可以将这一场景变成现实。
举个例子,因为测试的需要,我用我的树莓派来下载发行版。我绝对不会给我的树莓派外接显示器、键盘或鼠标。
一般我总是用SSH从笔记本电脑连接到树莓派。如果我在不用nohup的情况下使用树莓派下载大型文件,那我就必须等待到下载完成后,才能登出ssh会话关掉笔记本。可如果是这样,那我为什么要使用树莓派下文件呢?
使用nohup的方法也很简单,只需如下例中在nohup后输入要执行的命令即可:
nohup wget http://mirror.is.co.za/mirrors/linuxmint.com/iso//stable/17.1/linuxmint-17.1-cinnamon-64bit.iso &
- 在(at)特定的时间运行Linux命令
‘nohup’命令在你用SSH连接到服务器,并在上面保持执行SSH登出前任务的时候十分有用。
想一下如果你需要在特定的时间执行相同的命令,这种情况该怎么办呢?
命令‘at’就能妥善解决这一情况。以下是‘at’使用示例。
at 10:38 PM Fri
at> cowsay 'hello'
at> CTRL + D
上面的命令能在周五下午10时38分运行程序cowsay。
使用的语法就是‘at’后追加日期时间。当at>提示符出现后就可以输入你想在那个时间运行的命令了。
CTRL + D 返回终端。
还有许多日期和时间的格式,都需要你好好翻一翻‘at’的man手册来找到更多的使用方式。
- 使用htop查看和管理进程
你用哪个命令找出电脑上正在运行的进程的呢?我敢打赌是‘ps’并在其后加不同的参数来得到你所想要的不同输出。
安装‘htop’吧!绝对让你相见恨晚。
htop在终端中将进程以列表的方式呈现,有点类似于Windows中的任务管理器。你可以使用功能键的组合来切换排列的方式和展示出来的项。你也可以在htop中直接杀死进程。
在终端中简单的输入htop即可运行。
- 使用ranger浏览文件系统
如果说htop是命令行进程控制的好帮手,那么ranger就是命令行浏览文件系统的好帮手。
你在用之前可能需要先安装,不过一旦安装了以后就可以在命令行输入以下命令启动她:
ranger
在命令行窗口中ranger和一些别的文件管理器很像,但是相比上下结构布局,她是左右结构的,这意味着你按左方向键你将前进到上一个文件夹,而右方向键则会切换到下一个。
在使用前ranger的man手册还是值得一读的,这样你就可以用快捷键操作ranger了。
- 查看进程占用带宽情况-Nethogs
Nethogs 是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽。
下载:http://sourceforge.net/projects/nethogs/files/nethogs/0.8/nethogs-0.8.0.tar.gz/download