4-6笔记

一、总结学过的权限,属性及ACL相关命令及选项

chown 命令可以修改文件的属主,也可以修改文件属组:

修改文件的属主:chown  jose  a1.txt;chown 1000 a4.txt

同时修改文件的属主,属组:chown  jose. a2.txt;chown jose: a3.txt;chown jose:tom c1.tx

修改属组:chown :jose b2.txt;chown .1000  b3.txt 

chgrp 命令可以只修改文件的属组:chgrp jose f1.txt

文件权限:

属主,属组,其它用户的读,写,执行权限。

修改文件权限chmod:

修改f2.txt文件属主可读,属组可写,其它用户可执行权限。

chmod  u=r,g=w,o=x  f2.txt

修改a1.txt文件属主可读写,属组可读,其它用户可读权限。

chmod  644  a1.txt

修改目录权限: 

去掉dir1目录所有的权限

chmod  a=  dir1/    

目录dir1加上属主读权限

chmod u+r  dir1 

Linux文件系统上的特殊权限:   

3个特殊权限:分别是 SUID, SGID,Sticky,这三个特殊权限独⽴于rwx权限体系   

二、结合vim几种模式,学会使用vim几个常见操作。

1. vim f1.txt打开文件后,按冒号:输入q,不保存退出。 

2. vim f1.txt打开文件后, 按i,I,a,A,o,O按键,进入插入模式,按esc键后,按冒号:输入q,不保存退出。

3. vim f1.txt打开文件后, 按i,I,a,A,o,O按键,进入插入模式,输入文件内容"马哥出品,必属精品",按esc键后,按冒号:输入wq,保存退出。

4. cat  f1.txt

5. 命令模式下,光标在单词,句子上进行前后,上下跳转。行复制粘贴。行删除

w #下一个单词的词首

e #当前或下一单词的词尾

b #当前或前一个单词的词首Nw|Ne|Nb #一次跳N个单词

^ #跳转至行首的第一个非空白字符0 #跳转至行首

$ #跳转至行尾

NG|:N #跳转至指定行,N表示正整数,比如 10G,或在扩展命令模式下:10,都表示跳转到第10行

G #最后一行

gg|1G #第一行

) #下一句

( #上一句 

三、总结学过的文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令及选项,示例。 

分页查看文件内容:more;cat /var/log/syslog | more

less 也可以实现分页查看文件:less -N /var/log/syslog  

显示文本前面多少行内容:head

显示前3行的内容:head  -n 3  /etc/passwd 

       

查看文件倒数多少行内容:tail

cat f1.txt

     

nl,显示行号,相当于cat -b

nl  /etc/passwd    

tac:逆向显示文本内容,行倒序显示

seq 10 | tac

查看最后3行的内容:tail  -n 3  f1.txt

查看从第3行开始到文件结束的内容:tail  -n  +3 f1.txt

     

按列抽取文本: cut

 ifconfig ens33 | head -n 2 | tail -n 1 | tr -s " " "%" | cut -d"%" -f3

收集文本统计数据 wc

wc 命令可用于统计文件的行总数、单词总数、字节总数和字符总数,可以对文件或STDIN中的数据统计

显示行数

wc  -l  title.txt

不显示第一行

df | tail -n $(echo `df | wc -l`-1|bc)

文本排序 sort

sort  -nr  seq.txt

统计日志访问量

cut -d" " -f1 /var/log/nginx/access_log |sort -u|wc -l

去重 uniq

sort -n a.txt b.txt | uniq -c

文件查找:

非实时查找(数据库查找):locate

更新数据库

updatedb

locate test.txt

locate conf

find 是实时查找工具,通过遍历指定路径完成文件查找:

find *.txt

仅搜索第二层目录

find /etc/ -maxdepth 2 -mindepth 2

四、总结文本处理的grep命令相关的基本正则和扩展正则表达式

文本搜索工具:grep

grep root  /etc/passwd

cat  /etc/passwd | grep root

取前3行:

grep -m 3 bin /etc/passwd

取反,取不匹配的行

grep -v nologin /etc/passwd

grep -v "#" /etc/fstab

显示匹配的行号

grep -n bash /etc/passwd

仅显示匹配到的内容

grep -o root /etc/passwd

静默模式,不输出任何信息,结果要从变量$?拿

grep -q root /etc/passwd

echo $?

显示匹配root的行或匹配 bash 的行

grep -e root -e bash /etc/passwd

显示匹配root的行且匹配 bash 的行

grep root /etc/passwd | grep bash

从文件读取匹配规则

grep -f test.txt /etc/passwd

命令行展开

grep `whoami` /etc/passwd

grep $(whoami) /etc/passwd

echo Linux123 | grep $(uname)

变量展开

grep "$USER" /etc/passwd

匹配空格

echo "1 2 3" | grep "[[:blank:]]"

匹配非空格

echo "1 2 3" | grep "[^[:blank:]]"

排除所有空行和注释行

grep -v "^$" /etc/profile | grep -v "^#" /etc/profile

grep -v -e "^$" /etc/profile -v -e "^#" /etc/profile

grep -v '^$\|^#' /etc/profile

基本正则

echo -1 -2 123 -123 234 |grep '\-\?[0-9]\+'

扩展正则

echo -1 -2 123 -123 234 |grep -E '\-?[0-9]+'

sed 是行编辑器

sed [OPTION]... {script-only-if-no-other-script} [input-file]...

查找替换

s/pattern/replace/修饰符

修饰符

g 行内全局替换

p显示替换成功的行

w file将替换成功的行保存至文件中

I|i忽略大小写  

script为空,默认输出内容

sed '' /etc/issue

关闭默认输出,script 为空,则无任何输出

sed -n '' /etc/issue

用 -n 选项关闭默认输出,script 中执行p命令

sed -n 'p' /etc/issue

输出第一行

sed -n '1p' /etc/issue

输出最后一一行

sed -n '$p' /etc/passwd

sed -e '2d' -e '4d' seq.log

多个script 写在一起

sed '2d;4d' seq.log

只显示非#开头的行

sed -n '/^#/!p' /etc/fstab

搜索替换和&(引用)

sed -n 's/root/ROOT/gp' /etc/passwd

sed -n 's/root/&er/gp' /etc/passwd

sed -n 's/r..t/&er/gp' /etc/passwd

五、sed将文件test中第50行中的helloworld改为nihao

第一种写法:sed -i "50s/helloworld/nihao/" test.txt

                       cat test.txt

第二种写法:sed -n "50s/helloworld/nihao/gp" test.txt

第三种写法:head -n 50 test.txt | tail -n 1 | sed -n "s/helloworld/nihao/p"

七、 在每一行后增加一空行,测试文件为cp /etc/passwd ~/,不要直接修改passwd文件。

sed -i "G" passwd

八、删除文件每行的第一个字符

sed "s/^.//" passwd

九、删除文件每行的第二个字符

sed -E "s/^(.)(.)/\1/" passwd

十、删除文件每行的最后一个字符

sed -Ei "s/.$//" passwd

十一、删除文件每行的倒数第二个字符

sed -Ei "s/(.)(.)$/\2/" passwd

十二、总结变量命名规则,不同类型变量(环境变量,位置变量,只读变量,局部变量,状态变量)如何使用。

变量命名法则

1.命名要求:(1)区分大小写  (2)不能使用程序中的保留字和内置变量:如:if, for  (3) 只能使用数字、字母及下划线,且不能以数字开头,注意:不支持短横线 “ - ”,和主机名相反。

2.命名习惯:(1)见名知义,用英文单词命名,并体现出实际作用  (2)变量名大写  (3)局部变量小写 (4)函数名小写  (5)大驼峰StudentFirstName,由多个单词组成,且每个单词的首字母是大写,其它小写  (6)小驼峰studentFirstName ,由多个单词组成,第一个单词的首字母小写,后续每个单词的首字母 是大写,其它小写  (7)下划线: student_first_name

环境变量:可以使子进程(包括孙子进程)继承父进程的变量,但是无法让父进程使用子进程的变量

#声明并赋值 export name=VALUE declare -x name=VALUE

#或者分两步实现 name=VALUE export name

位置变量:在bash shell中内置的变量, 在脚本代码中调用通过命令行传递给脚本的参数

$1,$2,... #对应第1个、第2个等参数,shift [n]换位置

$0 #命令本身,包括路径

$* #传递给脚本的所有参数,全部参数合为一个字符串

$@ #传递给脚本的所有参数,每个参数为独立字符串

$#  #传递给脚本的参数的个数

只读变量:只能声明定义,但后续不能修改和删除,即常量

声明只读变量:

readonly name

declare -r name

状态变量:退出状态码变量

$?   #0代表成功,1-255代表失败

用户可以在脚本中使用以下命令自定义退出状态码,exit  [n]

1. 脚本中一旦遇到exit命令,脚本会立即终止;终止退出状态取决于exit命令后面的数字。

2. 如果exit后面无数字,终止退出状态取决于exit命令前面命令执行结果。

3. 如果没有exit命令,即未给脚本指定退出状态码,整个脚本的退出状态码取决于脚本中执行的最后 一 条命令的状态码。

十三、通过shell编程完成,30鸡和兔的头,80鸡和兔的脚,分别有几只鸡,几只兔?

鸡20只,兔子10只

十四、结合编程的for循环,条件测试,条件组合,完成批量创建100个用户。

./useradd.sh

  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值