Linux用户和权限管理-文本处理工具和正则表达式及文件查找 -shell脚本编程-基础

1.chmod :用于更改文件或目录的权限。
示例:chmod 755 a.txt 将文件 a.txt 的权限设置为所有者具有读、写、执行权限,所属组和其他用户具有读和执行权限。
chown :更改文件或目录的所有者和所属组。
示例:chown user:group a.txt 将文件 a.txt 的所有者更改为 user,所属组更改为 group。
属性相关命令及选项:
lsattr :查看文件或目录的属性。
chattr :更改文件或目录的属性。
ACL 相关命令及选项:
getfacl :获取文件或目录的访问控制列表(ACL)。
示例:getfacl a.txt 显示文件 a.txt 的 ACL 信息。
setfacl :设置文件或目录的访问控制列表(ACL)。
示例:setfacl -m u:user:rwx a.txt 为用户 user 授予对文件 a.txt 的读、写、执行权限。

2.1. 如何打开文件及在命令模式下退出文件:
使用以下命令打开文件:vim a.txt 。
在命令模式下退出文件,不保存修改可以输入 :q! ,保存修改并退出可以输入 :wq 。
2. 从命令模式进入插入模式及从插入模式返回命令模式并退出文件:
在命令模式下,按下 i 键进入插入模式。要从插入模式回到命令模式,按下 Esc 键。然后可以输入 :wq 保存并退出文件,或者 :q! 不保存并强制退出。
3. 打开文件进入插入模式编写内容并退出:
打开文件 vim a.txt ,进入插入模式 i ,输入 "马哥出品,必属精品" ,按下 Esc 回到命令模式,输入 :wq 保存并退出。
4. 使用 cat 命令验证文件内容:
在终端输入 cat a.txt ,如果显示出刚刚写入的 "马哥出品,必属精品" ,则说明写入成功。
5. 命令模式下的操作:
光标在单词上跳转:
向前跳转一个单词:w
向后跳转一个单词:b
光标在句子上跳转:
跳到下一个句子开头:)
跳到上一个句子开头:(
上下跳转:
向上跳转一行:k
向下跳转一行:j
行复制粘贴:
复制当前行:yy
粘贴到下一行:p
行删除:
删除当前行:dd

3.文本处理工具:
cat :用于连接文件并打印到标准输出设备上。
示例:cat abc.txt 文本内容 123    显示 123
选项:-n 显示行号。
more :分页显示文件内容。
示例:more abc.txt 按页显示 abc.txt 内容。
less :与 more 类似,但功能更强大。
示例:less abc.txt 可以向前向后翻阅文件。
文件查找工具:
find :在指定目录下查找文件。
示例:find / -name "abc.txt" 在 / 目录下查找名为 abc.txt 的文件。
选项:-type d 查找目录,-type f 查找文件。
locate :基于数据库快速查找文件。
示例:locate abc.txt 查找名为 abc.txt 的文件。
文本处理三剑客:
grep :文本搜索工具。
示例:grep "123" abc.txt 在 abc.txt 中查找包含 123 的行。
选项:-i 不区分大小写,-v 取反。
sed :流编辑器,用于文本替换等操作。
示例:sed 's/123/456/' abc.txt 将 abc.txt 中的 123 替换为 456 。
awk :强大的文本处理工具。
示例:awk '{print $1}' abc.txt 打印 abc.txt 的第一列。
文本格式化命令 printf:
示例:printf "Hello, %s!\n" "World" 输出 "Hello, World!" 。
选项:%d 表示整数,%s 表示字符串,%f 表示浮点数等。

4.Grep 命令的基本正则表达式:
. :匹配任意单个字符。
示例:grep "a.b" 会匹配 axb 、a1b 等。
* :匹配前面的字符零次或多次。
示例:grep "a*b" 会匹配 b 、 ab 、 aab 等。
[ ] :匹配方括号内的任意一个字符。
示例:grep "a[bc]d" 会匹配 abd 或 acd 。
[^ ] :匹配除方括号内的字符之外的任意一个字符。
示例:grep "a[^bc]d" 会匹配 a1d 、 a2d 等,但不会匹配 abd 和 acd 。
\ :用于转义特殊字符。
示例:grep "\\." 匹配 . 字符。
Grep 命令的扩展正则表达式:
+ :匹配前面的字符一次或多次。
示例:grep "a+b" 会匹配 ab 、 aab 等,但不会匹配 b 。
? :匹配前面的字符零次或一次。
示例:grep "a?b" 会匹配 b 或 ab 。
{n} :匹配前面的字符恰好 n 次。
示例:grep "a{2}b" 匹配 aab 。
{n,} :匹配前面的字符至少 n 次。
示例:grep "a{2,}b" 匹配 aab 、 aaab 等。
{n,m} :匹配前面的字符至少 n 次,至多 m 次。
示例:grep "a{2,4}b" 匹配 aab 、 aaab 、 aaaab 。
| :逻辑或,匹配多个表达式中的任意一个。
示例:grep "a|b" 匹配 a 或者 b 。
() :分组,将多个字符视为一个整体。
示例:grep "(ab)+" 匹配 ab 、 abab 等。


5.sed '50s/helloworld/nihao/' test

7.sed 'G' /etc/passwd > ~/lee_passwd

8.sed 's/^.//' /etc/passwd > ~/Lee_passwd

9.sed 's/^..//' /etc/passwd > ~/lee1_passwd

10.sed 's/.$//' /etc/passwd > ~/Lee2_passwd

11.sed 's/.\{2\}$/.\1/' /etc/passwd > ~/Lee3_passwd

12.变量命名规则:
变量名只能包含字母、数字和下划线。
变量名必须以字母或下划线开头。
变量名区分大小写。
变量名应具有描述性,以便于理解其用途。
不同类型变量的使用:
环境变量:
是在系统中全局定义的变量,可被所有子进程访问。
可以通过 export 命令创建或修改。
例如:export MY_VAR="value" ,在其他程序中可直接使用 $MY_VAR 获取其值。
位置变量:
由命令行传递给脚本的参数表示。
$1 表示第一个参数,$2 表示第二个参数,以此类推。
例如,脚本中使用 echo $1 来输出第一个参数的值。
只读变量:
一旦设置,其值就不能被修改。
使用 readonly 命令创建。
例如:readonly MY_READONLY_VAR="value" ,后续尝试修改会报错。
局部变量:
在函数内部定义和使用,仅在函数内部有效。
使用 local 关键字定义。
例如:function my_function() { local my_local_var="value"; }
状态变量:
通常用于反映程序或命令的执行状态。
例如,命令的返回值,$? 表示上一个命令的退出状态,0 通常表示成功,非 0 表示失败。

13.#!/bin/bash

for (( chicken=0; chicken<=30; chicken++ ))
do
    rabbit=$(( 30 - chicken ))
    feet=$(( 2*chicken + 4*rabbit ))
    if [ $feet -eq 80 ]; then
        echo "鸡有 $chicken 只,兔有 $rabbit 只。"
        break
    fi
done


14.#!/bin/bash

for i in {1..100}
do
    if id user$i &> /dev/null; then
        echo "用户 user$i 已存在"
    else
        useradd user$i
        echo "已添加用户 user$i"
    fi
done

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值