目录
一、linux基础
1、linux的哲学思想
2、开源协议,自由软件
3、控制台和终端
4、用户登录
PS1,
二、linux文件系统
1、linux的文件基础
2、路径
相对路径、绝对路径
3、文件名
三、命令
1、命令分类
2、命令使用格式
3、获取命令使用帮助
help,man,info
一、linux基础
1、linux的哲学思想
一切皆文件(包括硬件)
由众多目地单一的小程序组成;
组合小程序完成复杂任务
尽量避免跟用户交互:为了方便脚本编程实现自动化运行
使用文本文件保存程序的配置数据
程序设计法则:
K.I.S.S:Keep It Simple.Stupid
2、开源协议
GPL,LGPL,Apache,BSD
自由软件:GNU,GPL (free)
自由获取,自由学习,自由修改,自由分发源代码,自由创建衍生版
靠服务赚钱,
3、控制台和终端
终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念。
一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有命令行终端和图形终端两种.
控制台是另一种人机接口, 不通过终端与主机相连, 而是通过显示卡-显示器和键盘接口分别与主机相连,这是人控制主机的第一人机接口(就像个人pc电脑一样,显示,键盘,鼠标都接上,此时就可以叫控制台)。
话回到个人计算机上,个人计算机只有控制台,没有终端. 当然愿意的话, 可以在串口上连一两台命令行终端。但是linux保留了以前的习惯按POSIX标准把个人计算机当成小型机来用,,通过getty软件虚拟了六个字符终端(终端tty1-tty6)(数量可以在/etc/inittab里自己调)和一个图型终端, 在虚拟图形终端中又可以通过软件(如rxvt)再虚拟无限多个虚拟命令行终端(pts/0....). 记住,这全是虚拟的,用起来一样,但实际上并不是。
控制台: /dev/console #如果是虚拟机安装的linux,那么都没有连接这个控制台
虚拟终端:/dev/tty1# (1-7) #其中有一个是虚拟图形终端
如果没有安装图形界面或者没有启动图形桌面那么只能通过Alt+F(1-6)在六个命令行终端之间切换,如果启动了图形界面就可以通过Alt+F7切换到图形终端,从图形终端切换到虚拟终端要使用Ctrl+Alt+F(1-6),
伪终端:/dev/pts/# #ssh或telnet远程连接打开的终端
串行终端:/dev/ttyS# #没有显卡用串行终端也可以
注意:
在使用 Alt+F#进行终端切换时,tty#并不会发生变化,tty#和Alt+F#并没有对应关系,tty#和pts#是通过终端登录的时间编号的
在命令行终端中启动图形桌面服务:
[root@Node3 ~]# startx &[root@Node3 ~]# startx & -- :1 & #启动第二个图形界面 进入第二个图形界面Alt+F8
查看自己使用的终端的命令:
[root@Node3 ~]# tty/dev/pts/0[root@Node3 ~]# whoroot tty1 2016-11-12 23:02root pts/0 2016-11-27 15:38 (192.168.10.10)root pts/2 2016-11-27 11:42 (192.168.10.10)[root@Node3 ~]# w 15:41:38 up 8 days, 11:10, 3 users, load average: 0.00, 0.04, 0.09USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot tty1 - 12Nov16 23:27 0.07s 0.07s -bashroot pts/0 192.168.10.10 15:38 0.00s 0.01s 0.00s wroot pts/2 192.168.10.10 11:42 3:26 0.04s 0.04s -bash[root@Node3 ~]# who am iroot pts/0 2016-11-27 15:38 (192.168.10.10)[root@Node3 ~]# whoamiroot
4、用户登录
认证,授权
用户使用帐号和密码登录
用户登录后进入用户工作环境: #可以自定义
CLI:提供命令提示符
管理员:#
普通用户:$
GUI:提供桌面环境
用户:
管理员:有管理员权限 root
普通用户:仅有系统资源使用权限
PS1:定义命令提示符 #环境变量PS1
\u:自动替换为当前用户的用户名
\h:当前主机的主机名
\H:当前主机的完整主机名,FQDN、
\w:当前工作路径,绝对路径
\W:当前工作路径的基名
\$:指定命令提示符
定义方法:
[root@Node3 ~]# echo $PS1[\u@\h \W]\$[root@Node3 ~]# PS1='(\U0\HSB\w)\% '(\U0Node3SB~)\% cd /etc/sysconfig(\U0Node3SB/etc/sysconfig)\%
二、Linux文件系统
1、Linux的文件系统基础
linux一切皆文件,那么linux怎么找到某个文件呢?
a、遍历
效率低,
b、层级结构
文件系统中的数据分为两类数:
元数据(metadata):索引,
数据(data):文件内容
1个新的硬盘格式化后分成元数据区和数据区,数据区再分成存储块(block,最小存储单元),每个数据块都有编号,例如1号块2号块, 1个存储块只能属于一个文件,小于1个存储块的文件仍然占用1个存储块,这整个就是文件系统
对于计算机来说,文件是什么?
所有数据存在硬盘上都是二进制流,
2、路径
怎么标记一个文件?
使用路径,
路径怎么表示层级结构?
路径分隔符:/
/usr/local:最左边的/不是路径分隔符而是根,是linux文件系统的起点,
绝对路径:从根开始定位的路径表示形式
相对路径:从当前位置开始定位的路径表示形式
目录是什么?
路径映射
用户登录系统后当前的路径是自己的家目录,使用pwd命令可以查看当前目录(工作目录),cd命令切换当前的目录
[root@Node3 ~]$ pwd/root[root@Node3 ~]$ cd /tmp[root@Node3 tmp]$ cd #cd后面不加路径就默认回到家目录[root@Node3 ~]$ pwd/root
特殊目录:
. 表示当前目录(或工作目录)
.. 表示当前的上一级目录
~ 表示家目录
~USERNAME 切换到指定用户的家目录 需要有权限才可以
- 回到上次所在目录
[root@Node3 ~]$ pwd/root[root@Node3 ~]$ cd .[root@Node3 ~]$ cd ..[root@Node3 /]$ pwd/[root@Node3 /]$ cd ~[root@Node3 ~]$ pwd/root[root@Node3 ~]# cd ~xj [root@Node3 xj]# pwd/home/xj[root@Node3 ~]# cd /tmp/src[root@Node3 src]# cd -/root[root@Node3 ~]# cd -/tmp/src
3、文件名
每个文件都有两类标识符:
名字:文件名:
linux的文件名严格区分大小写字符
文件名可以使用除了/以外的任意字符,,建议不使用特殊符号
以.开头的文件是隐藏文件
文件名最长255个字符
数字:indoe i节点
basename NAME 获取文件的路径基名
dirname NAME 获取文件的路径目录名
[root@Node3 ~]$ basename /etc/sysconfig/network-scripts/network-scripts[root@Node3 ~]$ dirname /etc/sysconfig/network-scripts//etc/sysconfig[root@Node3 ~]$ dirname etc/sysconfig/network-scripts/ #这两个命令不会检查该路径存不存在,路径对还是不对etc/sysconfig[root@Node3 ~]$ dirname etc/sysconfig/network-scriptsetc/sysconfig[root@Node3 ~]$ dirname ./etc/sysconfig/network/sb/nia./etc/sysconfig/network/sb[root@Node3 ~]$ basename ./etc/sysconfig/network/sb/niania
三、命令
对主机执行的操作,是通过执行程序(发起进程)完成
1、命令分类
内建命令:builtin #bash自带的基本命令
外部命令:独立于shell程序之外的,有着可执行程序文件的命令
可以用内建命令type命令来查看命令的类型:
[root@Node3 ~]$ type cd #内建命令是shell自带的,没有可执行程序文件cd is a shell builtin[root@Node3 ~]$ type ifconfigifconfig is /sbin/ifconfig[root@Node3 ~]$ type typetype is a shell builtin
如何运行命令:在命令提示符下键入命令,然后敲回车(把命令提交给内核运行,把输出结果打印出来)
shell会先从环境变量PATH定义的目录顺序依次查找这个命令,找到的后就执行
[root@Node3 ~]$ echo $PATH/usr/lib64/qt-3.3/bin:/root/.pyenv/plugins/pyenv-virtualenv/shims:/root/.pyenv/shims:~/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
2、命令使用格式
COMMAND OPTION... ARGUMENTS...
选项:多个选项可以同时使用,可省略
形式:
-CHAR 短选项
多个短选项可以合并
--WORD 长选项
功用:定义命令的运行行为
参数:指明命令的作用对象,可省略
注意:有些选项也可以带参数,用于指定选项的作用对象
[root@Node3 ~]$ cd /tmp/src[root@Node3 src]$ lstest1.txt test.sh[root@Node3 src]$ ls -l总用量 8-rw-r--r-- 1 root root 9 11月 26 16:45 test1.txt-rw-r--r-- 1 root root 28 11月 26 18:32 test.sh[root@Node3 src]$ ls -lh总用量 8.0K-rw-r--r-- 1 root root 9 11月 26 16:45 test1.txt-rw-r--r-- 1 root root 28 11月 26 18:32 test.sh-rw-r--r-- 1 root root 28 11月 26 18:32 test.sh[root@Node3 src]$ ls -lh test.sh-rw-r--r-- 1 root root 28 11月 26 18:32 test.sh[root@Node3 src]$ ls test1.txt test.sh test1.txt test.sh
3、获取命令使用帮助
1)help
内置命令:
help COMMAND
内置命令只有这一种方法获取帮助
外部命令:
COMMAND --help(更通用)或者-h 获取简要命令使用帮助
--help 显示的帮助信息是命令自带的,通常比较简洁
2)命令手册:manual
man COMMAND
通常是由程序作者提供,按照一定格式组织成文本文件,并压缩后存放在系统上的某位置
manual文档存放位置:/usr/share/man
[root@Node3 ~]# ls /usr/share/man/bg de es hr it man0p man1x man3 man4 man5x man7 man8x mann pt ru sv zh_TWcs el fi hu ja man1 man2 man3p man4x man6 man7x man9 nl pt_BR sk trda en fr id ko man1p man2x man3x man5 man6x man8 man9x pl ro sl zh_CN
man命令的执行 ,通常即为找到此文件打开并显示
命令手册有章节之分:1-9
1、用户命令 #普通用户
2、系统调用 system call
3、库调用 library call
4、设备文件
5、配置文件
6、游戏
7、杂项
8、管理命令
9、内核相关的文件
n、new 新文档 新的,尚未归入上述1-9章节的帮助文件
o、old 老文档 可能 会在一段期限内保留
l、local 本地文档 与本特定系统有关的
man [N] COMMAND 指定特定章节 #N为数字,不加数字时,按顺序显示第一次出现的章节
whatis COMMAND 显示指定关键字存在帮助手册的章节相关信息及简要说明 #精确匹配
man -k COMMAND 显示指定关键字存在帮助手册的章节相关信息及简要说明 #模糊匹配
man -f COMMAND 相当于whatis
man -a command 打开符合命令的所有章节的手册
man -w command 显示指定命令手册所在的路径
man -aw command 结合-a参数显示所有章节的手册路径
[root@Node3 ~]$ whatis passwdpasswd (1) - update user's authentication tokenspasswd (5) - password filepasswd [sslpasswd] (1ssl) - compute password hashes[root@Node3 ~]$ man -f passwdpasswd (1) - update user's authentication tokenspasswd (5) - password filepasswd [sslpasswd] (1ssl) - compute password hashes[root@Node3 ~]$ man -k passwdchpasswd (8) - update passwords in batch modefgetpwent_r [getpwent_r] (3) - get passwd file entry reentrantlygetpwent_r (3) - get passwd file entry reentrantlygpasswd (1) - administer /etc/group and /etc/gshadowlpasswd (1) - Change group or user passwordlppasswd (1) - add, change, or delete digest passwordspam_localuser (8) - require users to be listed in /etc/passwdpasswd (1) - update user's authentication tokens...
当系统中没有安装man时,如何手动安装man呢?
yum install man man-pages(man的补充?)
whatis 资料库包含了所有系统指令的简单描述 , 而 whatis 指令会在此资料库中搜寻符合 keyword的 指令 , 并把结果显示出来
whatis 资料库是使用 makewhatis 这 个 指 令 所 建 立 的 。
man命令调用less命令查看文件内容,使用机制和less一样
翻屏
空间键:向文件尾部翻一屏
ctrl+b:向文件首部翻一屏
ctrl+d:向文件尾部翻半屏
ctrl+u:向文件首部翻半屏
回车键或j:向文件尾部翻一行
k:向文件首部翻一行
q:退出
行定位
G:跳转至文件尾部
Ng|G:跳转至文件第N行
关键字搜索
/KEYWORD:搜索指定关键字,从文件首部向尾部搜索,关键字搜索可以使用正则表达式
?KEYWORD:搜索指定关键字,从文件尾部向首部搜索
n:与搜索方向相同
N:与搜索方向相反
man手册段落:
NAME:命令的名称及简要说明
SYSNOPSIS:使用格式
DESCRIPTION:命令功能的详细描述
OPTIONS:所有选项的相关说明
EXAMPLES:使用示例
FILES:相关的配置文件
SEE ALSO: 相关参考
帮助格式中的字符串:
[ ]:可选内容
<>:必选内容
|:或者 二选一
...:同类内容可以有多个
man命令的配置文件:/etc/man.config
配置man查找文档的路径的选项:
MANPATH /usr/man MANPATH /usr/share/manMANPATH /usr/local/manMANPATH /usr/local/share/manMANPATH /usr/X11R6/man
man -M PATH COMMAND
指定该命令帮助文档的查找路径
3)info 命令 获取在线文档
info COMMAND
仅在man手册无法提供足够的可用帮助信息时才使用
4)许多应用程序都自带帮助文档:
rpm安装的软件自带帮助文档的路径:/usr/share/doc
ChangeLog:更新日志
INSTALL:安装说明
README:程序说明信息
[root@Node3 ~]$ cd /usr/share/doc[root@Node3 doc]$ cd passwd-0.77/[root@Node3 passwd-0.77]$ lsAUTHORS ChangeLog COPYING[root@Node3 passwd-0.77]$ cd ../zip-3.0/[root@Node3 zip-3.0]$ lsalgorith.txt CHANGES LICENSE README README.CR TODO WHATSNEW WHERE
5)主流发行版官方文档
6)google
一定要学会使用搜素工具
使用技巧:
ls的用法 site:51cto.com #只会显示该域名下服务器网站上搜索到的内容
7)各应用程序官方会提供