Linux初体验(三)


  • Shell

  • date

  • echo

  • alias

  • screen

  • 安装VMware Tools

Shell

用途说明

人机交互接口

Shell是Linux系统的用户界面,是用户操作Linux系统的一个直接工具,亦即人机交互接口,其既为用户提供了一个命令界面,也为用户命令提供解释执行的能力,故而Shell也称为Linux的命令解释器(command interpreter)。

在Shell中可执行的命令分为两类,内置命令与外部命令,所谓内置命令,即shell自带的命令,可通过enable命令启用或禁用;所谓外部命令,即系统某路径下对应的可执行程序文件;此路径可通过 which 和 whereis 进行查询。另外,type 命令可区分内置命令与外部命令。

当执行一个外部命令后,它会缓存到内存中,可用 hash 命令进行查看,hash -d 可清除指定的命令缓存,hash -r 则表示清除所有缓存。

date

用途说明

显示与修改时间

时间是一个永恒的话题,而 date 命令就是显示日期与时间的。在Linux系统中,时间分为系统时钟与硬件时钟,所谓系统时钟,就是由Linux内核通过CPU的工作频率而确定的;所谓硬件时钟,就是在主板上的BIOS所确定的时间,并由主板电池供电来维持运行。

常用参数

  1. +: 使用加号,自定义日期格式

  2. -u: --utc,以UTC形式显示时间与日期

  3. %D: 输出年/月/日的格式

  4. %F: 输出年-月-日的格式

使用示例

查看系统时钟

[root@centos7 ~]# date
Fri Jul 22 22:56:48 CST 2016

查看硬件时钟

[root@centos7 ~]# clock
Fri 22 Jul 2016 11:01:24 PM CST  -0.557614 seconds

或者使用~]# hwclock 也行!

值得注意的是,系统时钟与硬件时钟有时会不一致,此时我们需要以准确的一个为标准而调整另一个。比如我们将系统时间设置为2008-08-0808:00,以硬件时间为标准调整系统时间:

[root@centos7 ~]# date 080808082008
Fri Aug  8 08:08:00 CST 2008
[root@centos7 ~]# hwclock
Fri 22 Jul 2016 11:11:54 PM CST  -0.369548 seconds
[root@centos7 ~]# clock -s
[root@centos7 ~]# date
Fri Jul 22 23:12:15 CST 2016
[root@centos7 ~]#

当然,如何是要以系统时间为基准而调整硬件时间,则使用clock -w.

查看昨天的时间

[root@centos7 ~]# date -d yesterday
Thu Jul 21 23:22:14 CST 2016

查看全日期

[root@centos7 ~]# date +%Y-%m-%d
2016-07-22
[root@centos7 ~]# date +%F
2016-07-22
[root@centos7 ~]# 
[root@centos7 ~]# date +%m/%d/%Y
07/22/2016
[root@centos7 ~]# date +%D
07/22/16

查看这一年过了多少天

[root@centos7 ~]# date +%j
204

查看格林威治时间

[root@centos7 ~]# date -u
Fri Jul 22 15:28:10 UTC 2016

查看1970-01-01-00-00至今经过多少秒

[root@centos7 ~]# date +%s
1469201497

为啥要查这个时间,呵呵,1970年乃Unix诞生之日!既然说到时间,再看看cal吧!

查看日历

[root@centos7 ~]# cal 
      July 2016 
Su Mo Tu We Th Fr Sa    
               1  2
 3  4  5  6  7  8  9
 10 11 12 13 14 15 16
 17 18 19 20 21 22 23
 24 25 26 27 28 29 30
 31
 [root@centos7 ~]# cal 2 2020
   February 2020 
Su Mo Tu We Th Fr Sa   
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
 16 17 18 19 20 21 22
 23 24 25 26 27 28 29
 [root@centos7 ~]#
 
#再看一个有意思的事!
[root@centos7 ~]# cal 9 1752
   September 1752  
Su Mo Tu We Th Fr Sa 
       1  2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
[root@centos7 ~]#
#哇,时间怎么会“飞跃”呢?!

echo

用途说明

echo命令的主要作用为打印文本信息与确定环境变量的值

echo会将输入的字符串送往标准输出,而输出的字符串默认会加上换行号。

echo "$VAR_NAME": 变量会替换,双引号表弱引用

echo '$VAR_NAME': 变量不会替换,单绰号表强引用

常用参数

  1. -n: 取消自动换行

  2. -e: 打印转义字符

若字符串中出现以下字符,-e 选项不会将其当成一般的文字处理,而是以下面的方式进行特殊处理:

\a 发出警告声
\b 退格键
\c 最后不加上换行符号;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\\ 插入\ 字符;
\0nnn 插入nnn(八进制)所代表的ASCII字符
echo -e "\033[43;31mred color\033[0m"
\xHH 插入HH(十六进制)所代表的ASCII字符
  1. 命令扩展行:$( ) 或 ``

使用示例

取消自动换行

[root@centos7 ~]# echo liansirliansir
[root@centos7 ~]# echo -n liansirliansir[root@centos7 ~]#

对输出信息进行转义

[root@centos7 ~]# echo -e "\a"
#一块清脆的蜂鸣声从耳旁闪过
[root@centos7 ~]# echo -e "liansir\c"
liansir[root@centos7 ~]# 
[root@centos7 ~]# echo -e "lian\rsir"
sirn
[root@centos7 ~]# echo -e "lian\tsir"
lian	sir
[root@centos7 ~]# echo -e "lian\\sir"
lian\sir
[root@centos7 ~]# echo -e "lian\0110sir"
lianHsir
[root@centos7 ~]# echo -e "\033[43;31mred color\033[0m"
red color
#red color显示为黄底红字!
[root@centos7 ~]# echo -e "lian\xACsir"liansir

使用扩展行

把一个命令的输出打印给另一个命令的参数:$() 或 ``

[root@centos7 ~]# hostname
centos7.liansir
[root@centos7 ~]# echo "This system's name is $(hostname)"
This system's name is centos7.liansir
[root@centos7 ~]# echo " i am `whoami` "
 i am root

括号扩展

打印重复字符串的简要形式:{}

[root@centos7 ~]# echo file{1,3,5}
file1 file3 file5
[root@centos7 ~]# rm -f file{1,3,5}

查看环境变量的值

[root@centos7 ~]# echo $USER
root
[root@centos7 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@centos7 ~]#

alias

用途说明

设置命令别名

在linux系统中,如果命令太长,也不符合用户习惯,那么,我们可以用 alias 这个命令来进行命令的别名设置,以提高我们的工作效率。

常用参数

  1. alias 或 alias -p

    :显示所有的命令别名

  2. alias name='COMMAND'

    :别名定义格式

  3. alias name

    :显示指定的别名设置

  4. unalias name

    :取消指定的别名设置

使用示例

显示当前的别名设置

[root@centos7 ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@centos7 ~]# type alias
alias is a shell builtin

设置与取消别名

[root@centos7 ~]# alias clr='clear'
[root@centos7 ~]# unalias clr

由此可见,不管是内置命令还是外部命令,都是可以设置别名的,而在命令的执行中,内置命令的执行级别是高于外部命令的,那别名又处在什么等级呢?别名的执行等级是高于内置命令的。思考:如何证明呢?

screen

用途说明

远程会话管理

系统管理员有时需要SSH或telnet到Linux服务器,进行一些较耗时的常规操作,如系统备份、ftp传输等,一般我们会为这样的一个任务开启一个远程终端窗口。注意,期间不允许中断连接,否则相关任务则前功尽弃。另外,成功发起一个会话请求的前提条件是:同一用户登陆同一主机。

常用参数

  1. -S: sessionname,会话请求

  2. -ls: 显示所有已经打开的screen.

  3. -x: Attach to a not detached screen session,登陆没有分离的会话

  4. -r: sessionowner/[pid.tty.host],恢复某screen.

  5. Ctrl+a,d: 剥离当前screen.

使用示例

用户A发起会话请求

[root@centos7 ~]# screen -S sirhelp
[root@centos7 ~]#

用户B查看会话请求

[root@centos7 ~]# screen -ls
There are screens on:	12172.sirhelp	(Attached)
	12121.sirhelp	(Attached)
	12083.sirhelp	(Attached)
	3335.help	(Detached)
4 Sockets in /var/run/screen/S-root.
[root@centos7 ~]#

用户B登陆会话请求

[root@centos7 ~]# screen -x 12172
[root@centos7 ~]#

此时,用户A与用户B实现会话共享!即双方的界面操作对方都能看见!

wKiom1eTXPezlvtuAAEm4mYrycc046.png-wh_50

安装VMware Tools

用途说明

实现物理机与虚拟机之间的无缝操作

所谓无缝操作,如可以实现物理机与虚拟机之间的文件可以直接来回复制、粘贴等。

步骤

  1. 在VMware中,点击虚拟机,选择安装VMware Tools.

  2. 使用df命令,查看VMware Tools的位置

  3. 将VMwareTools-###.##.tar.gz复制到要安装的目录

  4. 进入自定义的安装目录,解压.tar.gz包,cd vmware-tools-distrib目录下

  5. 安装.pl文件,./ vmware-install.pl d (加上d可默认安装)

  6. 重启系统,reboot或init 3 然后 init 5

[root@centos6 ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2      100660656 4589248  90951408   5% /
tmpfs             953648     224    953424   1% /dev/shm
/dev/sda1         194241   39141    144860  22% /boot
/dev/sda3       20027260  333816  18669444   2% /testdir
/dev/sr0           72414   72414         0 100% /media/VMware Tools
[root@centos6 ~]# cd /media/VMware\ Tools/
[root@centos6 VMware Tools]# lsmanifest.txt     VMwareTools-10.0.6-3595377.tar.gz  vmware-tools-upgrader-64
run_upgrader.sh  vmware-tools-upgrader-32
[root@centos6 VMware Tools]# cp VMwareTools-10.0.6-3595377.tar.gz /testdir
[root@centos6 testdir]# tar xvf VMwareTools-10.0.6-3595377.tar.gz 
[root@centos6 testdir]# cd vmware-tools-distrib/
[root@centos6 vmware-tools-distrib]# ls
bin  doc  FILES    installer  vgauth             vmware-install.real.pl
caf  etc  INSTALL  lib        vmware-install.pl
[root@centos6 vmware-tools-distrib]# ./vmware-install.pl d

当出现以下Enjoy时,表明你已安装成功,重启系统,发现centos 6的界面变大了!

Enjoy,

--the VMware teamFound VMware Tools CDROM mounted at /media/VMware Tools. Ejecting device
/dev/sr0 ...

小练习

利用date命令显示前10与后20天的年月日

[root@centos7 ~]# date -d "-10 day" +%Y-%m-%d
2016-07-13
[root@centos7 ~]# date -d "+20 day" +%Y-%m-%d
2016-08-12

利用echo命令显示一个闪烁带下划线五彩的倒三角

[root@centos7 ~]# echo -e "\033[1;31;5;4m*******\n\e[0m \033[2;32;5;4m*****\n\e
[0m  \033[3;33;5;4m***\n\e[0m   \033[4;34;5;4m*\e[0m"
*******
 *****
  ***
   *
[root@centos7 ~]#


wKiom1eaGafR3ZfwAABxDS3I9Iw396.gif

2016.7.23