Linux终端:

 

whoami命令:

用来显示当前登录到系统的账户。

[root@en /]# whoami
root
[root@en /]#

 

who命令:(注意:su –过去的不是登陆用户,不会显示。)

登录到当前系统的用户有哪些。

[root@en ~]# who
root    tty1         2014-11-20 09:04 (:0)
root    pts/0        2014-11-20 09:06(192.168.20.92)
dwzhang pts/1        2014-11-20 13:34(192.168.20.92)
zhang1  pts/2        2014-11-20 10:09(192.168.20.92)
[root@en ~]#

一共三个字段:

第一段表示用户名称。

第二段表示用户从哪个终端登录进来的。

第三段表示登录时间。

第四段表示注释,来源。如(192.168.20.92)

 

其中第二段的意义:

linux终端类型:

物理终端: /dev/console

虚拟终端: /dev/tty(1,6)  (命令行终端登陆)(tty1:代表第一个虚拟终端,tty5:第五个)

:串行终端。

模拟终端: /dev/pts/#  (远程登录的终端,图形界面终端)

图形终端.

显示系统当前运行级别:

[root@en ~]# who –r    
        run-level 5  2014-12-22 09:38
[root@en ~]#

上面显示说明:

[root@en ~]# who -H
NAME    LINE         TIME             COMMENT
root    tty1         2014-12-22 09:47 (:0)
root    pts/0        2014-12-22 10:03(192.168.20.92)
[root@en ~]#

 

w命令:(显示信息比who更详细)

登录到当前系统的用户有哪些和在干什么。

包括系统运行多长时间。


last命令:

列出目前与过去登入系统的用户相关信息。

[root@en ~]# last
root    pts/3        :0.0             Thu Nov 20 14:00   still logged in  
dwzhang pts/1        192.168.20.92    Thu Nov 20 13:34   still logged in  
dwzhang pts/1        192.168.20.92    Thu Nov 20 11:34 - 13:33  (01:59)   
[root@en ~]# last -2     (显示几条)
root    pts/3        :0.0             Thu Nov 20 14:00   still logged in  
dwzhang pts/1        192.168.20.92    Thu Nov 20 13:34   still logged in  
 
wtmp begins Thu Sep 11 21:26:19 2014
[root@en ~]#
其实last读取信息的文件为:
/var/log/wtmp文件。
[dwzhang@en ~]$ file /var/log/wtmp 
/var/log/wtmp: data
[dwzhang@en ~]$

 

lastb命令:

显示用户错误的登录尝试。

读取信息的文件为:/var/log/btmp文件。
[root@cnyum ~]# ll -d /var/log/btmp
-rw-------. 1 root utmp 0 1月
[root@cnyum ~]# file /var/log/btmp 
/var/log/btmp: empty
[root@cnyum ~]#
 
[root@en ~]# lastb     
dwzhang ssh:notty    192.168.20.92    Thu Nov 20 13:33 - 13:33  (00:00)   
dwzhang ssh:notty    192.168.20.92    Tue Nov 18 17:35 - 17:35  (00:00)   
 
btmp begins Sat Nov 15 11:08:36 2014
[root@en ~]#
[root@en ~]# lastb -2       (只显示最近2次错误登录的)
dwzhang ssh:notty    192.168.20.92    Thu Nov 20 13:33 - 13:33  (00:00)   
dwzhang ssh:notty    192.168.20.92    Tue Nov 18 17:35 - 17:35  (00:00)   
 
btmp begins Sat Nov 15 11:08:36 2014
[root@en ~]#

 

lastlog命令:

列出用户最后登录的时间和登录终端的地址,如果此用户从来没有登录,则显示:**Never logged in**

:显示特定用户。

[root@en ~]# lastlog
Username         Port     From             Latest
root             pts/0    192.168.20.92    Thu Nov 20 14:21:43 +0800 2014
bin                                        **Never logged in**
[root@en ~]# lastlog -u dwzhang    (显示dwzhang用户最近的登录信息)
Username         Port     From             Latest
dwzhang          pts/1    192.168.20.92    Thu Nov 20 13:34:03 +0800 2014
[root@en ~]#

basename命令:(取基名)

取得路径的基名,(文件名)脚本中常用!

为basename指定一个路径,basename命令会删掉所有的前缀包括最后一个slash(‘/’)字符,然后将字符串显示出来。

[root@en ~]# basename /etc/abc/me
me
[root@en ~]# basename /da/wei/aaa
aaa
[root@en ~]#

$0

代表脚本路径及名称。

取得脚本名称:(执行脚本的路径及名称)

[dwzhang@public test]$ vim bane.sh
 
#!/bin/bash
#
echo "file is `basename $0`"
[dwzhang@public test]$ bash bane.sh 
file is bane.sh
[dwzhang@public test]$


mail命令:

收邮件命令。

大多数系统都会默认安装一个邮件服务的,这是系统有自动任务,要有什么问题可以自动发邮件给用户。

当前系统每个用户都有自己的邮箱。

[root@en mail]# pwd
/var/spool/mail
[root@en mail]# ll
total 28
-rw-rw----. 1 dwzhang mail   535 Nov 20 14:47 dwzhang
-rw-------. 1 root    mail    20375 Dec 23 09:25 root
-rw-rw----. 1 rpc     mail    0 Sep 11 21:19 rpc
-rw-rw----. 1 user1   mail    0 Dec  4 11:01 user1
-rw-rw----. 1 user3   mail    0 Dec  4 11:01 user3
-rw-rw----. 1 zhang   mail    0 Sep 16 17:10 zhang
-rw-rw----. 1 zhang1  mail    0 Sep 15 13:51 zhang1
[root@en mail]#

查看自己的邮件:

[root@en ~]# mail       (q退出)
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/spool/mail/root": 21messages 21 new
>N 1 Anacron               Fri Sep 1210:52  17/672   "Anacron job 'cron.daily' on l"
 N  2Anacron               Tue Sep 1610:41  17/552   "Anacron job 'cron.daily' on e"
 N  3Anacron               Wed Sep 1709:38  17/552   "Anacron job 'cron.daily' on e"
& q (退出)
[root@en ~]#

 

如何给系统用户发邮件:

-s :指定主题。
[root@en ~]# echo "it meeting 18:01" | mail -s"it meeting" dwzhang  
You have mail in /var/spool/mail/root
[root@en ~]#
说明:
echo "it meeting 18:01" :要文。
mail -s "it meeting" :主题。
dwzhang :收件人。
用dwzhang用户登录查看mail:
[dwzhang@en ~]$ mail
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/spool/mail/dwzhang": 1message 1 new
>N 1 root                  Thu Nov 2014:44  18/524   "it meeting"
& 1
Message 1:
From root@en.com  Thu Nov 20 14:44:59 2014
Return-Path: <root@en.com>
X-Original-To: dwzhang
Delivered-To: dwzhang@en.com
Date: Thu, 20 Nov 2014 14:44:59 +0800
To: dwzhang@en.com
Subject: it meeting
User-Agent: Heirloom mailx 12.4 7/29/08
Content-Type: text/plain; charset=us-ascii
From: root@en.com (root)
Status: R
 
it meeting 18:01
 
& q
Held 1 message in /var/spool/mail/dwzhang
You have mail in /var/spool/mail/dwzhang
[dwzhang@en ~]$

hostname(临时改变主机名)

如果当前主机的主机名不是een.com,就将其改名为een.com

[root@en ~]# [ `hostname` != 'een.com' ] && hostnameeen.com
[root@en ~]# hostname
een.com
[root@en ~]#
如果当前主机的主机名是een.com,就将其改名为en.com:
[root@en ~]# hostname
een.com
[root@en ~]# [ `hostname` == 'een.com' ] &&hostname en.com 
[root@en ~]# hostname
en.com
[root@en ~]#
如果当前主机的主机名为空,或者为(none),或者为localhost,就将其改为en.com:
[root@en ~]# [ -z `hostname` ] || [ `hostname` == '(none)'-o `hostname` == 'localhost' ] && hostname en.com

 

RANDOM:

生成随机数。

[root@en ~]# echo $RANDOM 
28449
[root@en ~]# echo $RANDOM 
28792
[root@en ~]# echo $RANDOM 
27
[root@en ~]# echo $RANDOM 
31155
[root@en ~]# echo $RANDOM 
3466
[root@en ~]#

linux系统中随机数生成器:random和urandom

[root@en ~]# ll /dev/random 
crw-rw-rw-. 1 root root 1, 8 Nov 20 09:01/dev/random
[root@en ~]#
[root@en ~]# ll /dev/urandom 
crw-rw-rw-. 1 root root 1, 9 Nov 20 09:01/dev/urandom
[root@en ~]#
 
[chengmo@centos5  shell]$ head -1 /dev/urandom
ù…KTtanV1&“2íùU“F|_ ”mEeUrá=JˉTAìAúRtó

#读一行,怎么是乱码呢?其实它是通过二进制数据保存实时数据的,那么我们怎么样把它变成整型数据呢?

 

[chengmo@centos5 ~/shell]$ head -200/dev/urandom | cksum
1615228479 50333

#由于urandom的数据是非常多,不能直接通过cat读取,这里取前200行,其实整个数据都是变化的,取多少也一样是唯一的。

#cksum 将读取文件内容,生成唯一的表示整型数据,只有文件内容不变,生成结果就不会变化,与php crc函数

 

[chengmo@centos5  shell]$ head -200 /dev/urandom | cksum | cut -f1 -d" "
484750180

#cut 以” “分割,然后得到分割的第一个字段数据

 

写一个脚本:

利用RANDOM生成10个随机数,并找出其中的最大值和最小值:

首先生成10个随机数:

[root@en script]# vim ransuiji.sh

#!/bin/bash

#

for I in {1..10}; do       (生成10个随机数给I变量)

处理前面带逗号,最后不带逗号方法)

如果I小于9,就带逗号)

 else

否则不带逗号)

  fi

done
[root@en script]# bash ransuiji.sh
28753,27027,14816,19248,26180,10660,30036,5455,4093,19292
[root@en script]#

在从中取出最大值:

[root@en script]# vim ransuiji.sh 
 
#!/bin/bash
#
declare -i MAX=0      (定义MAX为整型变量)
 
for I in {1..10}; do
把随机数给变量MYRAN)
如果I小于9,)
就带逗号)
 else
就不带逗号)
  fi
如果MYRAN大于等于)
done
 
 echo $MAX
[root@en script]# bash ransuiji.sh
1677,14322,3511,6718,1317,29824,6565,15470,24082,31254
31254
[root@en script]#

 

在从中取出最大值和最小值:

[root@en script]# vim ransuiji.sh 
 
#!/bin/bash
#
declare -i MAX=0
declare -i MIN=0     (定义MIN为整型变量)
 
for I in {1..10}; do
 MYRAN=$RANDOM
如果$I等于1,就赋值MIN=$MYRAN)
  if[ $I -le 9 ]; then
  echo -n "$MYRAN,"
 else
  echo "$MYRAN"
  fi
  [$MYRAN -gt $MAX ] && MAX=$MYRAN
  [$MYRAN -lt $MIN ] && MIN=$MYRAN
done
 
 echo $MAX,$MIN
[root@en script]# bash ransuiji.sh
4402,4596,13713,29122,30765,29253,14581,24367,7097,10521
30765,4402
[root@en script]#



转载于:https://blog.51cto.com/153744/1670480