linux必学知识

Linux 入门操作(二)

2017-07-30  本文已影响0人  不知岁月惜

一、命令行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 把文本粘帖到当前光标处

上一篇 下一篇

猜你喜欢

热点阅读