回顾:
shell: type,which, 环境变量PATH
[[email protected] ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
引用变量:${变量名}
变量:命名的内存空间,在shell中直接可以找到
使用帮助:
# help 命令
# 命令 --help
# man [section] 命令
1-8: 1, 8, 5
1G:翻到第一行
G:翻到最后一行
q
# info
# 应用程序自带的文档:README, INSTALL, /usr/share/doc
# 发行版的官方文档
命令的使用格式:
命令 选项 参数
export LANG=en
新课程:
系统管理类的命令:
shutdown [option]... TIME
-r: 重启
-h:关机
-c:取消重启或关机命令 shutdown -c
时间格式:
now
+#: #分钟以后
hh:mm 在指定时间进行关机
reboot
halt -p
poweroff
日期时间管理类命令:
date(系统时钟), hwclock(硬件时钟)
# date
# date MMDDhhmm[CC]YY.ss 月日时分年.秒
[[email protected] ~]# date 100711032015.22
Wed Oct 7 11:03:22 EDT 2015
使用这个可以直接设置系统时间
# date [+FORMAT]
%Y:四位年份
%y: 2位年份
%m: 月
%M:分
%d: 日
%h: 月份
%H: 时
%S:秒
%D: 日期
%F: 日期
[[email protected] ~]# date +%F
2015-10-07
[[email protected] ~]# date +%Y-%m-%d
2015-10-07
[[email protected] ~]# date +%F-%H-%M-%S
2015-10-07-11-31-04
时间都是大写,日期都是小写。
unix元年:1970-01-01 00:00:00
%s: timestamp
[[email protected] ~]# date +%s
1444232025
#cal 查看日历
Linux有两个时钟:
硬件时钟:刚开机时使用
软件时钟:开机时读取硬件时钟
hc
sys
hwclock可以设定两个时钟同步:
-s: 以硬件时钟为准, --hctosys
-w: 以系统时钟为准, --systohc
[[email protected] ~]# hwclock ;date
Sat Oct 3 12:02:47 2015 -0.787231 seconds
Wed Oct 7 11:12:49 EDT 2015
[[email protected] ~]# hwclock -w
[[email protected] ~]# hwclock ;date
Wed Oct 7 11:13:04 2015 -0.424462 seconds
Wed Oct 7 11:13:03 EDT 2015
总结:man, info, help, date, hwclock, cal, shutdown, reboot, halt, poweroff, type, cd, which, dirname, basename, who, which, whatis, makewhatis, echo, hash, tty
/: 根分区,根文件系统,rootfs,关联分区进行挂载和卸载操作。
文件和目录管理类的命令:
当前所在的目录:工作目录
家目录,主目录 cd ~可以实现回到家目录
shell的命令行展开:能够把一个特殊字符换成别的字符;
~: 指定用户的家目录;
{,}: 展开为多个条目;
x/{a,b} = x/a, x/b
目录:
cd ~[username] 回到某个用户的目录,只有root可以操作
cd -:回到上一次所在目录;
/usr/share/doc/yum-3.2.1
cd - = /usr/share/doc
cd - = /usr/share/doc/yum-3.2.1
cd -
路径:
相对路径中:
.: 当前目录
..: 父目录
pwd: print working directory
mkdir: 创建目录
-p: 先创建父目录(parent);
-v: 显示详细信息;
mkdir /a/b/c/d
x/a, x/b, x/a/m, x/a/n
mkdir -pv x/{a/{m,n},b} 同时创建父目录
[[email protected] ~]# mkdir -pv x/{a/{m,n},b}
mkdir: created directory `x‘
mkdir: created directory `x/a‘
mkdir: created directory `x/a/m‘
mkdir: created directory `x/a/n‘
mkdir: created directory `x/b‘
a_c, a_d, b_c, b_d
mkdir a_c a_d b_c b_d
mkdir {a,b}_{c,d}
(x+y)(m+n) = xm + xn + ym + yn
rmdir:删除空目录,是删除目录不是文件,如果目录下有文件,则无法删除
rmdir -p /x/c/v 指的是删除v,但如果一线单传的都是空的话就全删
练习:创建/tmp/mylinux/usr/local/bin, /tmp/mylinux/usr/local/sbin, /tmp/mylinux/etc/sysconfig, /tmp/mylinux/etc/init.d, /tmp/mylinux/bin, /tmp/mylinux/sbin
# mkdir -pv /tmp/mylinux/{usr/local/{bin,sbin},etc/{sysconfig,init.d},bin,sbin}
命令的执行结果:
mkdir: created directory `/tmp/mylinux‘
mkdir: created directory `/tmp/mylinux/usr‘
mkdir: created directory `/tmp/mylinux/usr/local‘
mkdir: created directory `/tmp/mylinux/usr/local/bin‘
mkdir: created directory `/tmp/mylinux/usr/local/sbin‘
mkdir: created directory `/tmp/mylinux/etc‘
mkdir: created directory `/tmp/mylinux/etc/sysconfig‘
mkdir: created directory `/tmp/mylinux/etc/init.d‘
mkdir: created directory `/tmp/mylinux/bin‘
mkdir: created directory `/tmp/mylinux/sbin‘
练习:创建/tmp/a b
[[email protected] tmp]# mkdir ‘a b‘ 也可以使用双引号,和下划线
[[email protected] tmp]# ls
a b yum.log
shell中的引用:
‘‘:强引用(输入什么值就显示什么值),变量替换不会进行
"":弱引用,能够执行变量替换
``(反引号):命令替换,引用命令的执行结果;命令替换的另外一符号:$(命令);
反引号里面是指令
[[email protected] ~]# echo "time is `date +%T`"
time is 12:37:06
双引号中用了反引号
变量替换:${变量名} 得到的是变量名对应的值
echo
练习:创建以当前时间命令目录,例如2014-02-11-16-25-20;
# mkdir `date +%F-%H-%M-%S`
# mkdir $(date +%F-%H-%M-%S)
练习:
1、创建/tmp/etc/rc.d, /tmp/etc/rc.d/init.d, /tmp/etc/rc.d/rc0.d, /tmp/etc/sysconfig, /tmp/etc/pam, /tmp/etc/yum.repos.d/
mkdir -pv etc/{rc.d/{init.d,rc0.d},sysconfig,pam,yum.repos.d}
2、创建/tmp/etc/rc.d, /tmp/etc/rc.d/init.d, /tmp/etc/rc.d/rc0.d, /tmp/etc/sysconfig, /tmp/etc/pam, /tmp/etc/yum.repos.d/, /tmp/usr, /tmp/usr/share, /tmp/usr/share/doc, /tmp/usr/share/man, /tmp/usr/bin, /tmp/usr/sbin, /tmp/usr/lib, /tmp/usr/lib64
命令总结: pwd, mkdir, rmdir
shell的特性之三:命令历史
bash保存的过去曾经执行过的命令的列表;
当前shell进程的保存在缓冲区中;
缓冲区中的命令会在shell退出时保存至文件中, .bash_history
使用上下箭头键可以翻看此前曾经执行过的命令;
history快捷方式(以前输入过的指令):以下直接输入即可
!#: #为命令历史列表中的命令编号;可用执行第#条命令;
!!: 执行上一条命令;
!-#: 执行命令历史列表中的倒数第#条命令;
!string: 执行命令历史列表中的最近一次以string开头的命令;
!$: 引用上个命令的最后一个参数; ESC, .
history
-c: 清空列表
-d #: 删除指定的历史命令
-a: 追加当前会话的命令历史至历史文件中去;
-n: 将历史文件的指令附加到list中
-a:将list的指令附加到历史文件中
命令历史相关的环境变量:
HISTSIZE:命令历史中List中可以保存的命令的个数; echo $HISTSIZE
HISTFILE: 命令历史文件,文件的位置
HISTFILESIZE:命令历史文件可以保存的命令的个数;
[[email protected] ~]# echo $HISTFILE
/root/.bash_history
[[email protected] ~]# echo $HISTFILESIZE
1000
HISTCONTROL: 控制命令历史的生成;下面3个是HISTCONTROL的可以赋的值
ignoredups: 忽略记录重复的命令;连续的相同命令才为重复;
ignorespace: 不记录以空白字符开头的命令;
ignoreboth: 同时具有上面两种特性;
补充:Linux文件系统的另一特性:以点号开头的文件为隐藏文件; ls -a
shell中的变量赋值:
变量名=值
注意:变量在赋值时不能使用$;
变量名只能包含字母、数字和下划线,而且不能以数字开头;
变量名区别大小写;
FHS: 文件层次结构标准
/bin: 所有用户可执行的程序,可执行程序,操作系统启动自身运行就会用到的程序
/sbin: 管理员可执行的程序,可执行程序,操作系统启动自身运行就会用到的程序
/usr/bin,为了保证操作系统具备基本功能,提供的基本操作程序
/usr/sbin,为了保证操作系统具备基本功能,提供的基本操作程序
/usr/local/bin,用来安装第三方程序的,例如oracle,mysql
/usr/local/sbin,用来安装第三方程序的
/boot: 存放系统引导文件:内核、ramfs文件、bootloader(grub);
/dev: 设备文件存放目录,是特殊文件的一种类型;
/etc: 配置文件的存放目录;
/etc/sysconfig:
/etc/init.d: 系统服务脚本,和运行级别相关的
/home: 普通用户,默认在/home下有一个与其名称同名目录,作为用户的家目录;
/root: 管理员的家目录;
/lib, /lib64:库文件,这里存放的是标准的库文件,/bin和/sbin和/usr/bin和/usr/sbin的程序需要的库文件都在这里,而/usr/local/bin不是,它有自己的库文件
/media: 专用挂载位置,通常用来挂载便携式设备,例如插入个U盘,其文件挂载在media下。
/mnt: 专用挂载位置,挂载额外存储设备,例如新加了一个硬盘
/misc: 备用目录
/opt: 备用目录,但通常用来安装第三方软件;
/proc: 伪文件系统,内核参数的映射,这里面显示的是内核的运行状态参数,一关机就没了,表现为文件:文件名为参数名,内容为value。
/sys: 伪文件系统,系统级别的用于配置外围设备的参数,硬件参数,表现为文件:文件名为参数名,内容为value。
/srv: 为服务提供数据存放位置;
/tmp: 临时文件系统;
/usr: 共享文件 s: shared(文件可以在所有遵循FSH规范的所有linux系统上使用), r:readonly(只读)
/usr/include: 头文件
/var: 频繁发生变化的文件
/var/log 日志
/var/lock 锁文件,服务
/var/run
/var/cache
普通用户只有tmp和家目录下可以创建自己的文件。