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

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐