大数据兼云计算(王明龙)讲师-LINUX-DAY15-SHELL-常用操作

历史命令


查看历史命令
# history
# cat /root/.bash_history

查看历史命令总个数
# echo $HISTSIZE

修改历史命令的总个数
# vim /etc/profile
      HISTSIZE=1000
# source /etc/profile

清空历史命令
# history -c

开机登陆系统清除原有的历史命令
# vim ~/.bash_logout
history -c

依次使用上一次历史命令,在远程终端有可能不好用,在本地可用
Alt+.

!号加上历史命令使用数或关于历史命令的相关字符
# history
# !13
# !clea

别名

查看别名
# alias

临时定义别名
# alias 命令='命令集合'               //是单引,非双引

永久定义别名
# vim .bashrc

取消别名 
# unalias  命令

以红色显示要匹配的行
# cat /etc/passwd | grep --color root


举例
把命令改成我们希望的样子,例如我觉得每次输入head太麻烦,我可以用h代替head
[root@localhost /]# alias h=head
[root@localhost /]# h file 

需要注意的是,定义带选项的变量的时候,需要加引号
[root@localhost /]# alias h="head -2"
[root@localhost /]# h file 

取消别名用unalias
[root@localhost /]# unalias h
[root@localhost /]# h file 
bash: h: command not found


命令列表

a) 分号(;)
使用分号实现命令的连接
[root@localhost /]# cd /home/ ; ll
先执行分号之前的部分,再执行分号之后的部分,不管分号前的部分是否成功,后面的都执行

b) &&
也是实现命令的连接
先执行分号之前的部分,再执行分号之后的部分,但是只有前面的成功了,才执行后面的命令

单&符,是命令程序放在后台
# sleep 800 &


c) ||
也是实现命令的连接
先执行分号之前的部分,再执行分号之后的部分,但是只有前面的失败了,才执行后面的命令

举例
# dasfkjsdf || df -h || ls -l
# dasfkjsdf || kdjkf || ls -l

命令替换

a) !
输入history可以显示历史输入记录,使用“!+历史记录编号”可以执行该历史记录,!后面还可以加命令关键词

b) {}
[root@localhost /]# mkdir –p file/book{cc,dd,ee}

其实就是建立一个名为file目录,在file目录下面建立三个目录bookcc,bookdd,bookee
[root@localhost /]# ll file/
总计 24
drwxr-xr-x 2 root root 4096 03-31 10:42 bookcc
drwxr-xr-x 2 root root 4096 03-31 10:42 bookdd
drwxr-xr-x 2 root root 4096 03-31 10:42 bookee


举例
# touch a{1..10}
# rm -f a{1..10}
[root@manage ~]# touch a{b,c,d,e,f}
[root@manage ~]# echo "fkdsajfjksa" > ab
[root@manage ~]# echo "fkdsajfjksa" > ab
[root@manage ~]# echo "fkdsajfjksa" > ac
[root@manage ~]# echo "fkdsajfjksa" > ad
[root@manage ~]# echo "fkdsajfjksa" > ae
[root@manage ~]# echo "fkdsajfjksa" > af
[root@manage ~]# cat a{b,c,d,e,f}                 
fkdsajfjksa
fkdsajfjksa
fkdsajfjksa
fkdsajfjksa
fkdsajfjksa

I/O标准输入输出重定向

标准输入(STDIN):默认的设备是键盘,文件编号为0,用“<”表示
标准输出(STDOUT):默认的设备是屏幕,文件编号为1,用>或1>与>>表示
标准错误(STDERR):默认的设备是屏幕,文件编号为2,用2>表示

一.> 覆盖重定向:文件有则覆盖,无则创建。
# 命令  >   文件名                  // 把正确操作信息重定向到文件。
# 命令  2>  文件名                  // 把错误操作信息重定向到文件。
# 命令  &>  文件名                  // 把正错两种操作信息同时重定向到文件。
# 命令  >   /dev/null  2> 文件名    // 重定向错误信息,彻底删除正确信息。
# 命令  > 文件名  2>  /dev/null     // 重定向正确信息,彻底删除错误信息。
# 命令  >   文件名A   2>  文件名B   // 正确与错误信息分别重定向到不同文件里。

二.>> 追加重定向:文件有则追加到底部,无则创建。
# 命令  >>  文件名                  // 把正确操作信息追加到文件。
# 命令  2>>  文件名                  // 把错误操作信息追加到文件。
# 命令  &>>  文件名                  // 把正错两种操作信息同时追加到文件。
# 命令  >>   /dev/null  2>> 文件名  // 追加错误信息,彻底删除正确信息。
# 命令  >>  文件名  2>>  /dev/null  // 追加正确信息,彻底删除错误信息。
# 命令  >   文件名A   2>  文件名B   // 正确与错误信息分别追加到不同文件里

特殊符号

注意shell中几个符号的意义
------------------------------------------------------------
""    除了空格,其它字符都不改变意义
''     屏蔽单引号内所有字符的意义
``   反撇号内可使用执行命令
$()  针对多命令嵌套的变量值,反撇号无用
\     转意符,让有意义的变为无意义,无意义的变为有意义
$#  位置参数的数量。
$*$@  所有位置参数的内容。
$?   命令执行后返回的状态。
$$   当前进程的进程号。
$!    后台运行的最后一个进程号。
$0   当前执行的进程名。
$?   用于检查上一个命令执行是否正确。(在Linux中,命令退出状态为0表示该命令正确执行,任何非0值表示命令出错。)


举例:上面所有特殊符号例子
[root@wml ~]# vim s.sh
------------------------------------------------------
echo $0 \$0
echo $1 \$1
echo $2 \$2
echo $3 \$3
echo $# \$\#
echo $? \$\?
echo $$ \$\$
echo $* \$\*
sleep 800 &
echo "$!" \$\!
------------------------------------------------------
[root@wml ~]# ./sss aaaa asfsa fasdfsa
./sss $0
aaaa $1
asfsa $2
fasdfsa $3
3 $#
0 $?
5553 $$
aaaa asfsa fasdfsa $*
5554 $!




举例:""    除了空格,其它字符都不改变意义
[root@localhost ~]# aa=cc
[root@localhost ~]# echo "$aa" > b.sh
[root@localhost ~]# cat b.sh
cc

举例:''     屏蔽单引号内所有字符的意义
[root@localhost ~]# echo '$aa' > b.sh   
[root@localhost ~]# cat b.sh         
$aa

举例:``   反撇号内可使用执行命令
#/bin/bash
time=`/bin/date +%Y%m%d-%H%M%S`
/bin/tar -zcvpPf /backup/officialSite_${time}.tar.gz /usr/local/tomcat/webapps/officialSite >/dev/null 2>&1
/bin/tar -zcvpPf /backup/mall_${time}.tar.gz /usr/local/tomcat/webapps/mall >/dev/null 2>&1

举例:$()  针对多命令嵌套的变量值,反撇号无用
# a=$(cat /etc/passwd;ls -a;ll)
# echo $a
# ls -a $(ll $(cat /etc/passwd))

举例:\  转意符,让有意义的变为无意义,无意义的变为有意义
# cat /etc/passwd &\& ls -l


$? 与 exit 01 相同都是上面内容 执行正确 为0,否则为1 

猜你喜欢

转载自blog.csdn.net/wangminglong1989/article/details/81509071