linux操作系统和c高级编程
shell


man手册




基本命令
查看文件的相关命令
cat 用户查看和合并文件 选项 -n 显示行号 -b 非空行显示行号

cat file.txt 查看里面的文件
cat file.txt1 file.txt2 > newfile.txt 先清空在合并
cat file.txt1 file.txt2 >> newfile.txt 以追加的方式进行合并
tac
反向显示文件内容的命令
选项 -s 指定自定义的分隔符代替默认的分隔符(默认以行为单位进行逆序)
tac file2.txt 以换行符为单位做逆序输出
tac -s ";" 以;为分隔符逆序输出

more
可以翻页显示文件内容
并且可以使用上下左右来翻页 还有enter键一行一行翻页
less 可以翻页显示文件内容 选项
-N 显示行号
-X 退出时不清理屏幕
/关键字 向下搜索 ?关键字 向上搜索 q 退出
more:支持 /keyword 搜索(仅向下)。less:支持 /keyword(向下)和 ?keyword(向上)搜索。两者均具备搜索功能,但 less 更强大。
head
默认显示前10行

选项:-n 行数 (自己指定)
-c 指定显示字节数 -q多个文件显示时 隐藏文件名
场景示例:
head -n 5 passwd head -c 4 passwd head -n 3 passwd file1.txt
head -q -n 5 passwd file1.txt ls -l | head -n 3


多个文件显示:



小注意:# 正确,/etc 是文件夹 ls /etc/
# 错误,passwd是文件 ls /etc/passwd/
tail
默认显示后10 行
用法与tail 相似
nl
带行号显示文件内容

输入输出命令
echo




输入输出重定向
文件描述符
0:表准输入(stdin) 从键盘输入
1:标准输出(stdout)默认输出到终端屏幕
2:标准错误(stderr)默认输出到终端屏幕
echo是标准输出到终端屏幕上


2>


补充:wc 显示 行 单词 字节 字符
管道
| 把前一个命令的输出作为下一个命令的输入

命令置换
将命令的输出结构作为另一个命令的参数或变量值
两种方式



自动补齐

历史命令
通配符


文件搜索的相关命令
find
在指定目录下递归搜索文件或目录,支持通过多种条件筛选结果,并执行特定操作

find . -type d 查看目录
普通文件用f find . -type f


grep
查找文件的内容
例如:在文件中查找user (已知在根目录etc下的passwd文件中有user )

例如:想知道哪个文件里面存了hello 哪个没有存hello

直接记住:连用
-w 全词匹配




文件管理相关命令

压缩

-l查看大小 -tf 查看.tar里面的文件

解压 就可以把.tar里面的文件显示出来





-t 列出归档内容,-v 显示详细信息,-f 指定文件。-xvf会直接解压文件



注意:
rm 文件名:删除普通文件 ✅rm -r 目录名:删除文件夹(目录)✅

u代表用户自己 g代表同组 o代表其他 a代表全部

网络管理相关命令

第一步 编辑 ---虚拟网络编辑器

更改设置 ---确定----网络适配器(三种模式任选 这里选nat模式)

点击网络 ---有线设置

配置 ----名称为nat ipv4 改为自动---添加

查看配置的网卡信息 ifconfig
测试网络的连通性 ping 可以ping 地址 也可以ping ip号 没有 包丢失表示可以使用该网络

软件包管理相关命令
更新源(update)---安装(install)---验证---配置---卸载(remove/purge)---清理(autoremove)
更新 sudo apt update
安装的游戏

卸载完了 但是文件是还在的 需要用purge清除

shell脚本

结尾是以.sh
创建脚本文件
vi test.sh
进入编辑器后开始编辑
#!/bin/bash
echo "SHell"
执行脚本方式
bash test.sh source test.sh ./test.sh
变量
用户自定义变量



特殊变量
只读变量
后面加上了一个readonly

在定义的时候也可以直接定义成只读形式
只读变量是无法使用unset来取消设定的
位置变量和预定变量

$?判断上一条命令 返回0就说明正确
位数超过两位数要用{}
环境变量


$#:存储传递给脚本的参数数量
$@:所有位置参数的列表(每个参数作为独立单元)
$*:所有位置参数合并为单个字符串
$?:上一条命令的退出状态码
"$@":保留每个参数的原始边界(推荐方式)
$*/$@:参数可能被单词分割
"$*":所有参数合并为单个字符串
语句
说明性语句
#注释
功能性语句
read



输入一个数据用一个空格隔开

算术运算
注意空格
expr命令
3 A=3
4 B=8
5 #C=`expr $A + $B`//两种方式
6 C=`expr \( $A + $B \) \* $D`//注意空格和符号
7 C=$(( (A+B)*2))
8 echo $C
let命令 加双引号才允许有空格

test 命令
相等等于0 不相等非0
字符串记得加双引号 " "

1 #!/bin/bash
2
3 A=3
4 B=9
5 test $A -eq $B
6 echo $?



表达逻辑或 ||和-o均表示逻辑或,[ ]内用-o,[[ ]]内用||,也可分两个[ ]用||连接

控制语句

if
单路分支 --两种描写方式
1 #!/bin/bash
2 A=3
3 B=3
4
5 if test $A -eq $B ;then
6 echo "A=B"
7 fi
8
9 if [ $A -eq $B ] ;then
10 echo "A=B"
11 fi
双路分支 (if---else)


猜数字游戏
1 #!/bin/bash
2 num=$((RANDOM%100+1))
3 echo $num
4 read -p "1--100你随机说一个数字" number
5 echo $number
6 if [ $number -eq $num ]
7 then
8 echo "恭喜你 猜对了"
9 elif [ $number -gt $num ]
10 then
11 echo "猜大了"
12 else
13 echo "猜小了"
14 fi
15
分支语句case

1 #!/bin/bash
2
3 file=".png"
4 case $file in
5 *.jpg|*.png)
6 echo "图像文件"
7 ;;
8 *.txt|*.md)
9 echo "文本文件"
10 ;;
11 [A_Za_z]_[0_9])
12 echo "数字文本"
13 ;;
14 8)
15 echo "数字"
16 ;;
17 Y|y)
18 echo "字母"
19 ;;
20 esac
~
if与case 当出现固定变量的时候 使用case 出现范围变量的时候运用if
循环语句
for循环

1 #!/bin/bash
#x循环打印这几种水果
2 for fruit in apple banana pear straberry
3 do
4 echo "水果: $fruit"
#循环打印出该目录下面的全部文件
5 done
6 for test in `ls`
7 do
8 echo "文件: $test"
9 done
~
循环打印数字


./for.sh q w e r

while

count=1
9 while [ $count -lt 5 ]
10 do
11 if [ $count == 2 ] ; then
12 # break
13 #使用continue 时
14 count=`expr $count + 1`
15 continue
16 fi
17 echo $count
18 count=`expr $count + 1`
19 done
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐




所有评论(0)