标签:
引号有三种类型:’, “, `
字符引用
# echo ‘$PATH‘ //强引用
$PATH
# echo "$PATH" //弱引用
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
# echo `pwd` // 命令引用
/home/testuser
# alias
定义别名:
# alias NAME=’COMMAND’
别名的生命周期:当前shell进程;长期使用需写进配置文件中
撤消别名:
# unalias NAME
ctrl + ? 撤消前一次输入
ctrl + c 另起一行
ctrl + r 输入单词搜索历史命令
ctrl + u 删除光标前面所有字符相当于VIM里d shift+^
ctrl + k 删除光标后面所有字符相当于VIM里d shift+$
删除
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 + 数字键 操作的次数
Tab Tab :
点击一下Tab剩余未出现路径或命令,没有分歧则补全剩余路径名或命令。
如果有分歧,点击2下Tab按键出现所有可选项,以供选择
- 命令补全:shell程序在接收到用户执行命令的请求且分析完成之后,最左侧字符串将被当作命令去查找;
- 查找机制:
- (1) 查找内部命令;
- (2) 查找外部命令:
1、去$PATH变量所指定的各路径下,自左而右逐个搜索各目录下的文件名;
2、给定的打头的字符串如果能惟一标识某命令程序文件的文件名,则直接补全;
3、不能惟一标识,再击tab可给列表;
4、错误:没有任何命令可被此打头字符串标识;
在给定的起始路径的上级目录下,以对应路径下的打头字符串来逐一匹配上级目标下的每个文件:
惟一标识:tab补全;
不能惟一标识:tab, tab给出列表;
错误路径:没有响应;
把命令行的给定的特殊符号自动替换为相应字符串的机制;
~: 自动替换为用户家目录;
~USERNAME:自动替换为指定用户的家目录;
{}:可承载一个以逗号分隔的路径列表,能够将其展开为多个独立路径;
例:命令行展开
/tmp/{a,b,c} <-相当于-> /tmp/a /tmp/b /tmp/c
/tmp/{a,b}/z <-相当于-> /tmp/a/z /tmp/b/z
例:特殊命令替换
命令: # cd ~
命令: # pwd
结果:/root
命令: # cd ~testuser
命令:testuser]# pwd
结果:/home/testuser //跳到testuser用户的家目录
命令的正常输出结果:命令的返回值;适用于不需要看到命令执行的过程,只想知道这个命令是否执行成功了。可通过返回值加以判断
通过引用来保存下来或直接调用——”命令引用“
`COMMAND`
$(COMMAND)
# ls -ld `pwd`
# echo "Helllo World"
Helllo World
# echo $?
0
# echoa "Hello World"
-bash: echoa: command not found
# echo $?
127
glob:文件名通配;快速引用多个文件;文件名整体匹配度检测;
元字符:基于元字符可编写匹配模式(pattern);
// 星号附近给定的字母是约束,在满足约束条件后的任何字符都会被匹配到
p*, pa*, *p, *p*a
p?, p?a, p?? //一个?号代表着一个任何字符,二个代表着2个
p??: pa, pad,
测试:
1、显示/etc目录下,以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录;
ls -d /etc/[^[:alpha:]][a-z]*
2、复制/etc目录下,所以n开头,以非数字结尾的文件或目录至/tmp/etc目录下;
mkdir /tmp/etc
cp -r /etc/n*[^0-9] /tmp/etc/
3、显示/usr/share/man目录下,所有以man开头,后跟一个数字结尾的文件或目录;
ls -d /ur/share/man/man[0-9]
4、复制/etc目录下,所以p,m,r开头的,且以.conf结尾的文件或目录至/tmp/conf.d目录下;
mkdir /tmp/conf.d/
cp -r /etc/[pmr]*.conf /tmp/conf.d/
shell进程会保存其会话中用户曾经执行过的命令;命令通过其“历史文件”来持久保存此前执行过的命令;每个用户都有其自己专用的历史文件;
# echo $HISTSIZE
1000
# echo $HISTFILESIZE
1000
HISTFILE:当前用户的命令历史文件;
查看命令历史列表:~/.bash_history
命令用法:# history
-a 将当前缓冲的历史行追加到历史文件中
-n 从历史文件中读取所有未被读取的行
-r 读取历史文件并将内容追加到历史列表中
调用命令历史列表中的命令以重执行之目的:
\# history
....
72 cat test
73 history
\# !72
cat test
Hello World
\# cat test
Hello World
\# !!
cat test
Hello World
\# !cat
cat test
Hello World
快捷键:ESC, .
Alt+.
!$:给出的字符组合
显示最近的n条件命令历史:
控制命令历史的记录方式:
通过HISTCONTROL环境变量进行,其取值:
ignoredups:忽略重复的命令;重复是指连续且相同的令;
ignorespace:以空白字符开头的命令不记入历史;
ignoreboth:上述两者同时生效;
修改变量值的方式:
\# echo $HISTCONTROL
ignoredups
\# HISTCONTROL="ignoreboth"
\# echo $HISTCONTROL
ignoreboth
变量:内存空间,有名称,名称即为变量名,对应的内存空间中的数据即为变量的值; 变量就是通过一个特点的名称,寻找到内存当中的一段数据。因为内存的数据是可以变更的,所以是变量。
- 点击变量,跳转链接
I/O重定向就是输入、输出本来都有设置好了。比如键盘输入,显示器输出。但是根据某些特别的需求,不需要从键盘中输入直接从文件中寻找已经设定的好的当做输入信息。返回的结果也不需要显示到显示器中,而是保存到文件中去。更改数据流本来要流入的地方到新的地方(一般是文件中)这就是I/O(输入输出)重定向
<:输入重定向
<<:此处创建文件,常用于在脚本中创建文件或生成菜单
<< EOF EOF 此处生成文件
shell的一个功能开关:
禁止覆盖输出重定向至已存在的文件;
关闭上述特性;
将两个数据流合并输出
- (1) &>, &>>
- (2) COMMAND > /PATH/TO/SOMEFILE 2>&1
- COMMAND >> /PATH/TO/SOMEFILE 2>&1
同时重定标准输出和错误输出:
命令 > /path/to/outfile 2>/path/to/errfile
命令 &> /path/to/somefile
命令 > /path/to/somefile 2>&1
管道用|表示,每一个管道后面第一个数据必定是命令,命令必须是能接收标准输入的数据才行。这样的命令才是管道命令
管道命令仅仅会处理标准输出,对于标准错误输出予以忽略
管道命令必须要能够接收来自前一个命令的数据成为标准输入继续处理才行
tr命令:把输出的数据当中的字符,实现对位转换,即把数据中的存在于字符集中的字符,统统转换为字符集2中对应的字符;
col
join
paste
expand
标签:
原文地址:http://blog.csdn.net/lz_equal/article/details/51813798