2017.10.15 bash基础特性及基础命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017.10.15 bash基础特性及基础命令相关的知识,希望对你有一定的参考价值。


一. 命令历史,命令补全和路径补全

  环境变量:

    HISTFILE:命令历史记录的条数

    HISTSIZE:~/.bash.history

    HISTFILESIZE:命令历史文件记录历史的条数


    history:默认显示10条历史纪录

    history -n:显示后n条历史记录

    history -d n:删除第n条历史纪录

    history -c:删除所有历史记录

    history -a:手动追加当前会话缓冲区中的历史命令至历史文件中

   

    !n:重复执行第n条命令

     !!:重复执行上一条命令

     !加命令的开头几个字母:重复执行最近一次以这几个字母开头的命令

   

     控制命令历史的记录方式:

            环境变量:HISTCONTROL:

            ignoredups:忽略连续重复的命令

            ignorespace:忽略以空格开头的命令

            ignoreboth:ignoredups,ignorespace

            修改环境变量值的方式:export 变量名=“值”

                变量赋值:把赋值符号后面的数据存储于变量名指向的内存空间;

[[email protected] ~]# history                         //查看命令历史,默认显示10条历史纪录
   28  history
   29  ls
   30  history | more
   31  history
   32  history | more
   33  ls
   34  cd
   35  ls
   36  cd /.bash.hisory
   37  history
[[email protected] ~]# history 5                       //查看最近5条命令历史
   34  cd
   35  ls
   36  cd /.bash.hisory
   37  history
   38  history 5
[[email protected] ~]# history -d 36                   //删除第36条命令历史,
[[email protected] ~]# history 5                       //再次查看,发现已经被删除了
   35  ls
   36  history
   37  history 5
   38  history -d 36
   39  history 5
[[email protected] ~]# history -c                      //删除所有历史
[[email protected] ~]# history
   31  history
[[email protected] ~]# history -a
[[email protected] ~]# 

[[email protected] ~]# cd /
[[email protected] /]# ls
123  boot   dev   lib         media  proc  selinux  tmp  var
abc  data   etc   lib64       mnt    root  srv      usr  xxl
bin  data1  home  lost+found  opt    sbin  sys      uzz
[[email protected] /]# cd 
[[email protected] ~]# ls
12      anaconda-ks.cfg     -n                             uzz
123     ett.txt             oldboy                         xxl
123456  install.log         oldboy.txt                     xxl.txt
abc     install.log.syslog  session192.168.80.1280320.log
[[email protected] ~]# history
   31  history
   32  history -a
   33  cd /
   34  ls
   35  cd 
   36  ls
   37  history
[[email protected] ~]# !33                             //重复执行第33条历史命令
cd /
[[email protected] /]# cd
[[email protected] ~]# ls
12      anaconda-ks.cfg     -n                             uzz
123     ett.txt             oldboy                         xxl
123456  install.log         oldboy.txt                     xxl.txt
abc     install.log.syslog  session192.168.80.1280320.log
[[email protected] ~]# !!                              //重复执行上一条命令
ls
12      anaconda-ks.cfg     -n                             uzz
123     ett.txt             oldboy                         xxl
123456  install.log         oldboy.txt                     xxl.txt
abc     install.log.syslog  session192.168.80.1280320.log
[[email protected] ~]# !c                              //重复执行最近一次以c打头的命令
cd
[[email protected] ~]# 

[[email protected] ~]# history
    2  cd /
    3  ls
    4  cd 
    5  ls
    6  history
    7  cd /
    8  cd
    9  ls
   10  cd
   11  history
[[email protected] ~]# ls
12      anaconda-ks.cfg     -n                             uzz
123     ett.txt             oldboy                         xxl
123456  install.log         oldboy.txt                     xxl.txt
abc     install.log.syslog  session192.168.80.1280320.log
[[email protected] ~]# ls
12      anaconda-ks.cfg     -n                             uzz
123     ett.txt             oldboy                         xxl
123456  install.log         oldboy.txt                     xxl.txt
abc     install.log.syslog  session192.168.80.1280320.log
[[email protected] ~]# history                            //默认重复执行的命令不被记录
    4  cd 
    5  ls
    6  history
    7  cd /
    8  cd
    9  ls
   10  cd
   11  history
   12  ls
   13  history
[[email protected] ~]#  cd /
[[email protected] /]# 
[[email protected] /]# history
    6  history
    7  cd /
    8  cd
    9  ls
   10  cd
   11  history
   12  ls
   13  history
   14   cd /
   15  history
[[email protected] /]# export HISTCONTROL="ignorespace"          //设置以空格打头的命令不被记录
[[email protected] /]#  cd 
[[email protected] ~]# 
[[email protected] ~]# history
    8  cd
    9  ls
   10  cd
   11  history
   12  ls
   13  history
   14   cd /
   15  history
   16  export HISTCONTROL="ignorespace"
   17  history
[[email protected] ~]#


命令补全和路径补全

  linux中命令和路径众多,在使用过程中难免会忘记,bash shell提供的命令补全功能弥补了这一缺陷。只需要给出命令的前几个字母,bash会根据PATH环境变量定义的路径,从左到右查找以给定命令名命名的文件,第一次查找到的即为要运行的文件。

  按tab键即可自动补全,如果还未不全,可再敲一次tab键,从给出的选项中选择要执行的命令,或者再对给出一些提示。

[[email protected] ~]# e                 //输入e按tab,发现以e打头的命令有很多,再按一次tab,列出所有
e2freefrag             envsubst               eu-objdump
e2fsck                 eqn                    eu-ranlib
e2image                eqn2graph              eu-readelf
e2label                era_check              eu-size
e2undo                 era_dump               eu-stack
echo                   era_invalidate         eu-strings
ed                     esac                   eu-strip
editdiff               espdiff                eu-unstrip
edquota                ether-wake             eval
efibootmgr             ethtool                ex
egrep                  eu-addr2line           exec
eject                  eu-ar                  execstack
elif                   eu-elfcmp              exit
elinks                 eu-elflint             expand
else                   eu-findtextrel         export
enable                 eu-make-debug-archive  expr
env                    eu-nm                  
[[email protected] ~]# echo             //输入ec,按回车,显示echo

[[email protected] ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0  /敲tab补全

目录管理类命令

1. mkdir
   mkdir [选项] 目录         创建目录

    参数:

    -p 递归创建目录

    -m 对创建的目录设置权限,-m,默认是755

2. rmdir
    rmdir [选项] 目录         删除”空“目录

        -p 递归删除

mkdir用法案例:
在根目录/下创建uzz目录
[[email protected] /]# mkdir uzz
[[email protected] /]# ls /
12   bin   data1  home   lost+found  opt   sbin     sys  uzz
123  boot  dev    lib    media       proc  selinux  tmp  var
abc  data  etc    lib64  mnt         root  srv      usr  xxl
[[email protected] /]#
在uzz目录下创建xk目录,再在xk目录下创建wlgc目录
[[email protected] uzz]# mkdir -p xk/wlgc
[[email protected] uzz]# ls
xk
[[email protected] uzz]# ls xk
wlgc
[[email protected] uzz]# 

[[email protected] 12]# mkdir -m 711 files               //创建files文件夹,设置目录权限是711
[[email protected] 12]# ls -l
total 4
drwx--x--x 2 root root 4096 May  4 12:43 files
[[email protected] 12]# mkdir file                       //创建file文件夹
[[email protected] 12]# ls -l                            //列出详细信息
total 8
drwxr-xr-x 2 root root 4096 May  4 12:44 file
drwx--x--x 2 root root 4096 May  4 12:43 files
[[email protected] 12]#                                  //可以看出,这两个文件的权限是不一样的

rmdir用法案例:
[[email protected] ~]# tree uzz
uzz
└── xxkx
    └── wlgc
        └── xxl

[[email protected] ~]# rmdir -p uzz/xxkx/wlgc
rmdir: failed to remove `uzz/xxkx/wlgc‘: Directory not empty
[[email protected] ~]# rmdir -p uzz/xxkx/wlgc/xxl
[[email protected] ~]# ls uzz
ls: cannot access uzz: No such file or directory
[[email protected] ~]#

三.文件查看命令
1. more和less
more的功能是将文件从第一行开始,根据输出窗口的大小,适当的输出文件内容。当一页无法全部输出时,可以用“回车键”向下翻行,用“空格键”向下翻页。退出查看页面,请按“q”键。另外,more还可以配合管道符“|”(pipe)使用,例如:ls -al | more

more的语法:more 文件名

Enter 向下n行,需要定义,默认为1行;

Ctrl f 向下滚动一屏;

空格键 向下滚动一屏;

Ctrl b 返回上一屏;

= 输出当前行的行号;

:f 输出文件名和当前行的行号;

v 调用vi编辑器;

! 命令 调用Shell,并执行命令;

q 退出more

 
less的功能和more相似,但是使用more无法向前翻页,只能向后翻。

less可以使用【pageup】和【pagedown】键进行前翻页

less的语法:less 文件名

less还有一个功能,可以在文件中进行搜索你想找的内容,假设你想在passwd文件中查找有没有weblogic字符串,那么你可以这样来做:

[[email protected] etc]# less passwd

然后输入:

/weblogic

回车

此时如果有weblogic字符串,linux会把该字符已高亮方式显示。

退出查看页面,请按“q”键。


2. head和tail

head和tail通常使用在只需要读取文件的前几行或者后几行的情况下使用。

head的功能是显示文件的前几行内容
head -4 a.txt              显示前4行内容
tail的功能恰好和head相反,只显示最后几行内容
tail -5 b.txt              显示后5行内容

[[email protected] ~]# head -5 install.log
Installing libgcc-4.4.7-16.el6.x86_64
warning: libgcc-4.4.7-16.el6.x86_64: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Installing setup-2.8.14-20.el6_4.1.noarch
Installing filesystem-2.4.30-3.el6.x86_64
Installing basesystem-10.0-4.el6.noarch
[[email protected] ~]# tail -5 install.log
Installing ipw2100-firmware-1.3-11.el6.noarch
Installing ql23xx-firmware-3.03.27-3.1.el6.noarch
Installing ipw2200-firmware-3.1-4.el6.noarch
Installing rootfiles-8.1-6.1.el6.noarch
*** FINISHED INSTALLING PACKAGES ***
[[email protected] ~]#

四. 时间戳管理命令

touch 创建文件或更新文件的时间戳
格式:touch 参数 文件名

    参数:

    -c :不创建不存在文件

    -m:只更新修改时间,不更新访问时间

    -a:只更新访问时间,不更新修改时间

    -r file:使用文件file的时间更新文件的时间

    -t:将时间修改为参数指定的日期,如01091135为 1月9日 11:35


补充知识:查看文件信息(创建日期):ls -l     查看文件信息(访问日期):ls -lu

[[email protected] 123]# tree                      //交待实验环境,该文件夹下有以下文件夹和文件
.
├── 1234
│   └── 12345
├── 1.txt
├── 2
├── 2.txt
└── 3.txt

2 directories, 4 files
[[email protected] 123]# touch -c a.txt          //如果有a.txt,更新其时间戳,如果没有,也不要创建
[[email protected] 123]# ls
1234  1.txt  2  2.txt  3.txt
[[email protected] 123]# ls -l 1.txt
-rw-r--r--. 1 root root 9 May  4 15:04 1.txt
[[email protected] 123]# touch -c 1.txt
[[email protected] 123]# ls -l 1.txt
-rw-r--r--. 1 root root 9 May  4 16:21 1.txt
[[email protected] 123]# ls -lu 1.txt
-rw-r--r--. 1 root root 9 May  4 16:21 1.txt
[[email protected] 123]# touch -a 1.txt
[[email protected] 123]# ls -lu 1.txt
-rw-r--r--. 1 root root 9 May  4 16:23 1.txt
[[email protected] 123]# ls -l 2.txt
-rw-r--r--. 1 root root 9 Apr  5 05:17 2.txt
[[email protected] 123]# touch -r 2.txt 1.txt
[[email protected] 123]# ls -l 2.txt
-rw-r--r--. 1 root root 9 Apr  5 05:17 2.txt
[[email protected] 123]# touch -t 03301259 1.txt
[[email protected] 123]# ls -l 1.txt
-rw-r--r--. 1 root root 9 Mar 30 12:59 1.txt
[[email protected] 123]#



本文出自 “技术成就梦想” 博客,请务必保留此出处http://xuxiaoliang.blog.51cto.com/10882951/1972480

以上是关于2017.10.15 bash基础特性及基础命令的主要内容,如果未能解决你的问题,请参考以下文章

Linux自学笔记:bash基础特性及基础命令

bash初识,shell的基础语法及基本特性

Linux基础之bash shell介绍及基本特性

Bash基础特性

bash的多命令执行,shell脚本基础及grep系

bash的工作特性及命令状态返回查询