M19期第二天笔记,错误之处请改正
1. linux哲学思想
一切皆文件
小型单一程序
避免和用户交互(尽量不用图形界面)
配置数据是存放在文本当中
2. linux里面判断用户是否可以使用root用户实际上是靠用户的uid,uid是系统自动分配的,root管理员的用户id为0,普通用户6版本为500+, 7版本为1000+
查看id的命令 id -u 用户名
3. 用户登录时不同的方式登录的界面会有不同的显示方式:
查看登录方式可以使用:
tty 这个命令会显示如下:
直接物理终端(也就是本机加上显示器和键盘设备) /dev/console
虚拟终端:tty命令显示的tty为本地终端登录的
/dev/tty# #代表1-6,这里没有固定的那就非要要是图形界面,是会变化的
虚拟终端里面还有一类是图形终端,一般是桌面环境下打开的终端
模拟终端 :图形界面打开的命令行以及使用ssh登录,xshell远程登录的
/dev/pts# 这个可以有很多个
echo “hellow ,world” > /dev/tty1 可以给用户其他终端发信息,但是需要root用户
普通用户wall iamzou > /dev/pts2
4. 交互式登录:启动终端后,在终端设备附加一个交互式应用程序
GUI: Graphic User Interface
GNOME 根据c开发,图形库gtk
KDE 根据C++开发,图形库qt
XFCE 轻量级桌面
CLI Command Line Interface
shelle程序: sh csh tsh ksh bash GPL zsh
当我们输入命令并敲下回车键之后:系统会提请shell程序找到键入命令所对应的可执行程序或者代码,并由其分析后提交给内核分配资源,将其运行
5. shell中可执行的命令有两种:
内部命令:由shell自带的,而且可以通过某个命令形式实现
外部命令:在当前系统的某个文件路径下有对应的可执行程序文件
可以通过which,whereis命令查看
区别外部或者内部命令的命令是
type COMMAND
hash命令:shell搜寻到的外部命令的路径结果会缓存到key-value键值对存贮。
如果前面执行过是可以缓存到hash里的
hash 会显示所有调用的外部命令的总数
哈希算法:当运行命令之后,会缓存到内存当中,下次运行调用内存的命令
type cat type 后面加上命令,显示这个命令是内部命令,还是外部命令
which echo 显示命令二进制文件的完整路径,可以看到别名
whereis cat 同时显示完整的路径以及帮助文档的路径,不能看到别名
shell提供字符界面的窗口,是一个命令解释器,不简单的运行小命令,还会支持高级的语言,(如循环,if语句)
当前系统上显示使用上的shell echo$SHELL
变量就是内存空间,就是一个名字,代表一些数据的集合,
linux当中显示支持的shell cat /etc/shells
echo $PS1 显示的左边的
echo $PATH 显示米命令的存放位置
6. 文件颜色
cat /etc/DIR_COLORS 可以配置文件的颜色:
蓝色为目录文件,绿色为可执行文件,红色为压缩文件
7. 命令格式 command [options..] [arguments..]
选项,启用命令的某个功能,可以短格式和长格式
参数:命令的作用对象,文件或者目录,用户等
8. 请求别人事实操作帮助:
screen
两个人用同一用户登录同一服务器,被帮助的人需要开启回话
screen -S help 菜鸟请求帮助
screen -x help 大神前来,之后两个界面就可以达到同步了
exit crtl+c 退出
crtl+c 取消、中断
crtl+d 结束、正常退出(这是在执行某个命令的时候)
crtl +d 登出注销 (这是在没有执行命令的时候)
crtl +l 清屏
多条命令一起写,可以用;分开
\可以换行写命令,\在一行最后面回车
9. date 操作系统时间
-d 与--date=string 一个意思 描述时间段
-s 与 --set=string 一个意思
下面的命令都要在前面用+
%a 显示精简格式的星期日期
%a 显示长的星期 ,如Sunday
%b 显示短的月份的名字 Jan
%B 显示长格式的月份名字
%c 显示格式为: Thu Mar 3 23:05:25 2005
%C 显示世纪的名字,这个不怎么用
%d 显示这是月中的哪一天 01-31
%D 等同于%m/%d/%y 相当于05/11/16 月日年
%e 这是在这个月的那一天 =%d
%F 等同于%Y-%m-%d 2016-05-11 年月日
%g 这一年的后两位,也就是16年
%G 这一年,以4位显示,2016,相当于%C%g
%h 短的月名 等同于%b
%H 小时 00到23
%I 小时 01到12
%j 在这一年的哪一天 001到365
%k 小时 0到23
%l 小时 1到12
%m 月 0到12
%M 分钟 00到59
%n 换行,增加新的一行,别的没有
%p 显示是上午还是下午 AM 或者 PM
%P 同上,只不过这个大写的P ,显示小写的am或者pm
%r 12小时制 07:31:54 PM 显示具体时间和上午或者下午
%R 时分 18:00 24小时制
%s 从1970年01月01号到现在过的秒数
%S 秒数 00到60
%t tab空格
%T 分时秒 19:36:48
%u 以数字方式显示星期, 1是星期一 ,7代表sunday
%U 本年度第几个星期几, 假设今天周二,输入后返回12,那这是本年第12个周二
%w 数字显示星期几,0代表sunday
%W 本年第几个星期,以周一为新的一周
%x 05/11/2016 月/日/年
%X 07:42:38 PM 时分秒 上下午
%y 16年
%Y 2016
%Z 显示时区 CST
%z +0800
%:z +08:00
%::z +08:00:00
显示前天是星期几:date --date="2 days ago" +%a
date -d -2 +%A
把日期设置时间为某一时刻: date --set="2008-08-08 08:00"
date 080808002008.30 月日时分年秒,年和秒之间有小数点
hwclock 硬件时间
hwclock -s --hctosys 以硬件时间为准
-w --systohc 以软件时间为准
cal 日期
cal 2017 显示2017年的年历
10. nano 文本编辑工具
crtl+o 存储文件
crtl+r 把某个文件给读近这个文件
crtl+x 退出
11. /etc/issue 用户登录信息
\r 内核信息
\m 系统架构
\n 显示登录的主机名
\t 显示时间
\l 显示登录的终端类型 如tty 或者pts
修改/etc/centos-release文件里面 的内容,当执行命令lsb_release -a 的时候也会发生改变,这样修改版本号,可以再一定程度上防止黑客捣乱。
12. echo 显示文字
-n 不自动换行
-e echo -e 支持特殊的控制信息 ‘hello \c‘
\a 发出报警声音
\b 回撤一个字符
\c 不换行
\e 向后删除一个字符
\f 把出现在\f后面的字符平移到下面一行,前面为空字符
[[email protected] ~]# echo -e "abc\fabc "
abc
abc
\n 换行,增加新的一行
\r 在\r后面的内容会逐个字符的替换前面自左向右的字符
[[email protected] ~]# echo -e "abc\rxx"
xxc
\t tab空格
\\ 显示反斜杠 \
\0nnn n为1到3 插入八进制所代表的ASCII字符
\xnn n 为1到2 插入十六进制所代表的ASCII字符
echo "the user is `whoami` and my work is on $PWD"
单引号强引用,比较傻
双引号弱引用,聪明 会把变量里面代表的内容也显示出来
反向单引号`` 先执行引号内的内用,这里面一般跟的是命令,最聪明 等同于$(command)
{} 大花括号,这个可以使用笛卡尔乘积,{a,b,c} 代表a, b, c
bc 计算器 2^3 = 8
13. 查找帮助:
whatis 后跟命令,会告诉我们这个命令,简单说是干神魔的 ,等同于 man -f
这个命令是查找命令数据库里面的内容的,更新数据库的方法有
6版本上用makewhatis
7版本上用mandb
/usr/share/man
man1 用户命令
man8 管理类的命令
man2 系统调用
man3 C库调用
man4 设备文件以及特殊文件
man5 配置文件格式
man6 游戏
man7 杂项
man9 linux内核api
用法: man 5 issue
使用man的一些快捷键:
空格键,crtl+v crtl+f 向下翻一页
b 向文件收不翻屏
d ^D 向文件尾部翻半屏
u 向文件首部翻半屏
回车 向为文件尾部下走一行
crtl+N e ^E j ^J 这几个也是向下翻一行
y ^Y ^P k ^K 这几个是向上翻一行
p 跳转到文件首部,第一行
34 跳转到第34行
1G 跳转到文件首部 这个是假shift,而不是crtl
G 跳转到文件尾部
查找man里面的字符 (这里是不区分文字大小写的)
/字符串 向下 n 顺序 N逆序
?字符串 向上 同上
man -k passwd 会把whatis数据库当中的所有和这个passwd字符有关的都给你找出来
*****man的配置文档**********
版本6 /etc/man.config
里面写入 MANPATH /path/to/file 指明新的手册位置
如果是想看一些额外的帮助文档可以使用:
man -M /PATH/To/Somewhere command 到指定的位置搜索command命令的帮助文档
练习:修改用户登录时显示主机名,时间和登录方式(tty还是pts)
这里用的文件是/etc/issue
whereis issue 按照提示操作
man 5 issue 再里面并没有直接内容,但是你会看到agetty(8)
man 8 agetty
/hostname 查找有\ 且有单个字母 的位置 会看到不同字母代表的意思
vim /etc/issue
the kernel login \l ,the time is \t and the hostname is \n
info 后直接跟命令,跟网页一样,有些*位置是可以按回车,连接到别的页面
方向键
PgUp 跳转页面
PgDn
Tab 移动到下一连接 ,这是在这个页面下找有*,也就是连接,光标会跳转到这个位置,但是不会切换
Home 显示主题首部
回车键 进入选定的链接
n 下一链接
p 前一链接
u 上一层
l 到后一个链接
s 文本搜索
q 退出
在线帮助
第三方程序官方文档
各种指南
http://kbase.redhat.com
http://www.redhat.com/docs
http://access.redhat.com
第三方服务: sosreport 命令生成的文件(在/tmp目录下),将这个文件发给红帽或者专业技术人员,让他们分析,当然之前要买服务花钱才可以
利用搜索引擎或者一些专业网站:
http;//tldp.org 在这个网页里面咨询一些问题和查看一些报错的解决办法
http://www.slideshare.net
http://www.goole.com
搜索google是的技巧:
openstack filetype:pdf 这样就会搜索关于openstack的pdf文章了
rhca site:redhat.com/docs 在这个网页里面搜索文章
14. 历史命令
history
!-2 执行倒数第二条
! # 执行第n条命令
crtl+p 执行上一条命令
!screen 执行最近一条有screen开头的命令
crtl+r 之后输入已经执行过的命令中的字符串即可
你输入的内容应该是中间位置的[]里面,后面为匹配内容
!$ 调用上一条命令中的参数
按esc,松手敲点 (同上公用)
!cp:2 从命令历史中搜索以产品开头的命令,并获取它的第二个参数
实例:
[[email protected] tmp]# ls /etc/nginx/nginx.conf /etc/issue
/etc/issue /etc/nginx/nginx.conf
[[email protected] tmp]# cat !ls:2
cat /etc/issue
CentOS release 6.8 (Final)
Kernel \r on an \m
kernerl \l, the time is \t and hostname is \n
!cp:$ 获取上一条产品命令的最后一个参数