马哥教育网络班22期第一周课程练习2-未闻花名

语法:export [-fnp][变量名称]=[变量设置值]

补充说明:在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。

参数:

-f 代表[变量名称]中为函数名称。

-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。

-p 列出所有的shell赋予程序的环境变量。 

 一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而export可以向后面的shell传递变量的值。当一个shell脚本调用并执行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本。登录到系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并运行shell脚本程序。运行shell脚本程序时,系统将创建一个子shell。此时,系统中将有两个shell,一个是登录时系统启动的shell,另一个是系统为运行脚本程序创建的shell。当一个脚本程序运行完毕,它的脚本shell将终止,可以返回到执行该脚本之前的shell。从这种意义上来说,用户可以有许多shell,每个shell都是由某个shell(称为父shell)派生的。在子shell中定义的变量只在该子shell内有效。如果在一个shell脚本程序中定义了一个变量,当该脚本程序运行时,这个定义的变量只是该脚本程序内的一个局部变量,其他的shell不能引用它,要使某个变量的值可以在其他shell中被改变,可以使用export命令对已定义的变量进行输出。export命令将使系统在创建每一个新的shell时定义这个变量的一个拷贝。这个过程称之为变量输出。

扩展阅读:linux 的export 和source命令

source命令(从 C Shell 而来)是bash shell的内置命令。点命令,就是一个点符号,(从Bourne Shell而来)是source的另一名称。这两个命令都以一个脚本为参数,该脚本将作为当前shell的环境执行,即不会启动一个新的子进程。所有在脚 本中设置的变量将成为当前Shell的一部分。同样的,当前脚本中设置的变量也将作为脚本的环境,source(或点)命令通常用于重新执行刚修改的初始化文件,例如,在登录后对 .bash_profile 中的 EDITER 和 TERM 变量做了修改,则可用source命令重新执行 .bash_profile 中的命令而不用注销并重新登录。象 .bash_profile 或其它类似的Shell脚本这样,文件无需可执行权限即可用source或点命令执行。

source命令的一个妙用

在编译核心时,常常要反复输入一长串命令,如果把这些命令做成一个文件,让它自动按顺序执行,会很方便。用source命令可以办到这一点。它的作用就是把一个文件的内容当成是shell来执行。

pwd 命令来查看”当前工作目录“的完整路径。 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录。 

命令格式:

pwd [选项]

命令功能:

查看”当前工作目录“的完整路径

常用参数:

一般情况下不带任何参数

如果目录是链接时:

格式:pwd -P  显示出实际路径,而非使用连接(link)路径。 

history命令

用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件。 该命令单独使用时,仅显示历史命令

语法 history(选项)(参数) 

选项 

-c:清空当前历史命令; 

-a:将历史命令缓冲区中命令写入历史命令文件中; 

-r:将历史命令文件中的命令读入当前历史命令缓冲区;

-w:将当前历史命令缓冲区命令写入历史命令文件中。 

参数 n:打印最近的n条历史命令。 

实例 

1、使用HISTTIMEFORMAT在历史中显示TIMESTAMP

如果出于审查命令的目的,和命令一起显示时间戳将会很有帮助,如下所示。

# export HISTTIMEFORMAT='%F %T '

[注:你也可以设置alias语句来查看最近的历史命令]

alias h1='history 10'

2、用Ctrl + R搜索历史命令

这应该最常使用的history特性,你只要用关键字搜索一下历史命令然后重新执行这条命令而不需要将整条命令再输一遍。方法是:按下Ctrl +R然后输入关键字。 

(reverse-i-search)`red`: cat/etc/redhat-release

[注:当看到你要的命令后按回车键,就可以重新执行这条命令了]

而有的时候你需要在执行一条历史命令之前编辑它.比如,你可以像下面那样搜索“httpd”,终端显示历史命令“service httpd stop”,选择它把“stop”改为“start”然后执行它

[注: 在命令提示符下按 Ctrl+R , 将会显示提示符‖reverse-i-search‖]

(reverse-i-search)`httpd`: service httpd stop

[注: 看到你想要的命令后按下左键或者右键,就可以在执行这条命令之前编辑它了]

# service httpd start

3、四种不同的方法快速执行之前的命令

有时出于某些原因你需要执行之前的命令,下面的四种方法可以用来重复最后执行的命令:

1.用向上键(up arrow )查看上条命令,按回车执行。

2.在命令行中输入!!并按回车。

3.在命令行中输入!-1并按回车。

4.按Ctrl+P显示上条命令,按回车执行。

4、执行历史命令中的特定命令

如果你想再次执行第四条命令,执行!4即可

5、执行以特定字开头的历史命令

输入!和你要重新执行的命令的前几个字母。在下面的例子中,输入!ps,回车,执行历史命令中以“ps”开头的“psaux | grep yp”

#!ps

6、用HISTSIZE控制历史命令的总数

把下面的两行添加到.bash_profile然后重新登录bash(译者注:用source .bash_profile即可)查看有什么变化,在这个例子中,bash命令历史记录中只能储存450条命令。

#vi ~/.bash_profile

HISTSIZE=450

HISTFLESIZE=450

7、使用HISTFILE改变历史文件名

默认情况下,命令历史被储存在.bash_history文件中,把下面的一行添加到.bash_profile文件中,重新登录shell,则.commandline_warrior文件将取代.bash_history文件用来储存历史命令。你可以使用这个命令来追踪不同终端中执行的命令,届时只需要将不同终端中所执行的命令保存在不同的历史文件中即可。

#vi ~/.bash_profile

HISTFILE=/root/.commandline_warrior

8、使用HISTCONTROL来消除命令历史中的连续重复条目

设置HISTCONTROL为ignoredups,来消除重复命令:

9、使用HISTCONTROL在整个历史中去除重复命令

上面的ignoredups去除连续重复的命令,要消除整个命令历史中的重复命令,把HISTCONTROL设置成erasedups

#export HISTCONTROL=erasedups

10、使用HISTCONTROL强制history忽略某条特定命令

你可以将HISTCONTROL设置为ignorespace并在该命令前加上一个空格来指示history忽略这条命令。

#export HISTCONTROL=ignorespace

11、使用c选项清除所有的历史命令

#history –c

12、替换命令历史中的内容

当你搜索历史命令时,你可能希望执行一个与刚刚查找到的历史命令具有相同的参数的命令。 在本例中,vi之后的"!!:$" 可以将前一个命令的参数做为当前命令的参数。

#ls anaconda-ks.cfg

anaconda-ks.cfg

# vi !!:$

vi anaconda-ks.cfg

在下面的例子中,紧跟在vi后的参数“!^”把上一个命令的第一个参数传递给当前命令。

#cp anaconda-ks.cfg anaconda-ks.cfg.bak

anaconda-ks.cfg

# vi !^

vi anaconda-ks.cfg

13、替换特定命令的特定参数

在下例中,!cp:2 在命令历史中查找以cp开头的命令,并将其第二个参数做为当前命令(ls -l)的参数。

#cp ~/longname.txt /really/a/very/long/path/long-filename.txt

# ls -l !cp:2

ls -l /really/a/very/long/path/long-filename.txt

在下面例子中“!cp:$”寻找先前以cp为开头的命令,并把该条指令的最后一个参数(在这个例子中依旧是第二个参数)替换到“ls –l”中。

#ls -l !cp:$

ls -l /really/a/very/long/path/long-filename.txt

14、用HISTSIZE禁用history

把HISTSIZE设为0即可。

15、用HISTIGNORE让history在存储时忽略某些指令

有时你不想在记录里看到诸如“pwd”,“ls”之类的基本指令,可以用HISTIGNORE忽略这些指令。

注意在HISTIGNORE中添加“ls”,只忽略“ls”不忽略“ls –l”。一定要准确的写出要忽略的的指令。

#export HISTIGNORE=“pwd:ls:ls –ltr: ”

shutdown命令简介:

该命令可以安全关闭或者重新启动系统。shutdown命令不仅可以关闭系统、也可以重启Linux系统。

命令语法:

/sbin/shutdown [-t sec] [-arkhncfFHP] time [warning-message]

命令参数:

参数

长参数

描叙

-a

Use /etc/shutdown.allow.

-c

中断关机:当执行"shutdown -h 12:00"指令时,只要按+键就可以中断关机的指令

-f

重新启动时不进行磁盘检测(fsck)

-F

重新启动时进行磁盘检测(fsck)

-h

关闭电源

-k

模拟关机(不是真的关机),只是向登录者发送警告信息出去!

-n

不调用init进程进行关机,而是强行关机

-r

关闭系统然后重新启动,类似于Windows平台restart

-t

延迟关机的时间

-w

仅做测试,并不真的将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文件

–help

显示命令在线帮助

使用示例:

1: 查看reboot命令的帮助信息

[root@db-server ~]# shutdown –help
Usage:    shutdown [-akrhHPfnc] [-t secs] time [warning message]
                  -a:      use /etc/shutdown.allow
                  -k:      don't really shutdown, only warn.
                  -r:      reboot after shutdown.
                  -h:      halt after shutdown.
                  -P:      halt action is to turn off power.
                  -H:      halt action is to just halt.
                  -f:      do a 'fast' reboot (skip fsck).
                  -F:      Force fsck on reboot.
                  -n:      do not go through "init" but go down real fast.
                  -c:      cancel a running shutdown.
                  -t secs: delay between warning and kill signal.
                  ** the "time" argument is mandatory! (try "now") **

2:马上关闭Linux系统,其中 now 相当于时间为 0 的状态

# shutdown -h now

3:系统2分钟后重新启动,其中+m表示几分钟后关机或开机。

# shutdown -r +2

4:设置系统在那个时间点关机

# shutdown -h 12:30
# shutdown -h 12:30 &

最好是使用命令&将关机命令至于后台处理。不影响当前其它操作。

设置多久时间后执行shutdown命令。时间参数有hh:mm或+m两种模式。hh:mm格式表示在几点几分执行shutdown命令。例如 “shutdown 10:45”表示将在10:45执行shutdown.+m表示m分钟后执行shutdown.比较特别的用法是以now表示立即执行shutdown. 值得注意的是这部分参数不能省略。另外,需要注意如果现在已经22:30,你执行了shutdown -h 22:00 & 那么第二天才会关机。

5:将前一个shutdown命令取消息

如下所示,执行了下面命令让Linux在12:30关机,但是如果发现这个时间点不合适,那么可以使用CTRL+C取消

也可以在另外一个命令窗口执行下面命令 shutdown -c

6:向所有登录的用户发出信息

[root@db-server ~]# shutdown -k "now"

7:重新启动时不进行磁盘检测

[root@db-server ~]# shutdown -fr now

8:在多少秒后关闭系统并给用户发送提示信息

[root@db-server ~]# shutdown -t 10 -h now "System will shutdown 10 sencond later"

2)reboot,halt与poweroff

  还有三个命令可以进行重新启动与关机的任务,那就是reboot, halt, poweroff。 其实这三个命令调用的函式库都差不多,所以当你使用『man reboot』时,会同时出现三个命令的用法给你看,如下图所示:  

马哥教育网络班22期第一周课程练习2-未闻花名

  3)其他的关机命令

  Linux共有七种运行等级

  • run level 0:关机

  • run level 3:纯文本模式

  • run level 5:含有图形接口模式

  • run level 6:重新启动

       那如何切换各模式呢?可以使用init这个命令来处理!也就是说,如果你想要关机的话,除了上述的shutdown -h now以及poweroff之外,你也可以使用如下的命令来关机:# init 0

hwclock(hardware clock)

功能说明:显示与设定硬件时钟。

语  法:hwclock [–adjust][–debug][–directisa][–hctosys][–show][–systohc][–test]

[–utc][–version][–set –date=<日期与时间>]

补充说明:在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。

参  数:

  –adjust  hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用–adjust参数,可使hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟。 

  –debug  显示hwclock执行时详细的信息。 

  –directisa  hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存取硬件时钟。 

  –hctosys  将系统时钟调整为与目前的硬件时钟一致。 

  –set –date=<日期与时间>  设定硬件时钟。 

  –show  显示硬件时钟的时间与日期。 

  –systohc  将硬件时钟调整为与目前的系统时钟一致。 

  –test  仅测试程序,而不会实际更改硬件时钟。 

  –utc  若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作。 

  –version  显示版本信息。

使用示例

示例一 hwclock命令与clock命令是一个东西

# type -a hwclock

示例二 显示硬件时钟

# hwclock

# hwclock -r

# hwclock –show

示例三 修改日期并同步到硬件时钟

# date

# date 11062112     <== 格式 mmddHHMM,即 月日时分

# hwclock -w

# hwclock

2010年11月06日 星期六 21时12分13秒  -0.648818 seconds

注:要使系统时间准确,最好还是使用ntp方式。

示例四 使用ntpdate命令从网络同步时间,再同步到硬件时钟

ntpdate命令是使用NTP协议来从网络同步时间的命令。NTP=Network Time Protocol 网络时间协议。

# ntpdate 0.rhel.pool.ntp.org

# hwclock -w

扩展阅读一:hwclock 使用

Linux机器上的时间比较复杂,机器里有两个时钟:硬件时钟和系统时钟

硬件时钟从根本上讲是CMOS时钟;

系统时钟是由内核维护的,它是从1969年末(即传说中的标志Unix时代开端的那个拂晓)开始算起的累积秒数。

在Linux系统中,起作用的是系统时钟。在启动时,它靠读取硬件时钟获得计时起点,而不是靠记忆计时。你可以通过BIOS修改系统硬件时钟,或者如果你不想重起机器,那就用hwclock命令。当你使用hwclock命令调整硬件时间很多次以后,hwclock就会获取你的时钟推移速率,然后就会把这个信息存在/etc/adjtime里边。以后,你就可以用它来随时更新你的硬件时间,用一条下面的命令:

hwclock –adjust

硬件时钟通常被设置成全球标准时间(UTC),而将时区信息保存在/usr/share/lib/timezone (或者在某些系统中可能是/usr/local/timezone)目录下某个适当的文件中,然后用一个符号链接文件/etc/localtime指向它。

查看硬件时钟用命令:

hwclock –show 或者 hwclock -r

重置硬件时钟用:

#date 042817252009.00 //设置系统时钟 2009 年 04 月 28 日 星期四 17:25:00 CST

#hwclock -w

如果需要修改你的时区信息,可以使用tzset命令,如果你系统中没有这条命令,那可以用类似下面的操作:

ln -s /etc/localtime /usr/share/zoneinfo/US/Pacific

实例:

板子上电

#date 042817252009.00 //设置系统时钟 2009 年 04 月 28 日 星期四 17:25:00 CST

#hwclock -w //将系统时钟写入硬件时钟

#hwclock -r //看时间是否在变化

如果没有出错, 就已经把2009 年 04 月 28 日 星期四 17:25:00 CST 写入RTC chip了

为了使系统时间和RTC时间同步,可以在初始化文件中添加命令

hwclock -s

使每次开机时读取RTC时间,并同步给系统时间。

在根文件系统:usr/etc/rc.local中添加

/sbin/hwclock -s

断电

等2分钟在上电

#hwclock -r //看时间是否同步,即使与2分钟后的时间相同

扩展阅读二:linux中时间设置date、hwclock、clock

Linux有两个时钟系统,但Linux并没有默认哪个时钟系统。当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。从Linux启动过程来看,系统时钟和硬件时钟不会发生冲突,但Linux中的所有命令(包括函数)都是采用的系统时钟设置。

 1.在虚拟终端中使用date命令来查看和设置系统时间

    设置系统时钟的操作:

    # date 091713272003.30

    通用的设置格式:

    # date 月日时分年.秒

    2.使用hwclock或clock命令查看和设置硬件时钟

    查看硬件时钟的操作:

    # hwclock –show 或

    # clock –show

    2003年09月17日 星期三 13时24分11秒 -0.482735 seconds

    设置硬件时钟的操作:

    # hwclock –set –date="09/17/2003 13:26:00"

    或者

    # clock –set –date="09/17/2003 13:26:00"

    通用的设置格式:hwclock/clock –set –date=“月/日/年时:分:秒”。

    3.同步系统时钟和硬件时钟

hwclock:硬件时钟 

-w:同步系统时间到硬件时间 

-s:同步硬件时间到系统时间

date命令的功能是显示和设置系统日期和时间。 

输入date 查看目前系统时间。

修改时间需要 date -功能字符 修改内容

命令中各选项的含义分别为: 

-d datestr, –date datestr 显示由datestr描述的日期 

-s datestr, –set datestr 设置datestr 描述的日期 

-u, –universal 显示或设置通用时间

时间域 

%H 小时(00..23) 

%I 小时(01..12) 

%k 小时(0..23) 

%l 小时(1..12) 

%M 分(00..59) 

%p 显示出AM或PM 

%r 时间(hh:mm:ss AM或PM),12小时 

%s 从1970年1月1日00:00:00到目前经历的秒数 

%S 秒(00..59) 

%T 时间(24小时制)(hh:mm:ss) 

%X 显示时间的格式(%H:%M:%S) 

%Z 时区 日期域 

%a 星期几的简称( Sun..Sat) 

%A 星期几的全称( Sunday..Saturday) 

%b 月的简称(Jan..Dec) 

%B 月的全称(January..December) 

%c 日期和时间(Wed May 18 10:27:35 PDT 2016) 

%d 一个月的第几天(01..31) 

%D 日期(mm/dd/yy) 

%h 和%b选项相同 

%j 一年的第几天(001..366) 

%m 月(01..12) 

%w 一个星期的第几天(0代表星期天) 

%W 一年的第几个星期(00..53,星期一为第一天) 

%x 显示日期的格式(mm/dd/yy) 

%y 年的最后两个数字( 2016则是16) 

%Y 年(例如:1970,2016等)

样例: date +%Y-%m-%d\ %H:%M:%S 显示:2016-05-18 10:20:23 

只有超级用户才能用date命令设置时间,一般用户只能用date命令显示时间。

原创文章,作者:未闻花名,如若转载,请注明出处:http://www.178linux.com/34508

(0)
未闻花名未闻花名
上一篇 2016-08-15
下一篇 2016-08-15

相关推荐

  • N25-第三周作业

    第三周 一、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@zf ~]# who | cut -d " " -f1  | sort | uniq -…

    Linux干货 2016-12-20
  • 第六周作业

    一、Vim编辑器练习: 用Vim编辑器做下面的练习,我的Linux系统(CentOS 6.9)安装了精简版系统,没有Vim编辑器。 a、设置Yum源为网易开源镜像站。 b、选择对应“镜像名”,到对应的“CentOS使用说明”里面查看内容 c、看着CentOS说明操作就可以了 d、使用说明 首先备份/etc/yum.repos.d/CentOS-Base.re…

    Linux干货 2017-08-22
  • 第七周

    第七周 1 创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动…

    Linux干货 2017-02-20
  • N25-第八周博客作业

    1、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态; 在线的主机使用绿色显示;不在线的主使用红色显示; #!/bin/bash # ping探测主机在线状态 for i in `seq 254`;do if ping -c 1 172.16.0.$i &> /dev/null;th…

    Linux干货 2017-02-23
  • 搭建简单的svn服务器

        svn在版本控制方面还是挺有用的。坑运维的人中就有研发,出补丁或版本的时候很坚定的说“升吧,没问题”,结果升上去后就会狂报错。所以运维的要在打补丁,尤其是改动很大的时候一定要把后路想好。否则会长时间的影响业务。svn就有一个很好的机制–回退(当然你也可以事先备份下),可以回退到之前的某个时间节点,操作很方便的。当然sv…

    Linux干货 2015-11-18