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 变量名=“值”

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

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

[root@xxl~]#cd/
[root@xxl/]#ls
123bootdevlibmediaprocselinuxtmpvar
abcdataetclib64mntrootsrvusrxxl
bindata1homelost+foundoptsbinsysuzz
[root@xxl/]#cd
[root@xxl~]#ls
12anaconda-ks.cfg-nuzz
123ett.txtoldboyxxl
123456install.logoldboy.txtxxl.txt
abcinstall.log.syslogsession192.168.80.1280320.log
[root@xxl~]#history
31history
32history-a
33cd/
34ls
35cd
36ls
37history
[root@xxl~]#!33//重复执行第33条历史命令
cd/
[root@xxl/]#cd
[root@xxl~]#ls
12anaconda-ks.cfg-nuzz
123ett.txtoldboyxxl
123456install.logoldboy.txtxxl.txt
abcinstall.log.syslogsession192.168.80.1280320.log
[root@xxl~]#!!//重复执行上一条命令
ls
12anaconda-ks.cfg-nuzz
123ett.txtoldboyxxl
123456install.logoldboy.txtxxl.txt
abcinstall.log.syslogsession192.168.80.1280320.log
[root@xxl~]#!c//重复执行最近一次以c打头的命令
cd
[root@xxl~]#

[root@xxl~]#history
2cd/
3ls
4cd
5ls
6history
7cd/
8cd
9ls
10cd
11history
[root@xxl~]#ls
12anaconda-ks.cfg-nuzz
123ett.txtoldboyxxl
123456install.logoldboy.txtxxl.txt
abcinstall.log.syslogsession192.168.80.1280320.log
[root@xxl~]#ls
12anaconda-ks.cfg-nuzz
123ett.txtoldboyxxl
123456install.logoldboy.txtxxl.txt
abcinstall.log.syslogsession192.168.80.1280320.log
[root@xxl~]#history//认重复执行的命令不被记录
4cd
5ls
6history
7cd/
8cd
9ls
10cd
11history
12ls
13history
[root@xxl~]#cd/
[root@xxl/]#
[root@xxl/]#history
6history
7cd/
8cd
9ls
10cd
11history
12ls
13history
14cd/
15history
[root@xxl/]#exportHISTCONTROL="ignorespace"//设置以空格打头的命令不被记录
[root@xxl/]#cd
[root@xxl~]#
[root@xxl~]#history
8cd
9ls
10cd
11history
12ls
13history
14cd/
15history
16exportHISTCONTROL="ignorespace"
17history
[root@xxl~]#


命令补全和路径补全

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

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

[root@xxl~]#e//输入e按tab,发现以e打头的命令有很多,再按一次tab,列出所有
e2freefragenvsubsteu-objdump
e2fsckeqneu-ranlib
e2imageeqn2grapheu-readelf
e2labelera_checkeu-size
e2undoera_dumpeu-stack
echoera_invalidateeu-strings
edesaceu-strip
editdiffespdiffeu-unstrip
edquotaether-wakeeval
efibootmgrethtoolex
egrepeu-addr2lineexec
ejecteu-arexecstack
elifeu-elfcmpexit
elinkseu-elflintexpand
elseeu-findtextrelexport
enableeu-make-debug-archiveexpr
enveu-nm
[root@xxl~]#echo//输入ec,按回车,显示echo

[root@xxl~]#cat/etc/sysconfig/network-scripts/ifcfg-eth0/敲tab补全

目录管理类命令

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

参数:

-p 递归创建目录

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

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

-p 递归删除

mkdir用法案例:
在根目录/下创建uzz目录
[root@xxl/]#mkdiruzz
[root@xxl/]#ls/
12bindata1homelost+foundoptsbinsysuzz
123bootdevlibmediaprocselinuxtmpvar
abcdataetclib64mntrootsrvusrxxl
[root@xxl/]#
在uzz目录下创建xk目录,再在xk目录下创建wlgc目录
[root@xxluzz]#mkdir-pxk/wlgc
[root@xxluzz]#ls
xk
[root@xxluzz]#lsxk
wlgc
[root@xxluzz]#

[root@xxl12]#mkdir-m711files//创建files文件夹,设置目录权限是711
[root@xxl12]#ls-l
total4
drwx--x--x2rootroot4096May412:43files
[root@xxl12]#mkdirfile//创建file文件夹
[root@xxl12]#ls-l//列出详细信息
total8
drwxr-xr-x2rootroot4096May412:44file
drwx--x--x2rootroot4096May412:43files
[root@xxl12]#//可以看出,这两个文件的权限是不一样的

rmdir用法案例:
[root@xxl~]#treeuzz
uzz
└──xxkx
└──wlgc
└──xxl

[root@xxl~]#rmdir-puzz/xxkx/wlgc
rmdir:Failedtoremove`uzz/xxkx/wlgc':Directorynotempty
[root@xxl~]#rmdir-puzz/xxkx/wlgc/xxl
[root@xxl~]#lsuzz
ls:cannotaccessuzz:Nosuchfileordirectory
[root@xxl~]#

三.文件查看命令
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字符串,那么你可以这样来做:

[root@redhat 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行内容

[root@xxl~]#head-5install.log
Installinglibgcc-4.4.7-16.el6.x86_64
warning:libgcc-4.4.7-16.el6.x86_64:HeaderV3RSA/SHA1Signature,keyIDc105b9de:NOKEY
Installingsetup-2.8.14-20.el6_4.1.noarch
Installingfilesystem-2.4.30-3.el6.x86_64
Installingbasesystem-10.0-4.el6.noarch
[root@xxl~]#tail-5install.log
Installingipw2100-firmware-1.3-11.el6.noarch
Installingql23xx-firmware-3.03.27-3.1.el6.noarch
Installingipw2200-firmware-3.1-4.el6.noarch
Installingrootfiles-8.1-6.1.el6.noarch
***FINISHEDINSTALLINGPACKAGES***
[root@xxl~]#

四. 时间戳管理命令

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

参数:

-c :不创建不存在文件

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

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

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

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


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

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

2directories,4files
[root@xxl123]#touch-ca.txt//如果有a.txt,更新其时间戳,如果没有,也不要创建
[root@xxl123]#ls
12341.txt22.txt3.txt
[root@xxl123]#ls-l1.txt
-rw-r--r--.1rootroot9May415:041.txt
[root@xxl123]#touch-c1.txt
[root@xxl123]#ls-l1.txt
-rw-r--r--.1rootroot9May416:211.txt
[root@xxl123]#ls-lu1.txt
-rw-r--r--.1rootroot9May416:211.txt
[root@xxl123]#touch-a1.txt
[root@xxl123]#ls-lu1.txt
-rw-r--r--.1rootroot9May416:231.txt
[root@xxl123]#ls-l2.txt
-rw-r--r--.1rootroot9Apr505:172.txt
[root@xxl123]#touch-r2.txt1.txt
[root@xxl123]#ls-l2.txt
-rw-r--r--.1rootroot9Apr505:172.txt
[root@xxl123]#touch-t033012591.txt
[root@xxl123]#ls-l1.txt
-rw-r--r--.1rootroot9Mar3012:591.txt
[root@xxl123]#

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...