交互的两种Shell:
GUI: Graphic User Interface 图像用户桌面:Windows;X-Window linux的桌面三个主机显示器分(x是图形显示协议)Gnome ,KDE , Xface。
CLI: Command Line Interface 命令行界面, sh ,bash, csh ,ksh ,zsh, tcsh
bell实验室研发的shell
IDE:Integrated Development Environment 开发集成环境
Windows上动态库以dll(Dynamic LinkLibrary) linux上的动态共享文件以so结尾
login:
用户名:用户ID 计算机能处理的最快的是数字
认证机制:Authentication
授权:Authorization
审计:Audition (日志)
prompt,命令提示符:
命令:
magic number: 魔数 标志二进制程序的执行格式,执行入口
又名shebang
#!/bin/bash
# command options... arguments...
选项:
短选项
长选项
参数:
文件系统层级标准 FHS
文件名不是文件存放的数据
list: ls
列出,列表
目录:是一个特殊的文件,路径映射
路径:从指定起始点到目的地所经过位置
文件系统:file system
列出指定路径下的文件
目录:working directory, current directory
pwd: Printing Working directory
ls
-l:长格式
文件类型:
-:普通文件 (f)
d:目录文件
b:块设备文件 (block)
c:字符设备文件 (character)dev目录下
l:符号链接文件(symbolic link file)
p:命令管道文件(pipe)
s:套接字文件(socket)
文件权限:9位,每3位一组,每一组:rwx(读,写,执行), r--
文件硬链接的次数
文件的属主(owner)
文件的属组(group)
文件大小(size),单位是字节
时间戳(timestamp):最近一次被修改的时间
访问:access
修改:modify,文件内容发生了改变
改变:change,metadata,元数据发生了改变
-h:做单位转换humanread 默认是k
-a: 显示以.开头的隐藏文件
. 表示当前目录
.. 表示父目录
-A 显示出除开. ..目录
-d: 显示目录自身属性 ls-ld /root 显示root自身属性
-i:index node, inode 文件索引节点号 ls -i
-r: 逆序显示 ls -r
-R: 递归(recursive)显示
cd: change directory
家目录=主目录, homedirectory
cd~USERNAME: 进入指定用户的家目录 cd ~hadoop
cd-:在当前目录和前一次所在的目录之间来回切换
hash看缓存
命令类型:
内置命令(shell内置),内部,内建
外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件
环境变量:命名的内存空间
变量赋值
NAME=Jerry
PATH: 使用冒号分隔的路径
在缓存中找命令,时间复杂度是 O(1)的。
printenv 打印环境变量
type: 显示指定属于哪种类型有内部命令和外部命令之分
ntp 时间服务器
man COMMAND
whatis COMMAND 查看命令出现章节
export LANG=en
man分章节:
1:用户命令(/bin, /usr/bin,/usr/local/bin) 所有用户都可以使用的命令
2:系统调用
3:库用户 库调用
4:特殊文件(设备文件) 设备文件都是特殊文件 解释特殊文件 例子:man 4 tty
5:文件格式(配置文件的语法) man 5 passwd
6:游戏
7:杂项(Miscellaneous)man 7 glob
8: 管理命令(/sbin,/usr/sbin, /usr/local/sbin) 只有管理员可以用,会改变硬件属性
<>:必选
[]:可选
...:可以出现多次
|:多选一
{}:分组
MAN:
NAME:命令名称及功能简要说明
SYNOPSIS:用法说明,包括可用的选项
DESCRIPTION:命令功能的详尽说明,可能包括每一个选项的意义
OPTIONS:说明每一个选项的意义
FILES:此命令相关的配置文件
BUGS:
EXAMPLES:使用示例
SEEALSO:另外参照
翻屏:
向后翻一屏:SPACE
向前翻一屏:bbefore
向后翻一行:ENTER
向前翻一行:k
查找:
/KEYWORD: 向后
n: 下一个
N:前一个
?KEYWORD:向前
n: 下一个
N:前一个
q: 退出
在线文档:
info COMMAND
文档目录:/usr/share/doc
date:时间管理 显示时间
date 显示时间
date +%D 月日年 05/19/17
date +%y
date “this year is %y.%nToday is %d.” // %n换行%d是日期
date +%T 小时分钟秒=date +%H:%M:%S
date +%s 是1970年1月1号到当地的时间,通用的时间
改变时间 date 05191406 //5月19号14点06分
再用clock看时间并没有改动
hwclock –w 改硬件时间,根据系统时间
hwclock –s 改系统时间,根据硬件时间
Linux: rtc real time clock 硬件时钟,开机从硬件读取时间
硬件时钟 hwclockclock
系统时钟 data
获得命令的使用帮助:
内部命令:
helpCOMMAND
外部命令:
COMMAND --help
cal: calendar
cal 2013
cal
cal 12 2013
练习:
1、echo是内部命令还是外部命令?
type echo
-n 吃掉换号
-e 启用逃逸字符
特殊字符\n \
2、其作用?
显示一行文本
3、如何显示“The year is2013. Today is 26.”为两行?
echo -e The year is 2013.\n Today is 26.
转义,逃逸
练习:
1、printf是内部命令还是外部命令?
内部命令
type printf
2、其作用?
3、如何显示“The year is2013. Today is 26.”为两行?
printf 默认不换行用\n 换行
file命令及其用法。
Windows: PE
Linux: ELF 可执行2进制文件格式
rootfs: 根文件系统
FHS:Linux
/boot: 系统启动相关的文件,如内核、initrd,以及grub(bootloader)
/dev: 设备文件
设备文件:
块设备:随机访问,数据块
字符设备:线性访问,按字符为单位
设备号:主设备号(major)和次设备号(minor)
/etc:配置文件
/home:用户的家目录,每一个用户的家目录通常默认为/home/USERNAME
/root:管理员的家目录;
/lib:库文件
静态库, .a
动态库, .dll,.so (shared object) file可以查看文件格式(LSB shared obeject -----LSBexecutable)
/lib/modules:内核模块文件
/media:挂载点目录,移动设备
比如说光盘在/dev/cdrom下只是文件的访问入口不能访问文件,必须关联到文件系统的目录上来,才能被访问到
/mnt:挂载点目录,额外的临时文件系统
/opt:可选目录,第三方程序的安装目录
/proc:伪文件系统,内核映射文件
/sys:伪文件系统,跟硬件设备相关的属性映射文件
/tmp:临时文件, /var/tmp
/var:可变化的文件
/bin: 可执行文件, 用户命令 系统自身启动命令
/sbin:管理命令
/usr:shared, read-only 系统启动后自身基本功能的命令
/usr/bin
/usr/sbin
/usr/lib 存放/usr/bin下/usr/sbin下非公共lib库的内容
/usr/local: 第三方软件
/usr/local/bin
/usr/local/sbin
/usr/local/lib
命名规则:
1、长度不能超过255个字符;
2、不能使用/当文件名
3、严格区分大小写
相对路径:
绝对路径:
文件管理
ls
cd
pwd
mkdir:创建空目录
-p:parent 一次创建多个目录
-v:verbose 显示详情
/root/x/y/z
/mnt/test/x/m,y
mkdir -pv /mnt/test/x/m /mnt/test/y
mkdir -pv /mnt/test/{x/m,y}
~USERNAME
命令行展开:
/mnt/test2/
a_b, a_c, d_b, d_c
(a+d)(b+c)=ab+ac+db+dc
{a,d}_{b,c}
# tree:查看目录树
删除目录:rmdir (remove directory)
删除空目录
-p一条目录
文件创建和删除
# touch
-a 只修改访问时间 默认改为当前的时间
-m 只修改存取时间 默认改为当前的时间
-t 用指定的时间值 time 作为指定文件 file 相应时间戳记的新值.[CC]YYMMDDhhmm[.ss]
-c 如果要修改的文件不存在,此选项使touch不去创建它
touch –m –t201705191417 a 改a文件的修改时间
# stat 查看文件详情
创建文件,可以使用文件编辑器
ASCII:
128不同的字符:
二进制:
2^6=0,63
2^7=0,127
0000000 - 12017/2/1211 1111
ASCII:
0000 1001: t
2^16: 65536
标准:GB18030, GBK, GB2312,Unicode
0000 1001 0000 1110:上, 卫
nano
删除文件:rm
-i 交互式
-f 强行删
-r 删目录
rm -rf /
\rm 使用命令本身 type rm 查看命令类型或者别名的意思
1、创建目录
(1)在/mnt下创建boot和sysroot;
mkdir /mnt{boot,sysroot}
(2)在/mnt/boot下创建grub;
mkdir /mnt/grub
(3)在/mnt/sysroot下创建proc, sys,bin, sbin, lib, usr, var, etc, dev, home, root, tmp
mkdir /mnt/sysroot{proc, sys, bin, sbin,lib, usr, var, etc, dev, home, root, tmp}
a)在/mnt/sysroot/usr下创建bin, sbin,lib
mkdir /mnt/sysroot/usr{bin, sbin, lib}
b)在/mnt/sysroot/lib下创建modules
mkdir /mnt/sysroot/lib/modules
c)在/mnt/sysroot/var下创建run, log,lock
mkdir /mnt/sysroot/var{run, log, lock}
d)在/mnt/sysroot/etc下创建init.d
mkdir /mnt/sysroot/etc/init.d
复制和移动文件cp –r z复制文件到已经存在的文件的时候,出现红色闪烁错误
cp: copy cp是别名
cp SRC DEST 普通不复杂目录 目标不存在就重命名,存在就覆盖
-r R递归复制目录
-i 交互式
-f 强行复制
-p 保留属性列表 原有的属主属组和时间(本来是谁复制谁是属组属主)
-a:归档复制,常用于备份=-dR和-p
-L 默认复制链接的时候是复制链接的文件
-P复制链接的时候是负责链接本身 同-d (no de)
cp复制链接是复制文件默认
cp file1 file2 file3
一个文件到一个文件
多个文件到一个目录
cp /etc/{passwd,inittab,rc.d/rc.sysinit}/tmp/
mv: move 移动目录的时候不用加其他的选项
移动文件
mv SRC DEST
mv -t DEST SRC
install 复制文件和指定属性 安装只讲了复制文件 同cp
-dDIRECOTRY ... :创建目录 install -d /etc/{passwd,inittab,rc.d/rc.sysinit} 创建多个目录
SRCDEST 复制文件复制过去有执行权限
-m 指定权限 默认复制过去有执行权限
install -t DIRECTORY SRC... 多个文件复制到一个目录
install -m 制定权限
复制过去有执行权限
只对文件操作
1、创建目录/backup
# mkdir -v /backup
2、复制目录/etc至/backup目录中,并重命名为“etc-当前日期”,如etc-2013-02-26;要求保留文件原来的属性,保持链接文件;
cp –r /etc /backup/e
-r 递归复制
-p 保持文件的属性
-d 复制链接的时候保持文件的链接
# cp -a /etc /backup/etc-2013-02-28
命令替换
3、复制文件/etc/inittab为/tmp/inittab.new,并删除inittab.new文件的后两行;
# cp /etc/inittab /tmp/inittab.new
# nano /tmp/inittab.new
1、思考:ls命令是否可以显示某目录的整体大小,即包括其内部的所有文件的整体大小?
2、通过帮助手册,学习使用du命令;
# du
-s 显示目录整体的大小
-hhumanreadable
3、通过帮助,学习read命令;
read(选项)(参数)
-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒)。
read 1987name #等待读取输入,直到回车后表示输入完毕,并将输入赋值给变量answer HelloWorld #控制台输入Hello
echo $1987name #打印变量 HelloWorld
read -p "输入密码:"-s pwd
echo
echo password read, is "$pwd"
变量:内存空间,有名称
变量赋值:
变量替换
描述GPL, BSD, Apache三个开源协定的大体联系及区别。
http://blog.csdn.net/abware/article/details/20997307
自由软件
开源协定,版权描述
如何获取Linux当前最新的内核版本号?
www.kernel.org
列出你所了解的Linux发行版,并说明其跟Linux内核的关系。
Linux, GNU: GNU/Linux, 源代码
发行版:Fedora,RedHat(CentOS), SUSE, Debian(Ubuntu, Mint), Gentoo(发行版,小型编译),LFS(Linux From Scratch 从头开始编译)