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基础特性及基础命令的主要内容,如果未能解决你的问题,请参考以下文章