8.1-8.5 命令历史、命令补全、通配符和重定向

8.1 shell介绍

Shell是一个命令解释器,提供用户和机器之间的交互,支持特定的语法,比如逻辑判断、循环。每个用户都可以有自己特定的shell,CentOS7的默认shell为bash(Bourne Agin Shell),常见的还有zsh(power-shell)、ksh(Korn shell)。


8.2 命令历史(history)

history命令

  • 语法: history [-c]

    -c:=clear 清除内存中的命令,不能删除配置文件中的历史命令

[[email protected] ~]# history
    1  ls
    2  ls /tmp/
    3  ls /boot/
    4  ls /
    5  dhclient
……
[[email protected] ~]# ls /root/.bash_history
/root/.bash_history     history的家目录

显示使用过的命令历史,默认保存1000条使用过的命令(注:此令需要是在正常关机操作情况下的处1000条命)!

history环境变量

  • 变量HISTSIZE
[[email protected] ~]# echo $HISTSIZE
1000

该变量决定命令历史保存的命令的数目。

  • 定义变量HISTSIZE
编辑其配置文件
[[email protected] ~]# vim /etc/profile
……
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
……
[[email protected] ~]# echo $HISTSIZE
1000
[[email protected] ~]# source /etc/profile
[[email protected] ~]# echo $HISTSIZE
2000

搜索关键字"HIST"找到‘HISTSIZE=1000’,在此更改其数字,保存退出,然后执行命令‘source /etc/profile’刷新该配置文件才会生效。

  • 更改history显示格式
[[email protected] ~]# echo $HISTTIMEFORMAT

[[email protected] ~]# HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
[[email protected] ~]# echo $HISTTIMEFORMAT
%Y/%m/%d %H:%M:%S
[[email protected] ~]# history
    1  2017/06/28 18:50:11 history
    2  2017/06/28 18:51:32 echo $HISTTIMEFORMAT
    3  2017/06/28 18:51:43 HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
    4  2017/06/28 18:51:45 echo $HISTTIMEFORMAT
    5  2017/06/28 18:52:32 history

直接为‘HISTTIMEFORMAT’赋值即可,不过此时该格式只适用于当前终端。如果要其使用于所有用户,则需要将其写入history配置文件并刷新后生效。

[[email protected] ~]# vim /etc/profile
……
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
……
保存退出!
[[email protected] ~]# source /etc/profile
  • 命令历史永久保存

    即,使命令历史记录只能写入不能被删除!

    [[email protected] ~]# chattr +a ~/.bash_history

使用文件特殊权限,为‘.bash_history’文件配置‘a’权限(只可追加,不可删除),限于正常关机操作。

‘!!’命令

[[email protected] ~]# w
……
[[email protected] ~]# !!
w
……

‘!’的用法:‘!n’(n代表数字),表示运行命令历史中的第n条命令;‘!word’,表示运行上一次以该word开头的命令。

举例:

[[email protected] ~]# history
    1  2017/06/28 18:50:11 history
    2  2017/06/28 18:51:32 echo $HISTTIMEFORMAT
    3  2017/06/28 18:51:43 HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
    4  2017/06/28 18:51:45 echo $HISTTIMEFORMAT
    5  2017/06/28 18:52:32 history
[[email protected] ~]# !4
echo $HISTTIMEFORMAT
%Y/%m/%d %H:%M:%S
[[email protected] ~]# !HIST
HISTSIZE=1000

8.3 命令补全和别名

命令补全Tab

按一次tab可以补全一个命令或参数(需要安装包bash-completion,并重启系统);按两次tab可以显示以某字母开头的所有命令或文件名。

alias命令

  • 语法: alias [命令别名]=[具体命令] 设置别名
  • 取消别名:unalias [命令别名]

直接输入alias会显示系统所有的别名:

[[email protected] ~]# alias
alias cp=‘cp -i‘
alias egrep=‘egrep --color=auto‘
alias fgrep=‘fgrep --color=auto‘
alias grep=‘grep --color=auto‘
alias l.=‘ls -d .* --color=auto‘
alias ll=‘ls -l --color=auto‘
alias ls=‘ls --color=auto‘
alias mv=‘mv -i‘
alias rm=‘rm -i‘
alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘
[[email protected] ~]# 

系统别名存放在配置文件‘~/.bashrc’和‘ls /etc/profile.d/’下:

[[email protected] ~]# cat !$
cat .bashrc
# .bashrc

# User specific aliases and functions

alias rm=‘rm -i‘
alias cp=‘cp -i‘
alias mv=‘mv -i‘

# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi
[[email protected] ~]# ls /etc/profile.d/
256term.csh         colorgrep.sh  lang.sh                qt-graphicssystem.sh  which2.sh
256term.sh          colorls.csh   less.csh               vim.csh
bash_completion.sh  colorls.sh    less.sh                vim.sh
colorgrep.csh       lang.csh      qt-graphicssystem.csh  which2.csh

8.4 通配符/8.5输入输出重定向

  • 通配符‘*’代表零个或多个任意字符
  • 通配符‘?’代表一个任意字符
  • 中括号‘[]’,“ls [0-9].txt”表示0-9区间内的任意.txt文件
  • 花括号‘{}’,“ls {1,2,3}.txt”表示括号内任意.txt文件

输入输出重定向

“>,>>,<,2>,2>>”

‘>’:输出重定向

‘>>’:追加重定向

‘2>’:错误重定向

‘<’:输入重定向

使用‘>’命令时会将文件内原有内容删除。

[[email protected] tmp]# echo adaixuelinux > 1.txt
[[email protected] tmp]# cat 1.txt
adaixuelinux
[[email protected] tmp]# echo adaixu > 1.txt
[[email protected] tmp]# cat 1.txt
adaixu
#####################################

[[email protected] tmp]# echo adaixu >> 1.txt
[[email protected] tmp]# cat 1.txt
adaixu
adaixu

#####################################

[[email protected] tmp]# lsaaa
-bash: lsaaa: 未找到命令
[[email protected] tmp]# lsaaa 2> 2.txt
[root[email protected] tmp]# cat 2.txt
-bash: lsaaa: 未找到命令

输入重定向:必须定向到(<左边)一个命令下
[[email protected] tmp]# wc -l 1.txt
“ wc -l”该命令用于查看文件行数
2 1.txt
  • 应用
[[email protected] tmp]# ls {1,2}.txt aaaa.txt > 1.txt 2> 3.txt
[[email protected] tmp]# cat 1.txt
1.txt
2.txt
[[email protected] tmp]# cat 3.txt
ls: 无法访问aaaa.txt: 没有那个文件或目录

说明: 使用ls命令查看 {1,2}.txt aaaa.txt,1.txt和2.txt文件存在,可以使用ls查看,aaaa.txt不存在,使用ls查看会报错,‘> 1.txt 2> 3.txt’意思是将正确信息保存到1.txt,将错误信息保存到3.txt。

原文地址:http://blog.51cto.com/13530586/2059705

时间: 2024-10-12 23:51:38

8.1-8.5 命令历史、命令补全、通配符和重定向的相关文章

Centos命令参数自动补全

最小化安装centos后发现git docker等命令不能自动补全参数,而在Desktop安装环境下是可以自动补全的. 要解决这个问题需要安装一个小软件:bash-completion sudo yum install bash-completion

shell介绍 命令历史 命令补全和别名 通配符 输入输出重定向

8.1 shell介绍 shell 是一个命令解释器,提供用户和机器之间的交互 支持特定语法,比如逻辑判断,循环 每个用户都可以有自己特定的shell CentOS7默认shell 为bash(Bourne Agin Shell) 还有zsh.ksh等 yum zsh和ksh [[email protected] ~]# yum list |grep zsh zsh.x86_64 5.0.2-25.el7_3.1 updates zsh-html.x86_64 5.0.2-25.el7_3.1

shell介绍/命令历史/命令补全/通配符/输出输入重定向

shell介绍 * shell是一个命令解释器,提供用户和机器之间的交互. * 支持特定语法,比如逻辑判断.循环. * 每个用户都可以有自己特定的shell. * Centos7默认shell为bash. * 还有zsh.ksh 命令历史 我们在终端上敲过的命令,都有它的历史记录,比如此时按下向上键就会看到你之前最后输入的一条命令,再按就再往前翻,这里就开始学习认识命令历史 使用history命令查看历史命令: [[email protected] ~]# history 这里可以看到我已经输入

shell介绍 命令历史 命令补全和别名 输入输出重定向

shell介绍 shell是一个命令解释器,提供用户与机器之间的交互例如我们远程登录的工具,它其实就是一个shell centos默认的shell是bash(Bourne Agin Shell)· 命令历史 history命令命令历史存在用户家目录下的.bash_history,如root用户就是/root/.bash_history·history可以查看命令历史,.bash_history文件了里最多可以存1000条,它是由环境变量HISTSIZE决定的,不过history有时候也会查看到超

bash特性-命令历史命令行编辑

bash: GUI:Gnome,KDE,XFCE CLI:sh,csh,bash,ksh,tcsh,zsh shell,子shell tree:查看目录树 pstree:查看进程目录树 bash: 1.命令历史.命令补全 2.管道.重定向 3.命令别名 4.命令行编辑 5.命令行展开 6.文件名通配 7.变量 8.编程 命令行编辑: 光标跳转: Ctrl+a:跳到命令行首 Ctrl+e:跳到命令行尾 Ctrl+u:删除光标至命令行首的内容 Ctrl+k:删除光标至命令行尾的内容 Ctrl+l:清

开启mac terminal 命令/路径自动补全功能

用惯了windows命令行工具的按Tab自动补全路径功能后,在mac terminal上敲命令很不习惯.其实mac terminal也有这个功能. 在命令行输入nano .inputrc 进入.inputrc的编辑界面,输入如下语句: set completion-ignore-case on set show-all-if-ambiguous on TAB: menu-complete Control+O保存.重启terminal即生效

fastboot命令的自动补全

在Ubuntu13.10以及之后的Ubuntu 14.04上,通过APT安装fastboot以及adb工具之后, 发现fastboot的自动补全有问题了, fastboot flash 之后的自动补全有问题了, 特别是mbn以及bin类型的文件根本无法补全. 查了一下,发现是fastboot的自动补全脚本限制了补全规则,稍微修改一下就能解决这个问题. 文件路径: /etc/bash_completion.d/fastboot 修改其中的内容如下: _fastboot() { local cur

命令历史、别名、通配符

1.shell Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的.但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,它使用了Linux/Unix下的命令. Shell 编程跟 java.php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了. Linux 的 Shell 种类众多,常见的有: ①Bourne Shell(/usr/

mysql命令行自动补全

今天想着实现mysql命令行的自动补全功能,随便搜索就出现了使用 mysql自带的 --auto--rehash参数 mysql -uroot -p --auto--rehash 但是mariadb好像不买账,继续搜索,出现了下面的工具 mycli官网 嗯,还有mysql相关的命令 mysqladmin,一起学起来吧! 20 MySQL (Mysqladmin) Commands for Database Administration in Linux 4 Useful Commandline

mysql 命令行 自动补全

配置文件中 默认关闭自动补全: [mysql] #no-auto-rehash # faster start of mysql but no tab completition 改为: [mysql] auto-rehash  #now tab completition