第八节——逻辑运算和正则表达式 逻辑运算: 0(true) 1(false) && 与运算 || 或运算 ! 非运算 短路运算: A&&B 当A为1(假),结果必定为假 当A为0(真),B必须要参与运算 A||B 当A为0(真),结果必定为真 当A为1(假),B必须要参与运算 linux上文本处理三剑客: #grep 文本过滤工具,基于模式(pattern),显示匹配的行 #sed 流编辑器,是一个文本编辑工具,行编辑器 #awk linux上实现的是gawk,awk也是一门单独的编程语言,也就是说,awk可以作为一个解释器,awk既不是用来编辑文本,也不是用来过滤文本,二是将文本进行美观输出,所以awk是一个文本报告生成器。 基本的正则表达式元字符: 字符匹配元字符: “.” 匹配任意单个字符 “[]” 匹配指定范围内的任意单个字符 “[^]” 匹配指定范围外的任意单个字符 [:lower:] 所有的小写字母 [:upper:] 所有的大写字母 [:alpha:] 所有的大小写字母 [:alnum:] 所有的字母和数字 [:punct:] 所有的特殊字符 [:space:] 空格字符 文本处理工具使用的模式应当使用引号包含起来: 双引号:弱引用,其中的变量会被替换 单引号:强引用,除了元字符,其他都当做字符处理。 次数匹配元字符:用在要指定次数的字符后面,用于指定前面字符出现的次数。 “*” 匹配前面的字符任意次,“*”本身仅表示次数 例:grep “a*b” filename 能匹配到的如下 /etc/fstab a出现一次 /boot a出现0次 即a*b表示的意义为,a出现0次、1次或多次 正则匹配默认工作在贪婪模式下,最大匹配原则。 “.*” 任意长度的任意字符。 “\?” 匹配其前面的字符0次或者1次,即前面的字符可有可无。 “\+” 匹配其前面的字符至少一次。 “\{m,n\}” 匹配其前面字符,至少m次,至多n次。 “\{m\}” 匹配前面的字符m次。 “\{0,n}\” 匹配前面的字符至多n次。 “\{m,}\” 匹配前面的字符至少m次。 位置锚定: ^:行首锚定,使用在最左侧。 $:行尾锚定,使用在最右侧。 ^PATTERN$:用模式匹配整行,匹配到为真,匹配不到为假。 “^$” 空行,none。 “^[[:space:]]*$” 空白行(没有可见字符)。 “\<” 词首锚定,用于单词的左侧。 “\b” 词首锚定 “\>” 词尾锚定,用于单词的右侧。 “\b” 词尾锚定 “\<PATTERN\>” 单词锚定,匹配整个单词 “\bPATTERN\b” 分组: “\(\)” 小括号在shell中有特殊意义,所以转义,将一段字符当作一个整体处理。 字符一旦分组以后,在所有的正则表达式当中还有第二个作用。 后项引用:引用前面分组括号中模式所匹配的字符,一旦一个模式匹配到衣蛾字符串了,在后面的任何位置我们都可以再次引用这个模式所匹配到的字符。 Tip:分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名的方式为\1,\2,\3等等。\1表示从左侧起第一个左括号到与之匹配的右括号之间模式所匹配到的字符,此处允许嵌套,最里面的一对括号算最后一个。 egg:\(ab\+\(xy\)*\) \1 匹配 ab\+\(xy\)* \2 匹配 xy 我们在这里再次提示,后向引用的引用方式:引用的是前面分组括号中的模式所匹配到的字符,而非模式本身。 基础笔记二 2017-03-24 评论 2471 次浏览
第七节——权限管理 权限主要针对三类用户定义:属主u(前三位)、属组g(中间三位)、其他人o(后三位) 每个文件针对每类访问者都定义了三种权限。 对文件来说: r readable 拥有读权限的文件,可以使用文件查看工具获取其内容 w writable 拥有写权限的文件,可以修改其中的内容 x excuable 拥有执行权限的文件,可以将此文件提请内核启动为一个进程 对目录来说: r 拥有读权限,可以使用ls查看目录中的文件列表 w 拥有写权限,可以在此目录下创建、删除文件 x 拥有执行权限,可以cd到此目录,也可以使用ls –l查看此目录中的文件列表。 权限位与八进制的对应: --- 无权限 000 0 --x 执行权限 001 1 -w- 写权限 010 2 -wx 写、执行 011 3 r-- 读权限 100 4 r-x 读、执行 101 5 rw- 读写 110 6 rwx 读写执行 111 7 文件权限的修改: #chmod [option]... MODE file 修改文件的权限 使用八进制数字形式: 更改目录权限时默认不会更改目录下文件的权限,递归修改需要使用-R选项,递归修改目录下的权限。 #chmod 750 /tmp/test1 直接指定mode进行定义: #chmod u=rw,g=r,o= filename or dir 使用逗号隔开 #chmod ug=rw,o=r filename or dir 当权限位一样时可以合并 #chmod all=rw(a=rw) filename or dir可以使用all同时定义相同的三类权限。 修改某类用户或者某些位的权限: #chmod u+x filename or dir 给属主增加执行权限 #chmod g-w filename or dir 给属组减去写权限 #chmod ug-w filename or dir 给属主属组减去写权限 #chmod a+r filename or dir 给所有人加上读取权限 参考其他文件的权限,将其他文件的权限赋予当前文件 #chmod --reference=/etc/fstab /tmp/test1 修改用户的属主属组,仅管理员root可以使用 #chown hadoop:hadoop /tmp/test2 将/tmp/test2文件的属主属组修改为hadoop #chown :hadoop /tmp/test3 将/tmp/test3文件的属组修改为hadoop -R 递归修改目录下的所有文件 --refence=filename 参照文件修改权限 #chgrp group filename 修改文件的属组 -R 递归修改文件的属组 为什么我们创建文件和目录的时候都有一个默认的权限?这个权限可不可以被修改? 实现默认权限的指派是因为遮罩码(umask) 遮罩码是反向运用的 创建文件的时候,默认权限的指派方式为: 666-umask 如果文件存在执行权限,则其对应八进制权限+1后赋予新权限,也就是说,新创建的文件不允许拥有执行权限。 创建目录时,默认权限的指派方式为: 777-umask root用户的umask遮罩码为022 普通用户的umask遮罩码为002 #umask ### 指定遮罩码,umask的设定仅对当前用户的当前shell有效 基础笔记二 2017-03-23 评论 2365 次浏览
第六节——用户和用户组管理 没有用户名,只有密码的认证方式称为token 有用户名(ID)和密码,通常称为认证identity(username/passwd) 用户的主要作用是实现资源的分配 资源的分配有三个层次,也称为3A概念 authentication 认证(识别用户) authorzation 授权 accouting 审计 对于linux来讲,用户有两类: 管理员:root ID:0 普通用户: ID 1-65535 系统用户 ID 1-499守护进程获取资源进行权限分配 登录用户 ID [500+ 交互式登录的用户 linux组:groupname/GID 管理员组:root 0 普通组: 系统组:1-499 centOS7为1-999 普通组:[500+ centOS7为[1000+ 组用以实现将用户和某一类权限建立联系。 linux的安全上下文: 我们操作计算机是依靠运行程序实现的,进程是以发起者的身份运行的,文件的权限位会对进程的发起者限制,这一概念为linux进程的安全上下文,一个进程能够访问多少资源取决于进程发起者的身份。 我们站在用户的角度,linux中的组有两类: 用户的基本组,组名同用户名,仅包含一个组,为私有组。 用户的附加组,额外组。 linux中同用户和组相关的配置文件: /etc/passwd 用户及其属性信息 /etc/group 用户组及其属性信息 /etc/shadow 用户密码及其属性信息 /etc/gshadow 组密码及其相关属性 /etc/passwd下的7个字段: 用户名:密码:UID:GID:GES(用户附加信息):家目录:默认shell /etc/group下的四个字段 组名:组密码占位符:组ID:以当前组为附加组用户的列表 /etc/shadow 9个字段 用户名: 加密密码:使用单项加密原理,MD5算法,记录了加密方式和加入的杂质 最近一次修改密码的时间:从1970.01.01 00:00至今过去的完整天数 密码最小使用期限: 密码最大使用期限: 密码警告时间: 密码禁用期: 账号过期日期: 保留字段 #md5sum file 提取特征码 md5(message digest 5) 输出定长为128bit #sha1sum file 提取特征码 #sha244sum file提取244位的特征码 #sha512sum file 提取512位的特征码 单项加密具有雪崩效应,初始条件的微小改变,将会导致结果的巨大变化 $6$salt$............. 6为加密算法 salt为杂质,为了避免使用相同密码的单项加密结果相同,被猜出密码,所以引入了salt。 密码的复杂策略性: 一是使用大小写字母、数字、特殊字符中的至少三种 二是使用足够的长度 三是不使用易猜测的密码 四是定期更换密码,不要使用曾使用过的密码。 用户和组管理的命令: 用户的创建useradd #useradd [option] login name 创建用户时会自动创建一个和用户同名的组,叫做私有组,linux禁止空密码用户登录,在/etc/shadow第二列表现为有两个感叹号’!!’附加在用户密码串前面。 -u 指定UID,[UID_MIN,UID_MAX],定义在/etc/login.defs中,如果不指定UID,则从已存在的最大UID开始+1自动指定。 -g 指明用户所属的基本组,可为组名,也可为GID -c 添加用户的注释信息,可以为任意字符,有空格时应当用引号引起来。 -d 指明家目录位置,不指定时在/home下创建一个与用户名同名的目录。 如果指定的目录已经存在,则不会从/etc/skel中复制文件(模板文件),每个用户在创建时会在/home目录下创建一个与用户名同名的目录,并从/etc/skel中复制文件,这些模板文件定义了用户的环境。 -s 指明用户的默认shell,不指明则有缺省值,添加用户的缺省值在/etc/default/useradd中定义 -G 为用户指明附加组,可以有多个,使用逗号隔开,需要注意的是,这些组事先都应存在。 -D 修改添加用户的默认值,会修改/etc/defaultuaeradd文件 -s 修改默认shell -g 指定用户的基本组,指定后所有之后创建用户的基本组都一样。 -f 账号禁用期时间,宽限期、非活动期。 -r 创建系统用户,centOS6 ID小于500,centOS7 ID小于1000 #groupadd [option] group_name 创建组 -g 指定GID,范围在/etc/default/useradd中修改 #id username 显示用户的真实的有效的ID和组的信息 -u 显示用户的UID -g 显示用户GID,只显示基本组ID -G 显示用户所有组的组ID(基本组和附加组) -n 显示用户的名称、组名称 #su [option] [-] [user[args]] switch user切换用户或者以另外一个身份执行命令 su USERNAME 非登录式切换,不读取目标用户的配置信息 su – USERNAME 登录式切换,会读取目标用户的配置文件,是完全切换 root用户切换到其他用户不需要密码 #su [-] username –c ‘COMMAND’ -l 相当于‘-’,表示登录式切换,即读取配置文件切换。 用户的属性修改: #usermod [option] [login_name] -u 指定新的UID -g 指定新的GID -G 指定新的附加组,原来的附加组会被覆盖, -a(appead) 追加 -G–a 追加附加组 -s 修改默认shell -c 修改新的注释信息 -d /path/to/home 指定新的家目录,不会创建目录,但是原目录中的文件不移动,且普通用户修改家目录后,原家目录不能进行访问,如果要同时移动文件,需要使用-m选项,创建目录并移动。 -l login_name 指定新的名字 -L lock锁定指定用户,在/etc/passwd文件密码列前加一个感叹号。 -U unlock解锁指定用户 -e 账户被禁用的日期YY-MM-DD格式 给用户添加密码: #passwd username 给指定用户添加密码,如果不指定参数则默认为当前用户修改密码。 -l 锁定用户 -u 解锁用户 -n 密码最短使用期限 -x 密码最长使用期限 -w warndays 提前多少天警告用户修改密码 -i inactivedays非活动期限(密码过期后的宽限期) --stdin 从标准输入接受密码,不再是交互式界面,成功与否都有信息输出,如果不想看可以将信息定向到/dev/null /dev/null 数据黑洞 /dev/zero 零生成器,要多少有多少 root用户能够添加修改其他用户密码 普通用户只能够修改自己的密码 没有密码的用户不能修改密码 passwd命令操作的是/etc/shadow文件 删除用户: #userdel [option]... login_name 删除指定用户 -r 删除用户的家目录 组信息修改: #groupmod [option]... group_name 基础笔记二 2017-03-22 评论 2352 次浏览 第五节——bash的基础特性 命令历史#history 相关的环境变量: $HISTSIZE 命令的历史条数 $HISTFILE 命令历史文件目录~/.bash_history $HISTFILESIZE 命令历史文件记录历史命令最大值 #history –d OFFSET(命令历史编号) -c 清空命令历史 -a 手动追加ache中的命令至缓存文件 ##(数字) 显示命令历史中最近##条命令 #!## 执行命令历史中第##条命令 #!! 执行上一次执行的命令 #!string 执行最近一个以指定字符串开始的命令 #!$ 调用上一条命令的最后一个参数 #ESC,. 在当前光标处调用上一条命令的参数 #Alt+. 调用上一条命令的参数在当前光标处 控制命令历史的记录方式: 环境变量:HISTCONTROL ignoredups 忽略重复的命令,所谓的重复就是指连续且相同 ignorespace 忽略以空白开头的命令 ignoreboth 以上两项都生效 #export HISTCONTROL=“ignorespace” 变量的声明方式,只对当前shell及其子shell生效 命令补全: 当我们在命令行总键入命令的时候,有一种简便的方式自动补全需要的命令,就是使用Tab键,当命令唯一时直接补全命令,当命令不唯一时列出所有相关的命令。 Tab键连续敲两次 为什么命令行下能够实现命令的补全?这与bash执行命令的方式有关。 内部命令就是shell程序自带的命令。 外部命令:bash会根据PATH环境变量定义的路径,自左而右在每个目录下搜索给定命令名称命名的文件,第一次找到的即为要执行的命令,找到以后会以hash的方式存储起来,如果将某个命令执行后移除,而又添加到了PATH环境变量中,但是命令就是执行失败,这时候就需要清空hash。hash –r 清空所有命令缓存。 路径补全: bash将用户给出的字符串作为路径的开头,并在其指定上级目录下进行搜索,如果搜索结果唯一则补全,如果不唯一则给出列表。 命令行展开: ~ 展开为用户的主目录 ~USERNAME 展开为指定用户的主目录 {} 可承载一个以逗号分隔的列表,并将其展开为多个路径。 /tmp/{a,b}=/tmp/a,/tmp/b 命令的执行状态结果: 成功 0 失败 1-255 失败的原因有很多 bash使用特殊变量$?,保存最近一条命令的执行状态结果。 程序的返回值:执行结果 程序的执行状态结果:成功,失败。 别名: #alias [name=’value’] 对命令进行别名 name为新定义的命令名称 value为定义的命令 命令别名只对当前shell进程有效,永久有效需要写入配置文件 ~/.bashrc 写入对应用户的家目录下的.bashrc文件 /etc/bashrc 写入对所有用户生效。 写入配置文件不会立即生效,需要重新读取或者重启。 source /path/to/config_file . /path/to/config_file 撤销别名: #unalias [-a] name(别名) -a 撤销所有别名 当我们不想执行别名,而想执行命令的原有意思时使用反斜线 #\COMMAND(alias) 执行命令原有的意思 bash的快捷键: ctrl + L 清屏操作 #clear 清屏操作 ctrl + a 将光标跳至首部 ctrl + e 将光标跳至尾部 ctrl + c 取消命令的执行,终止命令的执行 ctrl + u 删除命令行行首至光标处的内容 ctrl + k 删除光标所在处至命令行行尾的内容 bash的I/O重定向以及管道: 我们知道,程序是由指令+数据组成的 读入数据:input 输出数据:output 标准输入:缺省(默认)从键盘读取,描述符:数字0 计算机识别文件、用户进程都是靠ID号来识别的,我们用户看到的是文件名,但是在打开文件,内核内部为了实现文件追踪,会给打开的文件分配ID号,这个ID号称为文件描述符。 打开的文件都有一个fd(file descriptor文件描述符)。 程序运行结束时有数据输出,数据输出可以是到文件、到屏幕、到打印机等等,这么多位置应当有一个默认的输出位置。 标准输出:输出到显示器monitor,描述符为数字1 标准错误输出:输出到显示器monitor,描述符为数字2 I/O的重定向: 不从标准输入读取数据 不从标准输出输出数据 改变默认位置即为重定向。 输出重定向: COMMAND > NEW_POS,单个‘>’为覆盖重定向 COMMAND >> NEW_POS 两个‘>’为追加重定向 为了防止意外将文件内容覆盖,我们可以使用命令限制对文件的覆盖: #set –C 禁止将内容覆盖输出到已有文件中,但是我们确实需要覆盖怎么办?难道取消覆盖后在设置回来? #cat /etc/issue > |/tmp/test 强制覆盖文件 #set +C 允许将内容覆盖输出到文件。 错误输出是单独的数据流,使用2>进行重定向。 &>:合并数据流,定向至同一文件。 &>>:追加重定向,合并两个数据流,定向至同一文件。 #COMMAND >/path/to/file.out2>&1 将2定向到1 #COMMAND >>/path/to/file.out2>>&1 将2定向到1 输入重定向: < /path/to/filename #tr [option] SET1(字符集1) [SET2](字符集2) 不支持跟文件,作用是转换或者删除字符 -d 如果只有一个字符集,则删除出现在字符集中的内容。 如果有两个字符集,则将SET1 中的字符集按位替换成SET2中的字符。 #tr abc ABC < /etc/fstab 一般只使用一个参数,多个使用循环实现 ‘<<’表示此处生成文档 #cat<< EOF >abc >ABC >xyz >XYZ >EOF 保存键盘上键入的数据,此处是输出到屏幕,EOF为指定的结束符,我们可以指定其他字符。 #cat >>/tmp/test<<EOF >a >b >A >EOF 定向到文件中 EOF为特定字符串,End Of File #tee[option] file 一路输入两路输出,一路定向到文件,一路打印到屏幕。 tee是覆盖输出,可以在管道中截取数据。 管道:COMMAND1 |COMMAND2 |COMMAND3.... 管道的符号为‘|’,表示将前面一个命令的执行结果送入后一个命令,随后一个命令会在当前shell的子shell中执行。 shell下的编程: bash为我们提供了编程环境,依靠调用系统所提供的命令(已存在的二进制程序),组织成一定形式解释执行。 说道解释执行,我们就需要说一说程序的变成风格和编程语言分类。 程序的变成风格: 面向过程:以指令为中心,数据服务于指令。 面向对象:以数据为中心,指令服务于数据。 我们之前说过,程序是由指令和数据组成的。计算机只能识别二进制的指令,所以无论我们使用什么编程语言,最终都要转换为二进制指令才可以。 编程语言按接近人类语言的程度分为高级语言和低级语言,高级并不是说很厉害,高级指的是接近人类语言习惯,还有一些语言接近底层硬件,但是对人却不友好,所以称为低级语言。 编程语言按照执行方式可以分为编译型语言和解释性语言: 编译类型的语言:高级语言-->编译器-->目标代码 C语言、C++、JAVA等等 编译类型语言编写好代码后,需要通过编译器将代码转换成静态的二进制程序,可以独立执行。 解释类型的语言:高级语言-->解释器—>目标代码 shell、perl 基础笔记二 2017-03-21 评论 2437 次浏览 第四节——linux相关 文件系统: 在linux上所有的文件想要被访问到,必须要通过一个叫做根文件系统的位置开始,但是这并不意味着linux就不需要分区了。为了实现文件系统或者实现多个文件系统独立管理,linux下也需要分区,但是任何一个分区在完成分区之后是不能够实现自我独立访问的,二是只能与现有的根一同被访问。 所有的分区都会被关联到根上。 根文件系统(rootfs) FHS定义的linux文件系统的标准 /boot 引导文件存放目录,内核文件vmlinuz、引导加载器bootloader、grub都在此目录中。 /bin 共所有用户使用的基本命令,不能关联到独立的分区,这是系统启动时就会使用到的命令。 /sbin 管理类命令,不能关联到独立分区,系统启动时会用到的程序。 /lib 基本的共享库文件,以及内核模块文件/lib/modules /lib64 这是在64位操作系统上才有的目录,库文件基本上都位于此目录下,为了向下兼容,原/lib目录下也有相应的库文件。 /etc 应用程序的配置文件存放目录,大多为纯文本文件。 /etc/opt 早些时候程序安装在此路径下 /etc/X11 图形的现实规范,为xwindow提供配置文件(x协议,11位版本号) /home 用户的家目录 /home/username 普通用户的家目录 /root 管理员的家目录 /media 便携式设备的挂载目录 /mnt 临时文件系统的挂载目录 /dev 设备文件目录(特殊文件或者特殊文件存放目录) b:block device随机访问 c:character device 线性访问 /opt 第三方应用程序安装位置 /srv 系统上运行的服务用到的数据放于此 /tmp 临时文件存放目录 以上目录除了/boot、/home外都不能独立分区 /usr usr is shareable read-only date全局只读数据,通常建议此目录单独分区挂载。 /usr/bin 普通用户可执行的命令 /usr/sbin 管理员可执行的命令 /usr/lib 库文件 /usr/lib64 库文件 /usr/share 放置共享文件的目录 /usr/local 取代/opt目录的第三方程序的安装位置 /usr/include c程序的头文件,调用库文件的接口 /usr/src 源代码的存放目录 除了启动外的基本应用程序都放在/usr目录下,保证系统拥有完整的功能提供服务。 /var 存放经常发生变动的文件 /var/cache 应用程序的date缓存目录 /var/lib 应用程序状态信息数据 /var/local 专用于为/usr/local下的应用程序提供存储可变date /var/lock 锁文件的存放目录 /var/log 日志目录及文件存于此目录下 /var/opt 为/opt下的程序存储可变数据 /var/run 与运行中进程相关的数据,通常存放进程的PID文件 /var/spool 缓冲池 /var/tmp 存储系统两次重启之间产生的数据 /proc 伪文件系统,用于输出内核与进程信息相关的虚拟文件系统。 /sys 伪文件系统,输出当前系统上的硬件设备相关信息的虚拟文件系统。 /misc 用于存放杂项man7 /selinux security enhanced linux 内核中实现安全策略等信息的存放位置 /lost+found 是由ext文件系统产生 linux上应用程序的组成部分以及可能存放的位置: 二进制程序:/bin /sbin /usr/bin /usr/sbin /usr/local/bin/usr/local/sbin 库文件:/bin /sbin /usr/{bin,sbin}/usr/local/{bin,sbin} 配置文件:/etc /etc/DIRECTORY /usr/local/etc 帮助文件:/usr/share/man /usr/share/doc/usr/local/share/{man,doc} linux下的文件类型,从磁盘上的组织形式区分: -(f) 普通文件 d 目录文件,在目录文件中的数据为,通过这个目录能访问到的文件或者目录的路径。即从文件名到文件元数据的映射关系。 b 块设备文件,只有元数据 c 字符设备文件,只有元数据 l 符号链接文件 p 管道文件 s 套接字文件,socker(接口),是IP:端口的形式,实现主机内通信,跨主机通信使用协议。 文件名通配:glob(globbing) what is glob? glob是bash中用于实现文件名通配的机制。 通配符:* ? [] *表示任意长度的任意字符 ?表示任意单个字符 [list] 匹配指定范围内[list]任意单个字符 [0-9] 表示所有的数字 [a-z] 表示不区分大小写字母 [A-Z] 表示大写字母 如果我们需要匹配连字符‘-’,需要使用反斜线转义。 专用字符集:不包括通配符[] [:alnum:] 任意数字或者字母 [:alpha:] 任意字母 [:space:] 空格 [:lower:] 小写字母 [:digit:] 任意数字,相当于0-9,此处没有匹配符[] [:punct:] 标点符号 #ls /tmp/l*[0-9]*[[:lower:]] 以字母l开头,中间有一个数字,并以小写字母结尾的文件。 基础笔记二 2017-03-20 评论 2403 次浏览 第三节——基础命令 #date 显示或者设置系统时间 #date [option]... [+format] 以指定的格式显示时间 [option]选项很少使用,这里就不多讲 [+format] 这是格式的指定方式,前面有一个’+’ %A,%a 显示星期几 #date +%A %D 以月/日/年的格式显示时间 #date+%D %F 以年-月-日的格式显示时间 #date+%F %T 获取当前系统时间 #date +T %H 时 %M 分 %S 秒 #date [MMDDhhmmYY[cc]][.ss] 设置时间 MM两位的月份 DD 两位的日期 hh 两位的小时 mm 两位的分钟 YY 两位的年份(末尾两位) cc 四位的年份 .ss 两位的秒使用点‘.’分离 在linux中有两个时钟: 一是系统时钟:linux内核通过CPU工作频率进行计时。 二是硬件时钟:实时时钟,使用#clock,#hwclock查看硬件时钟。 #hwclock 查询硬件时钟 -s,--hctosys把系统时间设置为硬件时钟相同 -w,—systohc 将硬件时钟设置为系统时钟相同 #cal 显示日历 文件时间戳管理工具: #touch [option]/path/to/filename 修改文件的时间戳,当文件不存在时创建文件 -a 修改访问时间 -m 修改修改时间 -t 指明时间戳,同-a/-m共用 [[cc]YYMMDDhhmm[ss]时间格式 -c 不创建文件 当touch一个文件时,文件不存在则默认创建该文件,当文件存在时只修改其时间戳。 一个文件的组成部分有两个:metadata元数据,date数据。 #stat /path/to/filename 查看文件的状态。 文件有三个时间戳: access time 访问时间atime 读取文件内容叫访问 modify time 修改时间 mtime 修改文件内容叫修改 change time 改变时间 ctime 元数据的改变叫做改变,即上面两项任何一项变化都会修改改变时间。 目录相关的命令: 每一个用户都有自己的家目录,在bash中家目录使用特殊的展开符代替’~’ #cd 进行目录的切换 #cd ~切换到当前用户的家目录 #cd – 短横线代表上一级目录,可以快速实现在两个目录间切换。 root用户,即管理员可以切换到主机上任意用户的家目录 #cd ~USER linux操作系统中,所有文件都在根目录下,所以一个文件的绝对路径都是由根目录开始的,但是在目录结构中有这么两个概念: 一个是绝对路径,上面提到过了,绝对路径就是由根开始的路径。 一个是相对路径,相对路径是以当前位置为起始的路径。 当前目录(current directory),也称作working directory。 #pwd(printing working directory) 打印当前路径。 pwd是内建的环境变量,保存了当前目录路径,为什么pwd命令能够实现当前位置的显示?因为有pwd变量 $OLDPWD 上一次所在目录路径,这也就是为什么能够实现目录的切换。因此cd –相当于cd $OLDPWD #ls list,列出指定目录(路径)下的文件列表 -a,--all显示所有文件,包括隐藏文件 -A 除了. ..即当前目录,上一级目录外都显示。 -l 使用长列表信息显示 -R(--recursive)递归显示 -h人性化显示,即文件大小单位的换算 -d 显示当前目录的信息(目录本身),常与-l一同使用 -r逆序的格式显示 长列表显示的时候有很多列 第一列第一个字符为文件类型,余下的九个字符为权限的表示位。 第二列表示文件被硬链接的次数 第三列为文件的属主 第四列为文件的属组 第五列为文件的大小(默认单位为字节) 第六列为时间,为最近一次被修改的时间 第七列为文件名 文件的类型: - 普通文件 d 目录文件 l 链接文件 b 块设备 c 字符设备 p 管道 s 套接字文件 时间戳: atime(access time)访问时间 mtime(modify time)修改时间,指的是修改内容,只要修改文件就会改变,修改时间属于元信息 ctime(change time)改变时间,指的是元信息的改变,改变不一定会修改。 #statfilename 显示文件或者文件系统的状态,获取指定文件的元数据信息 #ls /path/to/dir 查看指定目录下的文件,ls命令默认启用了别名,别名中包含了颜色显示的规则。 黑色 普通文件 蓝色 目录文件 绿色 拥有可执行权限的文件 #mkdir [option] /path/to/somewhere -p 如果创建目录重复则不再报错,且目标目录的父目录不存在时创建,为递归创建,从右到左查找路径,不存在则创建。 -v 喜爱你是详细信息 -m创建目录的同时直接指定权限 #rmdir [option]/path/too/somewhere 只能删除空目录 -v 显示过程 -p 递归删除 #tree 列出目录的层级结构 -L # 限制显示层级 -d 只显示目录 -P pattern模式,只显示由指定pattern匹配到的路径。 文件查看命令: #cat /path/to/filename(concatenate)连接文件并且显示出来,cat命令不会翻屏,是一次性贴入屏幕。 -E 显示行结束符(换行符‘$’) -T 显示制表符 -n 对行进行编号,只是显示时间编号,对文件内容无影响。 当cat命令没有跟任何参数时,会默认从键盘读取,这也就是我们键入cat命令后为什么退不出来。 cat命令还可以将两个或者两个以上的文件连接起来显示 #tac /path/to/filename 将文件反向显示,即最后一行成为第一行,第一行成为最后一行。 有的时候我们并不知道文件的类型,是不是可执行文件,是不是文本文件等等,我们总不能瞎猜对吧? #file /path/to/filename 查看文件内容类型,顺便回顾一下,type是查看命令的类型,是内建命令还是外部命令。 #more [option] filename 查看文件内容 -d 显示翻页及退出提示 +n 定位显示,从第几行开始 #less [option] filename 查看文件内容 man命令调用的便是less,不再赘述其使用方法。 #head [option] filename 查看文件指定内容 -n # 指定查看文件前#行 -c # 指定查看文件前#个字节 #tail [option] filename 查看文件指定内容 -n #显示文件后#行内容 -c # 基础笔记二 2017-03-19 评论 2441 次浏览 12后一页 » 关于博主 几人行 纸上谈来终觉浅,绝知此事要躬行。 了解更多 文章分类 OpenStack+Ceph(5) Python笔记(0) CI/CD(4) Ansible(1) Docker笔记(3) shell脚本(24) Linux_quession&answer(2) 调优文档(4) 服务(6) 随手笔记(21) 妄尘集(20) 基础笔记二(8) 基础笔记综合整理(20) 给自己讲linux(114) 最受欢迎的文章 博客停更通知( 19,852 人看过 ) OpenStack(一)( 12,690 人看过 ) 情书( 11,295 人看过 ) 我的青春里没有爱情( 9,641 人看过 ) 操作系统原理--Linux篇(摘录)( 9,361 人看过 ) OpenStack+Ceph云平台卷清理操作( 9,257 人看过 ) OpenStack+Ceph磁盘解锁( 8,773 人看过 ) Docker container 修改MAC( 8,539 人看过 ) 防火墙规则笔记整理( 7,835 人看过 ) JumpServer简介( 7,452 人看过 ) 最近回复 wuzetian: alert("你好,我是一个警告框!"); wuzetian: function myFunction() { alert("你好,我是一个警告框!"); } wuzetian: http://fxme.top/index.php/page/2/ wuzetian: http://fxme.top/index.php/page/2/ wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习
第五节——bash的基础特性 命令历史#history 相关的环境变量: $HISTSIZE 命令的历史条数 $HISTFILE 命令历史文件目录~/.bash_history $HISTFILESIZE 命令历史文件记录历史命令最大值 #history –d OFFSET(命令历史编号) -c 清空命令历史 -a 手动追加ache中的命令至缓存文件 ##(数字) 显示命令历史中最近##条命令 #!## 执行命令历史中第##条命令 #!! 执行上一次执行的命令 #!string 执行最近一个以指定字符串开始的命令 #!$ 调用上一条命令的最后一个参数 #ESC,. 在当前光标处调用上一条命令的参数 #Alt+. 调用上一条命令的参数在当前光标处 控制命令历史的记录方式: 环境变量:HISTCONTROL ignoredups 忽略重复的命令,所谓的重复就是指连续且相同 ignorespace 忽略以空白开头的命令 ignoreboth 以上两项都生效 #export HISTCONTROL=“ignorespace” 变量的声明方式,只对当前shell及其子shell生效 命令补全: 当我们在命令行总键入命令的时候,有一种简便的方式自动补全需要的命令,就是使用Tab键,当命令唯一时直接补全命令,当命令不唯一时列出所有相关的命令。 Tab键连续敲两次 为什么命令行下能够实现命令的补全?这与bash执行命令的方式有关。 内部命令就是shell程序自带的命令。 外部命令:bash会根据PATH环境变量定义的路径,自左而右在每个目录下搜索给定命令名称命名的文件,第一次找到的即为要执行的命令,找到以后会以hash的方式存储起来,如果将某个命令执行后移除,而又添加到了PATH环境变量中,但是命令就是执行失败,这时候就需要清空hash。hash –r 清空所有命令缓存。 路径补全: bash将用户给出的字符串作为路径的开头,并在其指定上级目录下进行搜索,如果搜索结果唯一则补全,如果不唯一则给出列表。 命令行展开: ~ 展开为用户的主目录 ~USERNAME 展开为指定用户的主目录 {} 可承载一个以逗号分隔的列表,并将其展开为多个路径。 /tmp/{a,b}=/tmp/a,/tmp/b 命令的执行状态结果: 成功 0 失败 1-255 失败的原因有很多 bash使用特殊变量$?,保存最近一条命令的执行状态结果。 程序的返回值:执行结果 程序的执行状态结果:成功,失败。 别名: #alias [name=’value’] 对命令进行别名 name为新定义的命令名称 value为定义的命令 命令别名只对当前shell进程有效,永久有效需要写入配置文件 ~/.bashrc 写入对应用户的家目录下的.bashrc文件 /etc/bashrc 写入对所有用户生效。 写入配置文件不会立即生效,需要重新读取或者重启。 source /path/to/config_file . /path/to/config_file 撤销别名: #unalias [-a] name(别名) -a 撤销所有别名 当我们不想执行别名,而想执行命令的原有意思时使用反斜线 #\COMMAND(alias) 执行命令原有的意思 bash的快捷键: ctrl + L 清屏操作 #clear 清屏操作 ctrl + a 将光标跳至首部 ctrl + e 将光标跳至尾部 ctrl + c 取消命令的执行,终止命令的执行 ctrl + u 删除命令行行首至光标处的内容 ctrl + k 删除光标所在处至命令行行尾的内容 bash的I/O重定向以及管道: 我们知道,程序是由指令+数据组成的 读入数据:input 输出数据:output 标准输入:缺省(默认)从键盘读取,描述符:数字0 计算机识别文件、用户进程都是靠ID号来识别的,我们用户看到的是文件名,但是在打开文件,内核内部为了实现文件追踪,会给打开的文件分配ID号,这个ID号称为文件描述符。 打开的文件都有一个fd(file descriptor文件描述符)。 程序运行结束时有数据输出,数据输出可以是到文件、到屏幕、到打印机等等,这么多位置应当有一个默认的输出位置。 标准输出:输出到显示器monitor,描述符为数字1 标准错误输出:输出到显示器monitor,描述符为数字2 I/O的重定向: 不从标准输入读取数据 不从标准输出输出数据 改变默认位置即为重定向。 输出重定向: COMMAND > NEW_POS,单个‘>’为覆盖重定向 COMMAND >> NEW_POS 两个‘>’为追加重定向 为了防止意外将文件内容覆盖,我们可以使用命令限制对文件的覆盖: #set –C 禁止将内容覆盖输出到已有文件中,但是我们确实需要覆盖怎么办?难道取消覆盖后在设置回来? #cat /etc/issue > |/tmp/test 强制覆盖文件 #set +C 允许将内容覆盖输出到文件。 错误输出是单独的数据流,使用2>进行重定向。 &>:合并数据流,定向至同一文件。 &>>:追加重定向,合并两个数据流,定向至同一文件。 #COMMAND >/path/to/file.out2>&1 将2定向到1 #COMMAND >>/path/to/file.out2>>&1 将2定向到1 输入重定向: < /path/to/filename #tr [option] SET1(字符集1) [SET2](字符集2) 不支持跟文件,作用是转换或者删除字符 -d 如果只有一个字符集,则删除出现在字符集中的内容。 如果有两个字符集,则将SET1 中的字符集按位替换成SET2中的字符。 #tr abc ABC < /etc/fstab 一般只使用一个参数,多个使用循环实现 ‘<<’表示此处生成文档 #cat<< EOF >abc >ABC >xyz >XYZ >EOF 保存键盘上键入的数据,此处是输出到屏幕,EOF为指定的结束符,我们可以指定其他字符。 #cat >>/tmp/test<<EOF >a >b >A >EOF 定向到文件中 EOF为特定字符串,End Of File #tee[option] file 一路输入两路输出,一路定向到文件,一路打印到屏幕。 tee是覆盖输出,可以在管道中截取数据。 管道:COMMAND1 |COMMAND2 |COMMAND3.... 管道的符号为‘|’,表示将前面一个命令的执行结果送入后一个命令,随后一个命令会在当前shell的子shell中执行。 shell下的编程: bash为我们提供了编程环境,依靠调用系统所提供的命令(已存在的二进制程序),组织成一定形式解释执行。 说道解释执行,我们就需要说一说程序的变成风格和编程语言分类。 程序的变成风格: 面向过程:以指令为中心,数据服务于指令。 面向对象:以数据为中心,指令服务于数据。 我们之前说过,程序是由指令和数据组成的。计算机只能识别二进制的指令,所以无论我们使用什么编程语言,最终都要转换为二进制指令才可以。 编程语言按接近人类语言的程度分为高级语言和低级语言,高级并不是说很厉害,高级指的是接近人类语言习惯,还有一些语言接近底层硬件,但是对人却不友好,所以称为低级语言。 编程语言按照执行方式可以分为编译型语言和解释性语言: 编译类型的语言:高级语言-->编译器-->目标代码 C语言、C++、JAVA等等 编译类型语言编写好代码后,需要通过编译器将代码转换成静态的二进制程序,可以独立执行。 解释类型的语言:高级语言-->解释器—>目标代码 shell、perl 基础笔记二 2017-03-21 评论 2437 次浏览 第四节——linux相关 文件系统: 在linux上所有的文件想要被访问到,必须要通过一个叫做根文件系统的位置开始,但是这并不意味着linux就不需要分区了。为了实现文件系统或者实现多个文件系统独立管理,linux下也需要分区,但是任何一个分区在完成分区之后是不能够实现自我独立访问的,二是只能与现有的根一同被访问。 所有的分区都会被关联到根上。 根文件系统(rootfs) FHS定义的linux文件系统的标准 /boot 引导文件存放目录,内核文件vmlinuz、引导加载器bootloader、grub都在此目录中。 /bin 共所有用户使用的基本命令,不能关联到独立的分区,这是系统启动时就会使用到的命令。 /sbin 管理类命令,不能关联到独立分区,系统启动时会用到的程序。 /lib 基本的共享库文件,以及内核模块文件/lib/modules /lib64 这是在64位操作系统上才有的目录,库文件基本上都位于此目录下,为了向下兼容,原/lib目录下也有相应的库文件。 /etc 应用程序的配置文件存放目录,大多为纯文本文件。 /etc/opt 早些时候程序安装在此路径下 /etc/X11 图形的现实规范,为xwindow提供配置文件(x协议,11位版本号) /home 用户的家目录 /home/username 普通用户的家目录 /root 管理员的家目录 /media 便携式设备的挂载目录 /mnt 临时文件系统的挂载目录 /dev 设备文件目录(特殊文件或者特殊文件存放目录) b:block device随机访问 c:character device 线性访问 /opt 第三方应用程序安装位置 /srv 系统上运行的服务用到的数据放于此 /tmp 临时文件存放目录 以上目录除了/boot、/home外都不能独立分区 /usr usr is shareable read-only date全局只读数据,通常建议此目录单独分区挂载。 /usr/bin 普通用户可执行的命令 /usr/sbin 管理员可执行的命令 /usr/lib 库文件 /usr/lib64 库文件 /usr/share 放置共享文件的目录 /usr/local 取代/opt目录的第三方程序的安装位置 /usr/include c程序的头文件,调用库文件的接口 /usr/src 源代码的存放目录 除了启动外的基本应用程序都放在/usr目录下,保证系统拥有完整的功能提供服务。 /var 存放经常发生变动的文件 /var/cache 应用程序的date缓存目录 /var/lib 应用程序状态信息数据 /var/local 专用于为/usr/local下的应用程序提供存储可变date /var/lock 锁文件的存放目录 /var/log 日志目录及文件存于此目录下 /var/opt 为/opt下的程序存储可变数据 /var/run 与运行中进程相关的数据,通常存放进程的PID文件 /var/spool 缓冲池 /var/tmp 存储系统两次重启之间产生的数据 /proc 伪文件系统,用于输出内核与进程信息相关的虚拟文件系统。 /sys 伪文件系统,输出当前系统上的硬件设备相关信息的虚拟文件系统。 /misc 用于存放杂项man7 /selinux security enhanced linux 内核中实现安全策略等信息的存放位置 /lost+found 是由ext文件系统产生 linux上应用程序的组成部分以及可能存放的位置: 二进制程序:/bin /sbin /usr/bin /usr/sbin /usr/local/bin/usr/local/sbin 库文件:/bin /sbin /usr/{bin,sbin}/usr/local/{bin,sbin} 配置文件:/etc /etc/DIRECTORY /usr/local/etc 帮助文件:/usr/share/man /usr/share/doc/usr/local/share/{man,doc} linux下的文件类型,从磁盘上的组织形式区分: -(f) 普通文件 d 目录文件,在目录文件中的数据为,通过这个目录能访问到的文件或者目录的路径。即从文件名到文件元数据的映射关系。 b 块设备文件,只有元数据 c 字符设备文件,只有元数据 l 符号链接文件 p 管道文件 s 套接字文件,socker(接口),是IP:端口的形式,实现主机内通信,跨主机通信使用协议。 文件名通配:glob(globbing) what is glob? glob是bash中用于实现文件名通配的机制。 通配符:* ? [] *表示任意长度的任意字符 ?表示任意单个字符 [list] 匹配指定范围内[list]任意单个字符 [0-9] 表示所有的数字 [a-z] 表示不区分大小写字母 [A-Z] 表示大写字母 如果我们需要匹配连字符‘-’,需要使用反斜线转义。 专用字符集:不包括通配符[] [:alnum:] 任意数字或者字母 [:alpha:] 任意字母 [:space:] 空格 [:lower:] 小写字母 [:digit:] 任意数字,相当于0-9,此处没有匹配符[] [:punct:] 标点符号 #ls /tmp/l*[0-9]*[[:lower:]] 以字母l开头,中间有一个数字,并以小写字母结尾的文件。 基础笔记二 2017-03-20 评论 2403 次浏览 第三节——基础命令 #date 显示或者设置系统时间 #date [option]... [+format] 以指定的格式显示时间 [option]选项很少使用,这里就不多讲 [+format] 这是格式的指定方式,前面有一个’+’ %A,%a 显示星期几 #date +%A %D 以月/日/年的格式显示时间 #date+%D %F 以年-月-日的格式显示时间 #date+%F %T 获取当前系统时间 #date +T %H 时 %M 分 %S 秒 #date [MMDDhhmmYY[cc]][.ss] 设置时间 MM两位的月份 DD 两位的日期 hh 两位的小时 mm 两位的分钟 YY 两位的年份(末尾两位) cc 四位的年份 .ss 两位的秒使用点‘.’分离 在linux中有两个时钟: 一是系统时钟:linux内核通过CPU工作频率进行计时。 二是硬件时钟:实时时钟,使用#clock,#hwclock查看硬件时钟。 #hwclock 查询硬件时钟 -s,--hctosys把系统时间设置为硬件时钟相同 -w,—systohc 将硬件时钟设置为系统时钟相同 #cal 显示日历 文件时间戳管理工具: #touch [option]/path/to/filename 修改文件的时间戳,当文件不存在时创建文件 -a 修改访问时间 -m 修改修改时间 -t 指明时间戳,同-a/-m共用 [[cc]YYMMDDhhmm[ss]时间格式 -c 不创建文件 当touch一个文件时,文件不存在则默认创建该文件,当文件存在时只修改其时间戳。 一个文件的组成部分有两个:metadata元数据,date数据。 #stat /path/to/filename 查看文件的状态。 文件有三个时间戳: access time 访问时间atime 读取文件内容叫访问 modify time 修改时间 mtime 修改文件内容叫修改 change time 改变时间 ctime 元数据的改变叫做改变,即上面两项任何一项变化都会修改改变时间。 目录相关的命令: 每一个用户都有自己的家目录,在bash中家目录使用特殊的展开符代替’~’ #cd 进行目录的切换 #cd ~切换到当前用户的家目录 #cd – 短横线代表上一级目录,可以快速实现在两个目录间切换。 root用户,即管理员可以切换到主机上任意用户的家目录 #cd ~USER linux操作系统中,所有文件都在根目录下,所以一个文件的绝对路径都是由根目录开始的,但是在目录结构中有这么两个概念: 一个是绝对路径,上面提到过了,绝对路径就是由根开始的路径。 一个是相对路径,相对路径是以当前位置为起始的路径。 当前目录(current directory),也称作working directory。 #pwd(printing working directory) 打印当前路径。 pwd是内建的环境变量,保存了当前目录路径,为什么pwd命令能够实现当前位置的显示?因为有pwd变量 $OLDPWD 上一次所在目录路径,这也就是为什么能够实现目录的切换。因此cd –相当于cd $OLDPWD #ls list,列出指定目录(路径)下的文件列表 -a,--all显示所有文件,包括隐藏文件 -A 除了. ..即当前目录,上一级目录外都显示。 -l 使用长列表信息显示 -R(--recursive)递归显示 -h人性化显示,即文件大小单位的换算 -d 显示当前目录的信息(目录本身),常与-l一同使用 -r逆序的格式显示 长列表显示的时候有很多列 第一列第一个字符为文件类型,余下的九个字符为权限的表示位。 第二列表示文件被硬链接的次数 第三列为文件的属主 第四列为文件的属组 第五列为文件的大小(默认单位为字节) 第六列为时间,为最近一次被修改的时间 第七列为文件名 文件的类型: - 普通文件 d 目录文件 l 链接文件 b 块设备 c 字符设备 p 管道 s 套接字文件 时间戳: atime(access time)访问时间 mtime(modify time)修改时间,指的是修改内容,只要修改文件就会改变,修改时间属于元信息 ctime(change time)改变时间,指的是元信息的改变,改变不一定会修改。 #statfilename 显示文件或者文件系统的状态,获取指定文件的元数据信息 #ls /path/to/dir 查看指定目录下的文件,ls命令默认启用了别名,别名中包含了颜色显示的规则。 黑色 普通文件 蓝色 目录文件 绿色 拥有可执行权限的文件 #mkdir [option] /path/to/somewhere -p 如果创建目录重复则不再报错,且目标目录的父目录不存在时创建,为递归创建,从右到左查找路径,不存在则创建。 -v 喜爱你是详细信息 -m创建目录的同时直接指定权限 #rmdir [option]/path/too/somewhere 只能删除空目录 -v 显示过程 -p 递归删除 #tree 列出目录的层级结构 -L # 限制显示层级 -d 只显示目录 -P pattern模式,只显示由指定pattern匹配到的路径。 文件查看命令: #cat /path/to/filename(concatenate)连接文件并且显示出来,cat命令不会翻屏,是一次性贴入屏幕。 -E 显示行结束符(换行符‘$’) -T 显示制表符 -n 对行进行编号,只是显示时间编号,对文件内容无影响。 当cat命令没有跟任何参数时,会默认从键盘读取,这也就是我们键入cat命令后为什么退不出来。 cat命令还可以将两个或者两个以上的文件连接起来显示 #tac /path/to/filename 将文件反向显示,即最后一行成为第一行,第一行成为最后一行。 有的时候我们并不知道文件的类型,是不是可执行文件,是不是文本文件等等,我们总不能瞎猜对吧? #file /path/to/filename 查看文件内容类型,顺便回顾一下,type是查看命令的类型,是内建命令还是外部命令。 #more [option] filename 查看文件内容 -d 显示翻页及退出提示 +n 定位显示,从第几行开始 #less [option] filename 查看文件内容 man命令调用的便是less,不再赘述其使用方法。 #head [option] filename 查看文件指定内容 -n # 指定查看文件前#行 -c # 指定查看文件前#个字节 #tail [option] filename 查看文件指定内容 -n #显示文件后#行内容 -c # 基础笔记二 2017-03-19 评论 2441 次浏览 12后一页 » 关于博主 几人行 纸上谈来终觉浅,绝知此事要躬行。 了解更多 文章分类 OpenStack+Ceph(5) Python笔记(0) CI/CD(4) Ansible(1) Docker笔记(3) shell脚本(24) Linux_quession&answer(2) 调优文档(4) 服务(6) 随手笔记(21) 妄尘集(20) 基础笔记二(8) 基础笔记综合整理(20) 给自己讲linux(114) 最受欢迎的文章 博客停更通知( 19,852 人看过 ) OpenStack(一)( 12,690 人看过 ) 情书( 11,295 人看过 ) 我的青春里没有爱情( 9,641 人看过 ) 操作系统原理--Linux篇(摘录)( 9,361 人看过 ) OpenStack+Ceph云平台卷清理操作( 9,257 人看过 ) OpenStack+Ceph磁盘解锁( 8,773 人看过 ) Docker container 修改MAC( 8,539 人看过 ) 防火墙规则笔记整理( 7,835 人看过 ) JumpServer简介( 7,452 人看过 ) 最近回复 wuzetian: alert("你好,我是一个警告框!"); wuzetian: function myFunction() { alert("你好,我是一个警告框!"); } wuzetian: http://fxme.top/index.php/page/2/ wuzetian: http://fxme.top/index.php/page/2/ wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习
第四节——linux相关 文件系统: 在linux上所有的文件想要被访问到,必须要通过一个叫做根文件系统的位置开始,但是这并不意味着linux就不需要分区了。为了实现文件系统或者实现多个文件系统独立管理,linux下也需要分区,但是任何一个分区在完成分区之后是不能够实现自我独立访问的,二是只能与现有的根一同被访问。 所有的分区都会被关联到根上。 根文件系统(rootfs) FHS定义的linux文件系统的标准 /boot 引导文件存放目录,内核文件vmlinuz、引导加载器bootloader、grub都在此目录中。 /bin 共所有用户使用的基本命令,不能关联到独立的分区,这是系统启动时就会使用到的命令。 /sbin 管理类命令,不能关联到独立分区,系统启动时会用到的程序。 /lib 基本的共享库文件,以及内核模块文件/lib/modules /lib64 这是在64位操作系统上才有的目录,库文件基本上都位于此目录下,为了向下兼容,原/lib目录下也有相应的库文件。 /etc 应用程序的配置文件存放目录,大多为纯文本文件。 /etc/opt 早些时候程序安装在此路径下 /etc/X11 图形的现实规范,为xwindow提供配置文件(x协议,11位版本号) /home 用户的家目录 /home/username 普通用户的家目录 /root 管理员的家目录 /media 便携式设备的挂载目录 /mnt 临时文件系统的挂载目录 /dev 设备文件目录(特殊文件或者特殊文件存放目录) b:block device随机访问 c:character device 线性访问 /opt 第三方应用程序安装位置 /srv 系统上运行的服务用到的数据放于此 /tmp 临时文件存放目录 以上目录除了/boot、/home外都不能独立分区 /usr usr is shareable read-only date全局只读数据,通常建议此目录单独分区挂载。 /usr/bin 普通用户可执行的命令 /usr/sbin 管理员可执行的命令 /usr/lib 库文件 /usr/lib64 库文件 /usr/share 放置共享文件的目录 /usr/local 取代/opt目录的第三方程序的安装位置 /usr/include c程序的头文件,调用库文件的接口 /usr/src 源代码的存放目录 除了启动外的基本应用程序都放在/usr目录下,保证系统拥有完整的功能提供服务。 /var 存放经常发生变动的文件 /var/cache 应用程序的date缓存目录 /var/lib 应用程序状态信息数据 /var/local 专用于为/usr/local下的应用程序提供存储可变date /var/lock 锁文件的存放目录 /var/log 日志目录及文件存于此目录下 /var/opt 为/opt下的程序存储可变数据 /var/run 与运行中进程相关的数据,通常存放进程的PID文件 /var/spool 缓冲池 /var/tmp 存储系统两次重启之间产生的数据 /proc 伪文件系统,用于输出内核与进程信息相关的虚拟文件系统。 /sys 伪文件系统,输出当前系统上的硬件设备相关信息的虚拟文件系统。 /misc 用于存放杂项man7 /selinux security enhanced linux 内核中实现安全策略等信息的存放位置 /lost+found 是由ext文件系统产生 linux上应用程序的组成部分以及可能存放的位置: 二进制程序:/bin /sbin /usr/bin /usr/sbin /usr/local/bin/usr/local/sbin 库文件:/bin /sbin /usr/{bin,sbin}/usr/local/{bin,sbin} 配置文件:/etc /etc/DIRECTORY /usr/local/etc 帮助文件:/usr/share/man /usr/share/doc/usr/local/share/{man,doc} linux下的文件类型,从磁盘上的组织形式区分: -(f) 普通文件 d 目录文件,在目录文件中的数据为,通过这个目录能访问到的文件或者目录的路径。即从文件名到文件元数据的映射关系。 b 块设备文件,只有元数据 c 字符设备文件,只有元数据 l 符号链接文件 p 管道文件 s 套接字文件,socker(接口),是IP:端口的形式,实现主机内通信,跨主机通信使用协议。 文件名通配:glob(globbing) what is glob? glob是bash中用于实现文件名通配的机制。 通配符:* ? [] *表示任意长度的任意字符 ?表示任意单个字符 [list] 匹配指定范围内[list]任意单个字符 [0-9] 表示所有的数字 [a-z] 表示不区分大小写字母 [A-Z] 表示大写字母 如果我们需要匹配连字符‘-’,需要使用反斜线转义。 专用字符集:不包括通配符[] [:alnum:] 任意数字或者字母 [:alpha:] 任意字母 [:space:] 空格 [:lower:] 小写字母 [:digit:] 任意数字,相当于0-9,此处没有匹配符[] [:punct:] 标点符号 #ls /tmp/l*[0-9]*[[:lower:]] 以字母l开头,中间有一个数字,并以小写字母结尾的文件。 基础笔记二 2017-03-20 评论 2403 次浏览
第三节——基础命令 #date 显示或者设置系统时间 #date [option]... [+format] 以指定的格式显示时间 [option]选项很少使用,这里就不多讲 [+format] 这是格式的指定方式,前面有一个’+’ %A,%a 显示星期几 #date +%A %D 以月/日/年的格式显示时间 #date+%D %F 以年-月-日的格式显示时间 #date+%F %T 获取当前系统时间 #date +T %H 时 %M 分 %S 秒 #date [MMDDhhmmYY[cc]][.ss] 设置时间 MM两位的月份 DD 两位的日期 hh 两位的小时 mm 两位的分钟 YY 两位的年份(末尾两位) cc 四位的年份 .ss 两位的秒使用点‘.’分离 在linux中有两个时钟: 一是系统时钟:linux内核通过CPU工作频率进行计时。 二是硬件时钟:实时时钟,使用#clock,#hwclock查看硬件时钟。 #hwclock 查询硬件时钟 -s,--hctosys把系统时间设置为硬件时钟相同 -w,—systohc 将硬件时钟设置为系统时钟相同 #cal 显示日历 文件时间戳管理工具: #touch [option]/path/to/filename 修改文件的时间戳,当文件不存在时创建文件 -a 修改访问时间 -m 修改修改时间 -t 指明时间戳,同-a/-m共用 [[cc]YYMMDDhhmm[ss]时间格式 -c 不创建文件 当touch一个文件时,文件不存在则默认创建该文件,当文件存在时只修改其时间戳。 一个文件的组成部分有两个:metadata元数据,date数据。 #stat /path/to/filename 查看文件的状态。 文件有三个时间戳: access time 访问时间atime 读取文件内容叫访问 modify time 修改时间 mtime 修改文件内容叫修改 change time 改变时间 ctime 元数据的改变叫做改变,即上面两项任何一项变化都会修改改变时间。 目录相关的命令: 每一个用户都有自己的家目录,在bash中家目录使用特殊的展开符代替’~’ #cd 进行目录的切换 #cd ~切换到当前用户的家目录 #cd – 短横线代表上一级目录,可以快速实现在两个目录间切换。 root用户,即管理员可以切换到主机上任意用户的家目录 #cd ~USER linux操作系统中,所有文件都在根目录下,所以一个文件的绝对路径都是由根目录开始的,但是在目录结构中有这么两个概念: 一个是绝对路径,上面提到过了,绝对路径就是由根开始的路径。 一个是相对路径,相对路径是以当前位置为起始的路径。 当前目录(current directory),也称作working directory。 #pwd(printing working directory) 打印当前路径。 pwd是内建的环境变量,保存了当前目录路径,为什么pwd命令能够实现当前位置的显示?因为有pwd变量 $OLDPWD 上一次所在目录路径,这也就是为什么能够实现目录的切换。因此cd –相当于cd $OLDPWD #ls list,列出指定目录(路径)下的文件列表 -a,--all显示所有文件,包括隐藏文件 -A 除了. ..即当前目录,上一级目录外都显示。 -l 使用长列表信息显示 -R(--recursive)递归显示 -h人性化显示,即文件大小单位的换算 -d 显示当前目录的信息(目录本身),常与-l一同使用 -r逆序的格式显示 长列表显示的时候有很多列 第一列第一个字符为文件类型,余下的九个字符为权限的表示位。 第二列表示文件被硬链接的次数 第三列为文件的属主 第四列为文件的属组 第五列为文件的大小(默认单位为字节) 第六列为时间,为最近一次被修改的时间 第七列为文件名 文件的类型: - 普通文件 d 目录文件 l 链接文件 b 块设备 c 字符设备 p 管道 s 套接字文件 时间戳: atime(access time)访问时间 mtime(modify time)修改时间,指的是修改内容,只要修改文件就会改变,修改时间属于元信息 ctime(change time)改变时间,指的是元信息的改变,改变不一定会修改。 #statfilename 显示文件或者文件系统的状态,获取指定文件的元数据信息 #ls /path/to/dir 查看指定目录下的文件,ls命令默认启用了别名,别名中包含了颜色显示的规则。 黑色 普通文件 蓝色 目录文件 绿色 拥有可执行权限的文件 #mkdir [option] /path/to/somewhere -p 如果创建目录重复则不再报错,且目标目录的父目录不存在时创建,为递归创建,从右到左查找路径,不存在则创建。 -v 喜爱你是详细信息 -m创建目录的同时直接指定权限 #rmdir [option]/path/too/somewhere 只能删除空目录 -v 显示过程 -p 递归删除 #tree 列出目录的层级结构 -L # 限制显示层级 -d 只显示目录 -P pattern模式,只显示由指定pattern匹配到的路径。 文件查看命令: #cat /path/to/filename(concatenate)连接文件并且显示出来,cat命令不会翻屏,是一次性贴入屏幕。 -E 显示行结束符(换行符‘$’) -T 显示制表符 -n 对行进行编号,只是显示时间编号,对文件内容无影响。 当cat命令没有跟任何参数时,会默认从键盘读取,这也就是我们键入cat命令后为什么退不出来。 cat命令还可以将两个或者两个以上的文件连接起来显示 #tac /path/to/filename 将文件反向显示,即最后一行成为第一行,第一行成为最后一行。 有的时候我们并不知道文件的类型,是不是可执行文件,是不是文本文件等等,我们总不能瞎猜对吧? #file /path/to/filename 查看文件内容类型,顺便回顾一下,type是查看命令的类型,是内建命令还是外部命令。 #more [option] filename 查看文件内容 -d 显示翻页及退出提示 +n 定位显示,从第几行开始 #less [option] filename 查看文件内容 man命令调用的便是less,不再赘述其使用方法。 #head [option] filename 查看文件指定内容 -n # 指定查看文件前#行 -c # 指定查看文件前#个字节 #tail [option] filename 查看文件指定内容 -n #显示文件后#行内容 -c # 基础笔记二 2017-03-19 评论 2441 次浏览 12后一页 » 关于博主 几人行 纸上谈来终觉浅,绝知此事要躬行。 了解更多 文章分类 OpenStack+Ceph(5) Python笔记(0) CI/CD(4) Ansible(1) Docker笔记(3) shell脚本(24) Linux_quession&answer(2) 调优文档(4) 服务(6) 随手笔记(21) 妄尘集(20) 基础笔记二(8) 基础笔记综合整理(20) 给自己讲linux(114) 最受欢迎的文章 博客停更通知( 19,852 人看过 ) OpenStack(一)( 12,690 人看过 ) 情书( 11,295 人看过 ) 我的青春里没有爱情( 9,641 人看过 ) 操作系统原理--Linux篇(摘录)( 9,361 人看过 ) OpenStack+Ceph云平台卷清理操作( 9,257 人看过 ) OpenStack+Ceph磁盘解锁( 8,773 人看过 ) Docker container 修改MAC( 8,539 人看过 ) 防火墙规则笔记整理( 7,835 人看过 ) JumpServer简介( 7,452 人看过 ) 最近回复 wuzetian: alert("你好,我是一个警告框!"); wuzetian: function myFunction() { alert("你好,我是一个警告框!"); } wuzetian: http://fxme.top/index.php/page/2/ wuzetian: http://fxme.top/index.php/page/2/ wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习 wuzetian: 凯哥哇,继续更新,学习学习