05
无论是GUI还是CLI都是一种Shell
GUI:graphic User Interface:图形用户接口
Linux的桌面叫做(X-Window):电影中X-战警的X表示的是超级的意思,这里的X也是超级的意思
Linux三种桌面:Gnome,KDE,Xface
CLI:Command Line Interface:命令行接口
有很多shell,如:bash,csh,ksh,zsh
内核是和硬件交互的,提供方式的叫做系统调用,但是开发人员用系统调用开发就太困难,所以就出现了API,也就是库,也叫做应用程序接口,这样有了这个接口作为中间件,开发不用直接面对底层硬件,开发就容易多了
库就是Library:API库是程序,但是没有执行入口,所以只能被调用。
IDE:集成开发环境
window下的system下有一系列的.dll文件
其实就是动态链接库,就是dynamic link Library(翻译上就是库的意思)
而在linux下就是叫做.so shared object
以前没见过,现在记住就ok了
最小的linux我们做到2-3M就可以实现
所以为什么装出来这么大,就是各种程序的补充而已
window为什么这么大,就是装了很多程序,而且是必须要装,而且装系统自带
login:
用户名:计算机所能处理的最快的不是字符,而是数字
用户ID
访问入口,是可以访问,比如一个家,你是跟这个家有关的人,你就有进入大门的权利,所以就有了认证:你是谁
认证机制:Authentication:识别和鉴别真假 认证:othintication
认证了不是啥也能干,指定谁进来之后,谁可以干什么,就有了授权
授权:Authorization 授权:ozorization
为防止滥用职权,不该谁做的事情谁做了就是错误,就有了审计这东西
审计:Audition对计算机而言,审计的话大多数看日志来完成的
magic number:魔数
shell ------------------ #!/bin/bash 脚本第一行必须要这么写
#command(命令)options(选项) .. arguments(参数) ...
选项: 修改命令执行的特性 有一些选项是可以带参数的
短选项
长选项
参数:指定命令的作用对象
ls: list 列表,列出的意思 可以列出指定路径下的文件
目录也是一个文件,是一个路径映射文件
路径:从指定起始点到目的地所经过的位置
层次化的管理机制我们叫做:文件系统(file system)
绝对路径:从根开始
相对路径:相对于当前所处的位置的路径
我们无时不刻每时每刻都在某一个目录上
目录:working directory,current directory(cd)
问:文件名是不是文件本身的数据?
文件名不是文件本身的数据。所以文件名放在什么地方,这些数据放在哪里?
常用命令---开始学习
一、pwd――Print Working directory 打印工作当前的目录
二、ls
-l 长格式
常见文件类型
-: d: b: l: c: p: s:
在dev目录下很多这些文件类型
文件权限:9位 ,每三位一组:rwx(读,写,执行)
[root@www ~]# ls -l /dev/
drwxr-xr-x. 2 root root 80 Jul 19 17:38 bsg
上面的输出各个代表的意思是什么?
文件类型 d
文件权限 rwxr-xr-x
1,2这些就是文件被硬链接的次数
文件的属主(owner) root
文件的属组(group) root
文件的大小(size)默认单位是字节 80
jul 19 17:38 是时间戳(这里显示的是最近一次被修改的时间戳)
每一个文件都有三个时间戳:1、访问:access
2.修改:modify
3.改变:change,metadata,元数据
文件有两种数据:1、文件自身的数据,2、属性的数据,也叫做元数据metadata
查看时间戳用stat
如何理解修改和改变
比如一个文件内容不动,但是改变文件名,就是改变了属性了,就不是修改
通俗来讲内容修改了,时间戳上的理解就是修改时间的改变。
ls的一个选项 -h是做单位转换
[root@www /]# ls -lh
total 32K
dr-xr-xr-x. 3 root root 4.0K Jul 19 21:20 boot
-a 显示以.开头的隐藏文件
.表示当前目录(隐藏文件以.号开头)
..表示父目录(当前目录的上一级目录)
-A 显示所有隐藏文件,不包含.和..
[root@www tmp]# ls -a
. .esd-993 ifcfg.log ssh-Kiidoc531jHo
[root@www tmp]# ls -A
anaconda.log .font-unix ifcfg.log program.log
-d显示目录自身属性
[root@www tmp]# ls -ld /root
dr-xr-x---. 6 root root 4096 Jul 19 22:02 /root
-i index node(文件节点,索引节点),inode 显示每个文件对应的一个数字
因为计算机识别是用数字的,而我们自己使用名称来记的。所以每一个文件都会有一个对应的数字,也就是inode。。方便计算机自身去查询
[root@www tmp]# ls -i
34233486 anaconda.log 34233489 packaging.log 63130510 systemd-private-1ITqMy
数字叫做索引节点号
-r就是按字母的逆序显示文件,默认是顺序的显示文件
-R:递归(recursive)显示(目录的,子子目录也是会显示出来的)
递归是相当消耗资源的
三、cd
cd:change directory切换目录,不能进入文件
cd 不加任何参数回到家目录(主目录home directory)
在bash的家目录就是波浪线
用户在自己的家有一切操作权限,所以用户一般执行删除增加都在家目录去执行,当然只有管理员才能进入别人的家
cd - 表示在前一个目录和当前目录来回的切换
[root@www local]# cd ~
[root@www ~]# cd /etc/sysconfig/network-scripts/
[root@www network-scripts]# cd
[root@www ~]# cd /home/mage/
[root@www mage]# pwd
/home/mage
type:显示命令属于哪种类型,或者可以显示默认的命令格式
经常用于查看命令是否是内置命令(shell内置)等
不同的shell内置的命令不一样的,只要显示a shell builtin就是shell的内置命令,其实bin下的命令都不是内置命令
命令类型:
内置命令(shell内置),内部,内建
外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件
[root@www mage]# type ls
ls is aliased to `ls --color=auto'
[root@www mage]# type cd
cd is a shell builtin
[root@www mage]# type su
su is /usr/bin/su
[root@www mage]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
我们直接用ls,而不需要带上路径去执行一个命令,是因为环境变量的原因
环境变量:命名的内存空间
变量赋值
NAME=Jerry,为什么叫变量呢,因为NAME我还可以改NAME=HOHN
环境变量就是定义当前用户的
[root@1qewr html]# echo $NAME
Jerry
四、printenv
[root@www mage]# printenv
printenv命令可以显示环境变量
主要是看PATH:它是使用冒号分隔符的路径
当我们执行命令的时候就会在PATH上找,找到它为止。
缓存(hash),哈希(键值数据库,在这个库里查找是O(1)(欧1),),会记录,不会每次都去PATH那里去找
欧1特点:就是无论你这个哈希再多再长,它查找的速度都是等效的,瞬间可以被找到
[root@www mage]# hash 只有缓存才有命中的概念---计算机组装与原理中讲到
hits命中command
1 /usr/bin/printenv
27 /usr/bin/ls
所以用的时候先找这个缓存,而不会去找PATH这个路径
都是找,但是缓存为王,先看缓存有没有,因为找缓存比找路径要快很多
[root@www mage]# printenv
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
06
五、date
[root@www ~]# date 常用语shell的编程上
[root@www tmp]# date
2016年 02月 07日 星期日 01:24:34 CST
Date:时间管理
主板的电池
1.维持计算机的时间
Linux:rtc(开机自动会从BIOS芯片的时间获取,也就是从硬件时钟获取给系统时钟)
时间服务器:ntp(读取别人的时间改变自己的时间)
硬件时钟----系统时钟
硬件时钟是存储在CMOS里的时钟,关机后该时钟依然运行,主板的电池为它供电。那个时钟依照主板石英晶体振荡器频率工作,在启动系统后,系统从该时钟读取时间信息,之后独立运行。当调整系统时钟或与internet同步后,不会改变硬件时钟,下次启动又会变成硬件时钟的时间。
[root@www ~]# date 系统时间
Mon Jul 20 04:50:11 EDT 2015
[root@www ~]# clock 硬件时钟
Mon 20 Jul 2015 04:50:15 AM EDT -0.547535 seconds
[root@www ~]# hwclock 硬件时钟
Mon 20 Jul 2015 04:50:21 AM EDT -0.287855 seconds
hwclock -w 将系统时间同步给硬件时钟,改变的是硬件时间,以系统时间为准。
-s 则相反,以硬件时钟为准
六、如何获得命令的使用帮助
1.内部命令而言:
help CONMAND
3.外部命令:
CONMAND --help
这是获得简要的帮助信息的
3.无论是内部命令还是外部命令都有命令手册:manual
man COMMAND---类似于说明书,使用手册
man ls
内部命令一般很少使用man去查看,一般使用help查看一些简洁的命令,因为man一下内部命令可能显示的是shell的帮助,而不是内部命令的帮助
man是分章节的:各个章节是什么用处呢,下面介绍8个章节:
1.用户命令:所有用户都可以使用的命令(/bin,/usr/bin,/usr/local/bin)
2.系统调用:man 2 read
man加数字是出现第几章
[root@www ~]# whatis read(whatis 查看这个命令出现在哪一些章节)
read (1) - bash built-in commands, see bash(1)
read (1p) - read a line from standard input
read (2) - read from a file descriptor
read (3p) - read from a file
3.库调用
4.特殊文件(用来解释设备文件的:比如/dev下的)
[root@www tmp]# ll /dev/tty
crw-rw-rw- 1 root tty 5, 0 Feb 7 00:22 /dev/tty
[root@www tmp]# man 4 tty
5:文件格式(某一个配置文件的配置的语法)
比如看passwd的格式语法。就可以解释某一个配置文件对应的语法的,在man 5下就可以知道下面:之间都是代表的是什么,像会告诉你tcpdump(抓包的一个命令)是什么:x:这个又是什么
[root@www ~]# tail /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
mage:x:1000:1000:mage:/home/mage:/bin/bash
6.游戏
7.杂项(Miscellaneous)
8.管理命令(即是管理员才有的命令,如/sbin,/usr/sbin,/usr/local/sbin)
man出来的某些命令帮助选项中,有一些符号要知道的
<>表示必须要选的
[]表示可选的
...表示可以重复多次
|:多选一
{}:分组
在man出来的信息有下面几个大标题,各个代表的是什么意思
man手册中的章节黑体大标题说明
NAME:命令名称及功能简要说明
SYNOPSIS:用法说明,包括可用的选项
DESCRIPTION:命令功能的详尽说明,包括每一个选项的意义。
OPTINOS;说明每一个选项的意义
FILES:此命令相关的配置文件
BUGS:报告
EXAMPLES:使用实例。如:man lvcreate看得到一些相关的举例
SEE ALSO:另外参照
SYNOPSIS
date [OPTION]... [+FORMAT]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
修改时间:月日小时分钟年.秒
[root@www tmp]# date 0217212816.30
Wed Feb 17 21:28:30 CST 2016
[root@www tmp]# hwclock -w
[root@www tmp]# date
Wed Feb 17 21:29:16 CST 2016
翻屏:
查找功能: 选中了要找的字母就用n向后翻,用N就是向前翻
/KEYWORD:自前向后
?KEYWORD:自后向前
退出使用q:退出
[root@www tmp]# date +"the year is %Y. %ntoday is %d"
the year is 2016.
today is 17.
%s second since 1970-01-01 00:00:00 UTC
4.在线文档:
info COMMAND 告诉你相关的历史,info只是man的一个补充,用的不多
5.补充性文档――――跟我们相关的是看内核的文档,以后会用的了
[root@www /]# cd /usr/share/doc/
[root@www doc]# ls
abattis-cantarell-fonts-0.0.12 iwl5000-firmware-8.83.5.1_1
6.内事不决问百度,外事不决问Google
apache,hadoop
七、cal
cal 日历
cal 2013 出现2013整一年的日历 cal 12 2013 出现2013年12月的日历
练习
八、echo
echo是内部命令还是外部命令?其作用? type echo
如何显示“the year is 2013.today is 26” 为两行?
用type echo 可以得到是内部还是外部
[root@www doc]# echo "The year is 2013\nToday is 26"
The year is 2013\nToday is 26
[root@www doc]# echo -e "The year is 2013\nToday is 26"
有了-e就可以识别\n这种转义字符,还有其他的一些\t,\b之类的。
\b:退格 相关一些看man都是可以看得到的选项
将来我们在写脚本的时候会反复的用到这个命令―echo
九、printf
printf --format and print data 默认的是没有换行符的,而echo默认是有换行符的
[root@www doc]# printf "today is 215\nis a good day\n"
today is 215
is a good day
[root@1qewr yum-3.2.29]# echo $NAME
Jerry
[root@1qewr yum-3.2.29]# printf $NAME
Jerry[root@1qewr yum-3.2.29]#
file命令及其用法?
[root@www ~]# file /etc/passwd
/etc/passwd: ASCII text
file查看文件类型,而type是查看命令的类型
如果man 命令中有乱码,用export LANG=en命令,然后再进入,就看不到乱码了
本文出自 “malinux学习” 博客,谢绝转载!