Linux 入门操作(二)
一、命令行Tab自动补全
很多初学者会觉得在Linux下面输入很长的一个文件名是一件很麻烦的事情,那其实是你没掌握Tab的用法尝试在输入部分文件名时按下Tab键
Tab
命令补全
内部命令:
外部命令: bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到的命令即为要执行的命令
用户给定的字符串只有一条惟一对应的命令,直接补全,否则,再次Tab会给出列表
例:
当输入cd 后不知道后面是什么文件时,可以摁Tab键,会显示此目录下一层文件。输入cd后,只记得目录首字母也可以摁Tab键,会自动补全。忘记命令时也可以摁Tab帮助。
目录提示补全
[root@centos7 ~]#cd
cd cd-drive cd-info cd-read
cd-create-profile cd-fix-profile cd-it8 cdrecord
cdda-player cd-iccdump cd-paranoia
[root@centos7 ~]#cd-read
路径补全
把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名
如果惟一:则直接补全
否则:再次Tab给出列表
双击Tab键
command 2Tab 所有子命令或文件补全
string2Tab 以string开头命令
/2Tab 显示所有根目录下一级目录,包括隐藏目录
./2Tab 当前目录下子目录,包括隐藏目录
*2Tab 当前目录下子目录,不包括隐藏目录
~2Tab 所有用户列表
$2Tab 所有变量
@2Tab /etc/hosts记录 ( centos7不支持)
=2Tab 相当于ls –A ( centos7不支持)
二、命令行历史
保存你输入的命令历史。可以用它来重复执行命令 登录shell 时,会读取命令历史文件中记录下的命令~/.bash_history
登录进shell 后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中
重复前一个命令,有4 种方法:
重复前一个命令 使用上方向键,并回车执行。
按 !! 并回车执行。
入 输入 !-1 并回车执行。
按 Ctrl+p 并回车执行。
! 字符串: 重复前一个以“字符串”开头的命令
例:
[root@centos7 /]#ls /etc/sysconfig/network-scripts/
ifcfg-ens33 ifdown-ppp ifup-ib ifup-Team
ifcfg-lo ifdown-routes ifup-ippp ifup-TeamPort
[root@centos7 /]#cat
c^C
[root@centos7 /]#!ls
ls /etc/sysconfig/network-scripts/
ifcfg-ens33 ifdown-ppp ifup-ib ifup-Team
ifcfg-lo ifdown-routes ifup-ippp ifup-TeamPort
!num: 按照history 命令输出中的序号重复对应命令
!? 字符串: 重复前一个包含abc 的命令
!-n : 重复n
使用up (向上)和down (向下)键来上下浏览从前输入的命令
键入ctrl-r 来在命令历史中搜索命令
( (reverse-i-search )`’: :
要重新调用前一个命令中最后一个参数:
!$ 表示
Esc, . (点击Esc击 键后松开,然后点击 . 键)
Alt+ . (按住Alt击 键的同时点击 . 键)
!cat 重复前一个以“ cat”开头的命令
例:
[root@centos7 /app]#cat /app/d1
dddd
wwww
xxx
gggg
[root@centos7 /app]#cat /app/z1
5
2
5
[root@centos7 /app]#!cat
cat /app/z1
5
2
5
!?cat 重复前一个包含string的命令
!cat:p 仅打印命令历史,而不执行
!$:p 打印输出 !$ (上一条命令的最后一个参数)的内容
!:p 打印输出 !(上一条命令的所有参数)的内容
^cat 删除上一条命令中的第一个cat
cat1cat2 将上一条命令中的第一个cat1替换为
cat2
!:gs/cat1/cat2 将上一条命令中所有的cat1都替换
为 cat2
使用up(向上)和down(向下)键来上下浏览从前输入的命令
ctrl-r来在命令历史中搜索命令
• ( reverse-i-search) `’:
Ctrl+g:从历史搜索模式退出
要重新调用前一个命令中最后一个参数:
!$ 表示
Esc, .(点击Esc键后松开,然后点击 . 键)
Alt+ .(按住Alt键的同时点击 . 键)
三、调用历史参数
command !^ : 利用上一个命令的第一个参数做cmd的参数
command !$ : 利用上一个命令的最后一个参数做cmd的参数
例:pwd是最后一个参数, 用命令touch 创建!$ (pwd) , ls查询创建文件夹
[root@centos7 /app]#pwd
/app
[root@centos7 /app]#touch !$
touch pwd
[root@centos7 /app]#ls
22.txt a1 bin b.txt d1 f1 f11 f2 f3 f7.sh hello.sh pwd q7.sh Rescue.asd z1
command !* : 利用上一个命令的全部参数做cmd的参数
command !:n : 利用上一个命令的第n个参数做cmd的参数
command !n:^ 调用第n条命令的第一个参数
command !n:$ 调用第n条命令的最后一个参数
例:history查看313历史命令,最后一个参数是bash$
313 2017-07-27 16:29:29 cat /etc/passwd |grep bash$
root@centos7 ~]#echo !313$
echo bash$
bash$
command !n:m 调用第n条命令的第m个参数
command !n:* 调用第n条命令的所有参数
command !string:^ 从命令历史中搜索以 string 开头的命令,并获取它的第一个参数
command !string:$ 从命令历史中搜索以 string 开头的命令,并获取它的最后一个参数
command !string:n 从命令历史中搜索以 string 开头的命令,并获取它的第n个参数
command !string:* 从命令历史中搜索以 string 开头的命令,并获取它的所有参数
四、命令history
history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]
-c: 清空命令历史
[root@centos7 ~]#history
1 2017-07-30 16:32:29 echo > .bash_history
2 2017-07-30 16:32:37 history
3 2017-07-30 16:32:47 cat .bash_history
4 2017-07-30 16:33:58 history
5 2017-07-30 16:34:15 hostname
[root@centos7 ~]#history -c
-d offset: 删除历史中指定的第offset个命令
n: 显示最近的n条历史
-a: 追加本次会话新执行的命令历史列表至历史文件
-n: 读历史文件中未读过的行到历史列表
-r: 读历史文件附加到历史列表
-w: 保存历史列表到指定的历史文件
-p: 展开历史参数成多行,但不存在历史列表中
例:历史记录中没有这个命令history -p echo {1..10..3}
[root@centos7 ~]#echo {1..10..3}
1 4 7 10
[root@centos7 ~]#history -p echo {1..10..3}
echo
1
4
7
10
[root@centos7 ~]#history
94 2017-07-30 17:46:30 echo
95 2017-07-30 17:46:53 echo {1..10..3}
96 2017-07-30 17:47:48 history
-s: 展开历史参数成一行,附加在历史列表后
命令历史相关环境变量
HISTSIZE:命令历史记录的条数
例:
[root@centos7 ~]#echo $HISTSIZE
1000
HISTFILE:指定历史文件,默认为~/.bash_history
HISTFILESIZE:命令历史文件记录历史的条数
例:打开文件,找到HISTSIZE=1000,需要修改记录数可以把1000修改你觉得合适的记录数(用nano编辑器或者vim)
[root@centos7 ~]#cat /etc/profile
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
else
export HISTCONTROL=ignoredups
HISTTIMEFORMAT=“%F %T “ 显示时间
例: 可以保存到编辑器里面方便查看
[root@centos7 ~]#HISTTIMEFORMAT="%F %T "
[root@centos7 ~]#history
1 2017-07-30 16:56:19 history -r
2 2017-07-30 16:32:29 echo > .bash_history
3 2017-07-30 16:32:37 history
4 2017-07-30 16:32:47 cat .bash_history
5 2017-07-30 16:33:58 history
HISTIGNORE=“str1:str2*:… “ 忽略str1命令, str2开头的历史
控制命令历史的记录方式:
环境变量: HISTCONTROL
ignoredups 默认,忽略重复的命令,连续且相同为“重复”
ignorespace 忽略所有以空白开头的命令
ignoreboth 相当于ignoredups, ignorespace的组合
erasedups 删除重复命令
例:
[root@centos7 ~]#HISTCONTROL=erasedups
[root@centos7 ~]#pwd
/root
[root@centos7 ~]#pwd
/root
[root@centos7 ~]#ls
aliasq bin etc nano.save test
anaconda-ks.cfg Desktop etc2017-07-29 Pictures testdir
B Documents initial-setup-ks.cfg Public typescript
bashrc Downloads Music Templates Videos
[root@centos7 ~]#pwd
/root
[root@centos7 ~]#history
91 2017-07-30 18:05:44 ls
92 2017-07-30 18:05:48 pwd
93 2017-07-30 18:06:08 history
export 变量名="值“
存放在 /etc/profile 或 ~/.bash_profile
五、bash的快捷键
Ctrl + l 清屏,相当于clear命令
Ctrl + o 执行当前命令,并重新显示本命令
Ctrl + s 阻止屏幕输出,锁定
Ctrl + q 允许屏幕输出
Ctrl + c 终止命令
Ctrl + z 挂起命令
Ctrl + a 光标移到命令行首,相当于Home
Ctrl + e 光标移到命令行尾,相当于End
Ctrl + f 光标向右移动一个字符
Ctrl + b 光标向左移动一个字符
Alt + f 光标向右移动一个单词尾
Alt + b 光标向左移动一个单词首
Ctrl + xx 光标在命令行首和光标之间移动
Ctrl + u 从光标处删除至命令行首
Ctrl + k 从光标处删除至命令行尾
Alt + r 删除当前整行
六、gnome-terminal
应用程序->附件->终端
支持多个“标签” shell的图形化终端模拟器
Ctrl-Shift-n 创建新窗口
Ctrl-Shift-q 关闭当前窗口
Ctrl-Shift-t 创建一个标签页
Ctrl-Shift-w 关闭一个标签页
Ctrl-PaUp/PgUn 切换到下一个/前一个标签页
Ctrl-Shift-c 复制选中的文本
Ctrl-Shift-v 把文本粘帖到当前光标处