马哥笔记04_01~~~05_04

04_01

useradd

userdel

usermod

passwd

chsh

chfn

finger

id

组管理:

groupadd,groupdel、groupmod、gpaswd

对比: 

[root@mylab ~]#

-bash-3.2$     ---------此用户没有家目录,无法创建环境变量

finger:查看用户账号信息

finger USERNAME

chsh:改用户的shell

chfn:修改注释信息

04_02

权限管理

r:

w:

x:

三类用户

u:属主   g:属组  o:其他用户

chown:改变文件属性(only root have this权限)

#chown USERNAME file...

 chown --reference=/tmp/abc.....

 /tmp/test

#chgrp 改组(only root have this arthurian)

#chown GRPNAME file...

     -R(递归修改)

chmod:修改文件的权限

改三类用户的权限:

chmod 775 file, ...

     -R

linux自带的计算器:bc

注:bc默认整数精度(去掉小数部分)

增加精度方法: scale=2

umask:遮罩码(创建文件时创建)

666 -umask

777 -umask

        管理员的umask默认022,一般用户默认002

命令 umask 空  :显示当前umask

umask 数字 (022) 赋值给当前用户的umask

@@@文件默认不具有执行权限,如果算得的结果中有执行权限,则将其权限加1;

删除目录下所有文件:

rm -rf ./*       ~~~~~~~~~~~~~~~~

站在用户的角度来说,shell类型:

1、登录式shell

  正常通常某终端登录:

  su - USERNAME

  su -1 USERNAME

2、非登录式shell:

su USERNAME

图形界面下打开命令窗口

自动执行的shell脚本。

bash的配置文件:

全局配置

/etc/profile

/etc/profile.d/*.sh   ~~~~此sh对所有用户都有效

/etc/bashrc

个人配置:

~~/.bash_profile,     ~~/.bashrc

profile类的文件:

设定环境变量

运行命令或脚本

bashrc类的文件:

设定本地变量

定义命令别名

@@@@作用范围越小的(变量、设置),越是最终生效。

登录式shell如何读取配置文件?(软件决定)

/etc/profile --> /etc/profile.d/*.sh  -->   ~~/.bash_profile  -->  ~~/.bashrc   -->   /etc/bashrc

非登录式shell如何读取配置文件:

~~/.bashrc  --> /etc/bashrc   -->  /etc/profile.d/*.sh

04_03

系统设定:

默认输出设备:标准输出,STDOUT, 1

默认输入设备:标准输入,STDIN,   0

标准输入:键盘

标准输出和错误输出:显示器

I/O重定向:

 改变了数据输出\入来源。

linux:

>输出重定向

<输入重定向

>>追加输出

> 覆盖输出

2> 重定向错误输出

2>> 追加方式  重定向错误输出

set -c:禁止对已经存在文件使用重定向:

 强制覆盖输出则使用 > 

set +c :关闭上述功能

&>:重定向标准输出或错误输出至同一文件。

< :输入重定向

<< :HERE DOCUMENT

EOF -@> END OF FILE

管道:在一端输入东西,在另一端出来。

命令1|命令2(命令3)....

命令管道:前一个命令的输出,作为后一个命令的输入

@@@@管道命令 可以组合小命令完成复杂任务

tr 'A-Z' 'a-z'

例子:只显示一个文件的行数

#wc -l /etc/passwd | cut -d‘’ -fl

CHKDSK /F

04_04

grep、egrep、fgrep

grep:根据模式搜索并将符合模式的文本显示出来。

pattern:文本字符和正则表达式的元字符组合而成 匹配条件

grep [options] PATTERN [FILE]

例:列出 /etc/passwd 中关于root的行

grep 'root' /etc/passwd

  --color

  -v:显示没有被模式匹配到的行

正则表达式:REGULAR、Expression、REGEXP

元字符:

/.   :任意字符

例:查找r开头t结尾的字符

#grep ‘r..t’ /etc/passwd

匹配次数:

*:匹配其前面的字符任意次

例:a*b的匹配字符

ab√,aab√,acb,adb,b√,

@@@@acb---》匹配其前面字符任意次,@@@b√可以是零次。

3、 .* :任意长度的任意字符

a.*b  

a, b, ab, aab, adb, amnb, ammb, amnbmnbmnb


a?b

a, b, ab, aab


默认情况下,正则表达式工作在贪婪模式下,能匹配到哪,就到哪。


4、  ?  :匹配其前面的字符一次货零次

{m,n}花括号在bash中用以命令展开,而{m,n\}这个\(转义字符就是告诉bash你别展开)

@@@\{m,n}:匹配其前面的字符至少m次,之多n次


例子:

\{1,\}至少一次  

\{0,3\}之多3次


例子:

找1到3个a跟着后面b

grep  'a\{1,3\}b' test.txt       test.txt内容:a, b, ab, aab, adb, amnb, ammb, amnbmnbmnb

ab aab


a开头b结尾的字符串,中间有1到3个任意字符

a.\{1,3\}b

@@@位置锚定:

1、 ^ :锚定行首,此字符后面的任意内容必须出现在行首。

2、 $ :锚定行尾,此字符前面的任意内容必须出现在现在行尾,

例子:

以y结束的行:'y$'

3、 ^$:空白行

4、 \< :其后面的任意字符必须作为单词首部出现

      \>:  尾部出现

例:\<root\>

包含 root 这个单词

注意,不能是包含root字符串的字符串

分组:

\{\}

  \{ab\}* ab可出现任意次。

  后面引用:被括号括号的字符,后面我们可以用一个字符再次引用它。

  \1:引用括号内容

  \2:

例:

 grep '\(l..e\).*\1'

前面出现love,后面也是love

He love his lover。

He love his liker。

05_01

扩展正则表达式:

字符匹配: . [] [^]

次数匹配: *   .    ?    +   @@@(+)匹配其前面的字符至少1次。

{m,n}不需要再加\反斜线

位置锚定: ^ $  \< \b <> 

分组: ():分组 \1,\2,\3,...

或者: | : or

C | cat    ①Cat和cat    ②C和cat   @@@整个左边和整个右边:(C | cat )

验证:grep --color -E 'C|cat'   test6.txt     test6.txt内容:Cat cat C China


(C|c)at ①Cat和cat多个    ②C和cat




05_03

bash中 条件测试类型:

 整数测试

 字符串测试

 文件测试

整数比较:

-et:是否相等

-ne:是否不等

-gt:是否大于

-lt:是否小于

-ge:是否大于等于

-le:是否小于等于

例子:

$A -eq $B

如果相等,则为真。   则 echo$?的输出为0   

@@@0为真。

命令间的逻辑关系:

与: &&

或:||

如果用户user6不存在,就添加该用户:

id user6 && useradd user6

脚本只要结束,变量就撤销;

变量名称:字母、数字、下划线

一、不以数字开头

二、不应与已有系统变量重名

三、做到见名知意

例:如果用户存在,就显示用户存在,否则就添加用户:

id user1 && echo "user1 exists." || useradd user1

例:如果用户不存在,就添加用户显示用户存在,否则就显示用户存在

!id user1 && echo useradd user1 || "user1 exists."



文件测试:

-e FILE: 测试文件是否存在

-f FILE: 测试文件是否为普通文件

-d FILE: 测试指定路径是否为目录

-r FILE: 测试当前用户对指定文件是否有读取权限;

-w FILE: 测试当前用户对指定文件是否有写权限;

-x FILE: 测试当前用户对指定文件是否有执行权限;


[ -e /etc/inittab ]

[ -x /etc/rc.d/rc.sysinit ]

练习:

写一个脚本,如果文件不存在就退出脚本,如果存在就执行。

#!/bin/bash

#

if [ ! -e $FILE ];then

  echo "No $FILE."

  exit 8

fi

if grep "^$" $FILE &> /dev/null; then

  echo "Total blank line: 'grep "^$" $FILE | wc -l'."

else

  echo "No blank line."

fi

shell中如何进行算术运算?

A=3

B=6

1、let算术运算表达式

   let C=$A+$B  

2、$[算术运算表达式]

 C=$[$A+$B]

3、$((算术运算表达式))

 C=$(($A+$B))

4、expr算术运算表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用。

C=`expr $A + $B`



shell中注意全局变量和局部变量的有效范围。


你可能感兴趣的:(计算器,reference,信息,finger)