Linux命令行和Shell高效率使用方法
Ctrl+R快速搜索history
Ctrl+P显示上一条命令
快速执行一条history命令:!!/!-number
=========================================
快速进入某些目录
键入cd~可直接进入用户的home目录;
键入cd-可进入上一个目录。
export CDPATH=.:~:/etc:/usr/local
mkdir -p /***/***/***/
alias cd3="cd ../../../"
==========================================
一次运行多个命令
在一个命令行中还可以置入多个命令,用分号将各个命令隔开
$last;exit
$make && make install
==========================================
命令行下快捷键
Ctrl+a:把光标移到行首。
Ctrl+e:把光标移到行尾。
Ctrl+l:清除终端。该快捷操作与在命令行键入clear作用相同。
Ctrl+d:从Shell提示中注销并关闭,使用该快捷键就不必键入exit
Ctrl+u:删除光标至行首的所有字符,使用这一快捷操作可以清除从光标处到行首的字符
Ctrl+K:删除从光标到行末所有字符。
Ctrl+t:新建屏幕。
Alt+1到9:选择屏幕。
Ctrl + F :向前移动一个字符。
Ctrl + B :向后移动一个字符
Alt + F : 向前移动一个单词。
Alt + B : 向后移动一个单词。
==========================================
在文件里查找
grep -rlI '\<main' .
find -type f -name *.java -exec grep -l '\<main' {} \;
------------------------------------------------------------
快速的建立一个文件
cat >> filename ,输入一些内容然后按Ctrl-d结束输入。
----------------------------------------------------------------
将文本文件中DOS换行符号转化为UNIX的换行符号
tr -s "\r" "\n" <inputfile
tr -s "\r" "\n" <inputfile >outputfile
当然你使用vim编辑文件时,vim也提供文件转换功能
整个文件大小写转换
tr a-z A-Z < **.txt
tr A-Z a-z < **.txt
========================================
Shell 脚本
$0为程序名称,$1为第一个参数,$2为第二个参数,依次类推,直到$9为第九个参数。
特殊变量$#测试执行脚本时包含的命令行参数个数。
变量$*将命令行中提供的所有参数作为一个单词处理,它将多个参数看成 一个参数。
变量$@将命令行中提供的所有参数作为同一个字符串中的多个单词处理。
shift命令能够改变命令行参数的相对位置。默 认将每个参数变量左移一个位置
使用-t指定一个计时器,计时数满还未输入,read返回一个非0的退出状态。
使用-n指定输入的字符个数,输入达到预定数目时,就自动结束输入
使用-s使输入不显示在终端(例如输入密码)
shell 调试 set -xv
=====================================
dstat & sar
iostat, vmstat, ifstat 三合一的工具,用来查看系统性能。
官方网站:http://dag.wieers.com/rpm/packages/dstat/
你可以这样使用:
alias dstat='dstat -cdlmnpsy'
=====================================
vim 命令:
查找一个字符:fx
重复上次find: ;
重复执行上次:.
w 下一个单词开始字符
e 下一个单词结束字符
b 上一个单词开始字符
H M L 目前屏幕的第一行,中间行,最后一行
gg G 文件的第一行和最后一行
=============================
拷贝到指定寄存器:yt{标识符}
Ctrl + r{register}调出寄存器的值
分割窗口:split vsplit
超级自动补全:ctrl-N
转到一个变量定义的位置: gd(文件) gD(全局)
快速查询命令 :K 2K
匹配花括号:%
选取标志符的内容:va{ vit vi{
修改标示符的内容:ci{标识符}
删除标志符的内容:di"
删除指定行前的内容::10,20g/^$/d
删除
ctrl + d 删除光标所在位置上的字符相当于VIM里x或者dl
ctrl + h 删除光标所在位置前的字符相当于VIM里hx或者dh
ctrl + k 删除光标后面所有字符相当于VIM里d shift+$
ctrl + u 删除光标前面所有字符相当于VIM里d shift+^
ctrl + w 删除光标前一个单词相当于VIM里db
ctrl + y 恢复ctrl+u上次执行时删除的字符
ctrl + ? 撤消前一次输入
alt + r 撤消前一次动作
alt + d 删除光标所在位置的后单词
移动
ctrl + a 将光标移动到命令行开头相当于VIM里shift+^
ctrl + e 将光标移动到命令行结尾处相当于VIM里shift+$
ctrl + f 光标向后移动一个字符相当于VIM里l
ctrl + b 光标向前移动一个字符相当于VIM里h
ctrl + 方向键左键 光标移动到前一个单词开头
ctrl + 方向键右键 光标移动到后一个单词结尾
ctrl + x 在上次光标所在字符和当前光标所在字符之间跳转
alt + f 跳到光标所在位置单词尾部
替换
ctrl + t 将光标当前字符与前面一个字符替换
alt + t 交换两个光标当前所处位置单词和光标前一个单词
alt + u 把光标当前位置单词变为大写
alt + l 把光标当前位置单词变为小写
alt + c 把光标当前位置单词头一个字母变为大写
^oldstr^newstr 替换前一次命令中字符串
历史命令编辑
ctrl + p 返回上一次输入命令字符
ctrl + r 输入单词搜索历史命令
alt + p 输入字符查找与字符相接近的历史命令
alt + > 返回上一次执行命令
其它
ctrl + s 锁住终端
ctrl + q 解锁终端
ctrl + l 清屏相当于命令clear
ctrl + c 另起一行
ctrl + i 类似TAB健补全功能
ctrl + o 重复执行命令
alt + 数字键 操作的次数
minuit@suse:~>str1 str2 str3 #输入三个单词发现第一单词需要大写好按c+a跳到开头按a+c
minuit@suse:~> Str1 str2 str3 #好现在单词就变成了现在这个样子,又发现第二个单词要全大写(这样的命令真是玩死人:( )好吧如果你当前光标在第二个单词,那直接a+u把这个单词改变,如果不在的话那按住c+a接着c+f跳到第二个单词那再a+u就OK了结果像下面所示。
minuit@suse:~> Str1 STR2 str3 #我想换过来怎么办我的位置已经在最后一个单词这个好办按住a+2+b哈哈跳到了第二个单词再来一下a+l这下第二个单词全小写了
minuit@suse:~> welcome to chinaunix! #不就是变个大小写吗? 按住c+a接着a+3+c看看效果
minuit@suse:~> Welcome To Chinaunix! #GOOD很简单
我们再来试试替换
minuit@suse:~> Welcome To Chinaunix! #还是这三单词c+a跳到开头再接着跳到第二个单词那(因为a+t只能跟前一个单词做替换所以不能在第一个单词按a+t)按住a+t
minuit@suse:~> To Welcome Chinaunix! #现在成这样子的了如果我用再按a+2+t那又变了一个样
minuit@suse:~> Chinaunix! Welcome To #好了来一点比较常用的
minuit@suse:~>ls /tmp/ #看看下面有些什么
file1 file2 file3 ..... ..
minuit@suse:~>^ls^cd #现在再又想进入目录很简单的健入替换命令就行了在命令很长时用这个替换可以省掉很多按a+b或a+f的时间
cd /tmp/
minuit@suse:/tmp> #进入了tmp目录了
跳转的命令就不试了大家自己体会试也看不见^_^
------------------------------------------------------------------------------
Ctrl + a 可以快速切换到命令行开始处
Ctrl + e 切换到命令行末尾
Ctrl + r 在历史命令中查找
Ctrl + u 删除光标所在位置之前的所有字符
Ctrl + k 删除光标所在位置之后的所有字符
ctrl + w 删除光标之前的一个单词
Ctrl + d 结束当前输入、退出shell
ctrl + s 可用来停留在当前屏 ctrl + q 恢复刷屏
ctrl + l 清屏
CTRL 键相关的快捷键:
Ctrl + a - Jump to the start of the line
Ctrl + b - Move back a char
Ctrl + c - Terminate the command //用的最多了吧?
Ctrl + d - Delete from under the cursor
Ctrl + e - Jump to the end of the line
Ctrl + f - Move forward a char
Ctrl + k - Delete to EOL
Ctrl + l - Clear the screen //清屏,类似 clear 命令
Ctrl + r - Search the history backwards //查找历史命令
Ctrl + R - Search the history backwards with multi occurrence
Ctrl + u - Delete backward from cursor // 密码输入错误的时候比较有用
Ctrl + xx - Move between EOL and current cursor position
Ctrl + x @ - Show possible hostname completions
Ctrl + z - Suspend/ Stop the command
补充:
Ctrl + h - 删除当前字符
Ctrl + w - 删除最后输入的单词
ALT 键相关的快捷键:
平时很少用。有些和远程登陆工具冲突。
Alt + < - Move to the first line in the history
Alt + > - Move to the last line in the history
Alt + ? - Show current completion list
Alt + * - Insert all possible completions
Alt + / - Attempt to complete filename
Alt + . - Yank last argument to previous command
Alt + b - Move backward
Alt + c - Capitalize the word
Alt + d - Delete word
Alt + f - Move forward
Alt + l - Make word lowercase
Alt + n - Search the history forwards non-incremental
Alt + p - Search the history backwards non-incremental
Alt + r - Recall command
Alt + t - Move words around
Alt + u - Make word uppercase
Alt + back-space - Delete backward from cursor
// SecureCRT 如果没有配置好,这个就很管用了。
其他特定的键绑定:
输入 bind -P 可以查看所有的键盘绑定。这一系列我觉得更为实用。
Here "2T" means Press TAB twice
$ 2T - All available commands(common) //命令行补全,我认为是 Bash 最好用的一点
$ (string)2T - All available commands starting with (string)
$ /2T - Entire directory structure including Hidden one
$ ./2T - Only Sub Dirs inside including Hidden one
$ *2T - Only Sub Dirs inside without Hidden one
$ ~2T - All Present Users on system from "/etc/passwd" //第一次见到,很好用
$ $2T - All Sys variables //写Shell脚本的时候很实用
$ @2T - Entries from "/etc/hosts" //第一次见到
$ =2T - Output like ls or dir //好像还不如 ls 快捷
补充:
Esc + T - 交换光标前面的两个单词
表2-1 浏览命令行的击键
击键 | 全名 | 含义 |
Ctrl+F | 字符向前 | 向前移动一个字符 |
Ctrl+B | 字符向后 | 向后移动一个字符 |
Alt+F | 单词向前 | 向前移动一个单词 |
Alt+B | 单词向后 | 向后移动一个单词 |
Ctrl+A | 行头 | 到当前行的开始 |
Ctrl+E | 行尾 | 到行的末尾 |
Ctrl+L | 清屏 | 清除屏幕,并在屏幕顶端留下一行 |
表2-2中的击键可以用来编辑命令行。
表2-2 编辑命令行的击键
击键 | 全名 | 含义 |
Ctrl+D | 删除当前内容 | 删除当前字符 |
Backspace或Rubout | 删除以前内容 | 删除前一个字符 |
Ctrl+T | 调换字符 | 交换当前字符和前一个字符的位置 |
Alt+T | 调换单词 | 交换当前单词和前一个单词的位置 |
Alt+U | 大写单词 | 将当前单词变为大写 |
Alt+L | 小写单词 | 将当前单词变为小写 |
Alt+C | 首字母大写 | 将当前单词的首字母变为大写 |
Ctrl+V | 插入特殊字符 | 添加特殊字符。例如,按Ctrl+V+Tab可添加一个Tab字符 |
使用表2-3中的击键可在命令行上剪切和粘贴文本。
表2-3 在命令行上剪切和粘贴文本的击键
击键 | 全名 | 含义 |
Ctrl+K | 剪切行尾 | 剪切文本到该行末尾 |
Ctrl+U | 剪切行头 | 剪切文到该行开头 |
Ctrl+W | 剪切前个单词 | 剪切光标前的一个单词 |
Alt+D | 剪切下个单词 | 剪切光标后的一个单词 |
Ctrl+Y | 粘贴最近的文本 | 粘贴最近剪切的文本 |
Alt+Y | 粘贴早期的文本 | 轮回到先前剪切的文本并粘贴它 |
Ctrl+C | 删除整行 | 删除一整行 |
表2-4 用于文本补全的组合键
组合键 | 用于 |
Alt+~ | 用用户名补全文本 |
Alt+$ | 用变量补全文本 |
Alt+@ | 用主机名补全文本 |
Alt+! | 用命令名(以别名、保留字、shell函数、shell内置命令和文件名的顺序依次检查)补全文本。换句话说,用以前运行过的命令补全这个按键序列 |
Ctrl+X+/ | 列出可能的补全用户名文本 |
Ctrl+X+$ | 列出可能的补全环境变量 |
Ctrl+X+@ | 列出可能的补全主机名 |
Ctrl+X+! | 列出可能的补全命令名 |
表2-5 使用命令历史的击键
键 | 功 能 名 | 描 述 |
方向键 | 步进 | 按上和下箭头可步进浏览历史列表中的每个命令行,直到所需的位置(Ctrl+P和Ctrl+N分别有同样的功能) |
Ctrl+R | 反向渐进搜索 | 按下这些键后,输入一个搜索字符串进行反向搜索。输入此字符串后,匹配的命令行即会出现,可以运行或编辑它 |
Ctrl+S | 前向渐进搜索 | 与前一个功能相似,只不过是前向搜索 |
反向搜索 | 按下这些键后,输入一个字符串进行反向搜索。输入一个字符串并且按Enter键可看到包含该字符串的最近已用命令 | |
Alt+N | 前向搜索 | 与前一个功能类似,只不过是前向搜索 |
Alt+< | 历史列表的开头 | 到历史列表的第一项 |
Alt+> | 历史列表的末尾 | 到历史列表的最后一项 |