shell环境:
shell:命令解释器,是Linux 系统的用户界面,提供了用户与内核进行交互操作的一种接口,它接收用户输入的命令并把它送入内核去执行。
bash:是GNU 计划中重要的工具软件之一,目前也是 Linux 标准的shell ,与sh兼容
echo $PATH 显示当前使用的shell
cat /etc/shells 显示系统使用的所以shell
PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接。
echo $PATH 查看PATH环境变量的值
linux命令的分类:
内部命令:属于shell解释器的一部分
外部命令:独立于shell解释器之外的程序
命令的通用格式:
命令字 [选项] [参数]
长选项:例如“ls -a”
短选项:例如“ls --help”
多个短选项可合并使用,例如“ls -alh”
长选项不能合并,只能分开
参数:命令的对象,如文件、目录名等
查看命令的类型:
type命令:type [选项] [参数]
-p 如果给出的指令为外部指令,则显示其绝对路径。
-a 在环境变量“PATH”指定的路径中,显示给定指令的信息,包括命令别名。
-t 输出“file”、“alias”或者“builtin”,分别表示给定的命令为“外部指令”、“命令别名”或者“内部指令”。
[root@localhost ~]# type cd cd is a shell builtin #cd 是一个shell内部命令 [root@localhost ~]# type ifconfig ifconfig is /sbin/ifconfig #ifconfig是一个外部命令
查看命令的位置:
which命令:which 可执行文件名
-n 指定文件名长度指定的长度必须大于或等于所有文件中最长的文件名
-p 与-n参数相同但此处的包括了文件的路径
-a 将PATH目录中可以找到指令均列出不止第一个而已
-w 指定输出时栏位的宽度
-V 显示版本信息
[root@bogon ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@bogon ~]# which ip
/usr/sbin/ip
[root@bogon ~]#
whereis命令:whereis [选项] 文件名
-b 定位可执行文件。
-m 定位帮助文件。
-s 定位源代码文件。
-u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
-B 指定搜索可执行文件的路径。
-M 指定搜索帮助文件的路径。
-S 指定搜索源代码文件的路径。
[root@bogon ~]# whereis cd
cd: /usr/bin/cd /usr/share/man/man1/cd.1.gz
[root@bogon ~]# whereis -b cd
cd: /usr/bin/cd
命令别名:
#alias NAME='VALUE'
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
撤销别名:unalias
[root@bogon ~]# 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 netconf='vim /etc/sysconfig/network-scripts/ifcfg-eno16777728' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
命令的补全:
用户给定的字符串只有一条惟一对应的命令,直接补全,否则再次Tab会给出列表
路径补全:Tab如果唯一则直接补全,否则再次Tab给出列表
命令的历史:
历史文件:~/.bash_history
history命令:显示曾经执行过的命令
-c: 清空命令历史
-d: 删除历史中指定的命令
#: 显示最近的# 条历史
-a: 追加本次会话新执行的命令历史列表至历史文件
-n: 读历史文件中未读过的行到历史列表
-r: 读历史文件附加到历史列表
-w: 保存历史列表到指定的历史文件
-p: 展开历史参数成多个行,但不存在历史列表中
-s: 展开历史参数成一行,附加在历史列表后
命令历史相关变量:
HISTSIZE :命令历史记录的条数;
HISTFILE :指定历史文件,默认为~/.bash_history;
HISTFILESIZE :命令历史文件记录历史的条数;
HISTTIMEFORMAT=“%F %T“ 显示时间
HISTIGNORE=“str1:str2:… “ 忽略string1,string2
命令行历史快捷键
上下键:可浏览之前使用过的命令
ctrl+p:重复前一个命令
!字符串: 重复前一个以“字符串”开头的命令
!num: 按照history 命令输出中的序号重复对应命令
!?:字符串: 重复前一个包含abc的命令
!-n : 重复n
strl -r:从命令历史中搜索命令
esc . :调用上一个命令中最后一个参数
!$:调用上一个命令中最后一个参数
!^:调用上一个命令中的第一个参数
!*:调用上一个命令中的全部参数
!n:调用上一个命令中的第n个参数
命令的帮助:
help命令:
用法1:help 内部命令字
用法2:命令字 --help #使用于大多数外部命令
man命令:提供命令帮助的文件
手册页存放在/usr/share/man
man 命令的配置文件:/etc/man.config | man_db.conf
man命令操作方法:使用less命令实现
Space: 向文件尾翻屏
b, ^B: 向文件首部翻屏
d, ^D: 向文件尾部翻半屏
u, ^U: 向文件首部翻半屏
RETURN: 向文件尾部翻一行
y :向文件首部翻一行
q: 退出
# :跳转至第#行 行
1G: 回到文件首部
G:直接到文件尾部
/KEYWORD:字符串搜索 n下一个匹配到的字符串 N上一个
man章节:
1 使用者在shell中可以操作的指令或可执行档
2 系統核心可呼叫的函数与工具等
3 一些常用的函数(function)与函数库(library),大部分是C的函数库(libc)
4 装置档案的说明,通常在/dev下的档案
5 设定档或者是某些档案的格式
6 游戏(games)
7 惯例与协定等,例如Linux档案系统、网络协定、ASCII code等等的說明
8 系統管理員可用的管理指令
9 跟kernel有关的文件
SYNOPSIS 摘要 :
[] :可选内容
<>: 必选内容
a|b :二选一
...: 同一内容可出现多次
红帽知识库和官方在线文档:
http://kbase.redhat.com
http://www.redhat.com/docs
http://access.redhat.com
Linux 的两种时钟:
系统 时钟:由Linux 内核通过CPU 的工作频率进行的;
硬件 时钟:主板
hwclock ,clock: 显示硬件时钟
-s, --hctosys 以硬件时钟为准,校正系统时钟
-w, --systohc 以系统时钟为准,校正硬件时钟
时间管理:
date命令:按格式显示或设置时间
data [选项]... [格式]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
-d, –date=STRING 显示STRING指定的时间
-f, –file=DATEFILE 类似–date参数显示DATEFILE文件中的每行时间
-ITIMESPEC, –iso-8601[=TIMESPEC] 以ISO 8601 格式显示日期/时间。TIMESPEC为”date”(只显示日期)、”hours”、”minutes”、”senconds”(显示时间精度)之一,默认为”date”。
-r, –reference=FILE 显示文件的最后修改时间
-R, –rfc-2822 以RFC-2822兼容日期格式显示时间
-s, –set=STRING 设置时间为STRING
-u, –utc, –universal 显示或设定为Coordinated Universal Time时间格式
格式:可以使用“+”开头的字符串指定其格式
%n : 下一行
%t : 跳格
%H : 小时(00-23)
%I : 小时(01-12)
%k : 小时(0-23)
%l : 小时(1-12)
%M : 分钟(00-59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S : 秒(00-60)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区
%a : 星期几 (Sun-Sat)
%A : 星期几 (Sunday-Saturday)
%b : 月份 (Jan-Dec)
%B : 月份 (January-December)
%c : 直接显示日期与时间
%d : 日 (01-31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001-366)
%m : 月份 (01-12)
%U : 一年中的第几周 (00-53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0-6)
%W : 一年中的第几周 (00-53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000-9999)
[root@bogon ~]# date "+现在时间是:%Y-%m-%d %H:%M:%S" 现在时间是:2017-05-01 21:59:23 [root@bogon ~]# date "+%Y-%m-%d %H:%M:%S" -d "-3 year" 2014-05-01 21:59:38 ## 显示三年前的时间 [root@bogon ~]# date "+%Y-%m-%d %H:%M:%S" -d "+10 day" 2017-05-11 22:00:15 ##显示十天后的时间 [root@bogon ~]# date "+%s" 1493647224 ##显示十天后的时间
设置时间:
date -s "20161128 10:10:10"
[root@bogon ~]# cal ##显示日历 May 2017 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
echo 命令:显示文字
语法:echo [-neE][ 字符串]
说明:echo 会将输入的字符串送往标准输出。echo 需要使用-e 参数来打印转义字符.
-n 不要在最后自动换行
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
a 发出警告声;
退格键
c 最后不加上换行符号;
换行且光标移至行首;
光标移至行首,但不换行;
插入tab;
\ 插入 字符;
nnn 插入nnn (八进制)所代表的ASCII 字符
xHH 插入HH (十六进制)所代表的ASCII 字符
括号扩展:{ }
打印重复字符串的简化形式
[root@bogon ~]# echo file{1,3,5} file1 file3 file5
''单引号:强引用,单引号里的内容原样不变,防止任何变量替换
""双引号:弱引用,可防止通配符扩展,但允许变量替换
``反引号:命令引用,反引号里的指令会替换为执行结果
[root@bogon ~]# echo '$PATH' $PATH [root@bogon ~]# echo "$PATH" /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin [root@bogon ~]# echo `pwd` /root
重定向和管道:
标准输入输出:
标准输入:stdin-0 默认接受来自键盘的输入
标准输出:stdout-1 默认输出到终端窗口
标准错误:stderr-2 默认输出到终端窗口
程序:指令+数据
读取数据:Input
输出数据:Output
I/O重定向:改变默认位置
重定向操作符:标准输出和标准错误可以重定向到文件
> 把标准输出重定向到文件
2> 把标准错误重定向到文件
&> 把所以输出重定向到文件
注:>文件内容会被覆盖,禁止内容覆盖已有文件:set -c ,强制覆盖:>|
>> 原有内容基础上,追加内容
2> 覆盖重定向错误数据流
2>> 追加从定向错误数据流
&> 标准输出和错误输出合并覆盖重定向
&>> 标准输出和错误输出合并追加重定向
< 标准输入重定向
<<终止词 把多行发送给stdin
[root@bogon ~]# uname -p > kernel.txt [root@bogon ~]# cat kernel.txt x86_64 [root@bogon ~]# uname -r >> kernel.txt [root@bogon ~]# cat kernel.txt x86_64 3.10.0-327.el7.x86_64
管道操作:
管道操作为不同命令提供了协同工作的一种机制,位于管道符号左侧的命令输出的结果,将作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道。 命令1 |命令2 |命令3
[root@bogon ~]# df -Th |grep "/$" /dev/mapper/centos-root xfs 32G 1.3G 31G 4% / [root@bogon ~]# df -Th |grep "/$" |awk '{print $6}' 4%