简单的shell命令以及实例

1、简单的命令

1) 判断变量名是否等于某值

有一个name变量,判断name是否等于hua:
name=xx
if [ n$name == "nhua" ]; then
  echo "yes"
else
  echo "no"
fi
为啥不用 if [ $name == "hua" ];  ? 而是两边都加上了n

因为 name变量有可能为空,会出现错误 [: ==: unary operator expected

2) 将最新的文件名赋给变量

求home目录下以Time-开头的最新的一个文件

file=`ls /home/Time-* -t | head -1`
echo file=$file
file=/home/Time-20230223.txt

3) 截取完整路径下文件的文件名

file=/home/Time-20230223.txt
file_name=${file##*/}
echo file_name=$file_name
file_name=Time-20230223.txt

5) 获取当前时间戳

current_time=$(date +%Y%m%d%H%M)
echo $current_time
202303280151

6) shell获取上一条命令的结果

两种方法

result_top=`echo ${PIPESTATUS[0]}`

`echo $?`

7) chown

将 文件名1 的 拥有者 改为 tester

sudo chown teter:tester 文件名1

2、查找文件

1) 查找当前目录以及子目录下的文件名后缀为txt的文

find . -name "*.txt"

2) 查找当前目录以及子目录下的文件名后缀为bin的文件

find . -name "*.bin"

3) 查找当前目录以及子目录文件中含有XXX 且以 h结尾的文件

查找当前目录以及子目录文件中含有XXX 且以 h结尾的文件

grep xxx --include=*.h -r

3、case语句

1) 一个简单的case语句

1、case语句结构
case 变量值 in

  模式 1)
  命令 1
  ;;

  模式 2)
  命令 2
  ;;

  *)
  默认命令
esac
2、case语句实例
通过等级来判断分数,A等级大于等于85分,B等于大于等于60分,其他等级小于60分。

Grade为C,判断分数:
Grade=C
case $Grade in

  A|a )
  echo "A等级,成绩大于等于85分"
  ;;

  B|b)
  echo "B等级,成绩大于等于60分"
  ;;

  *)
  echo "C等级,成绩小于60分"
esac

输出

./Test_case.sh
C等级,成绩小于60分

2) 一个较复杂的case语句

包含不确定数量的参数以及shift
https://editor.csdn.net/md/?articleId=130326169

4、文件描述符

1) 在Linux系统中0 1 2 是文件描述符

0 -> 标准输入(stdin)
1 -> 标准输出(stdout)
2 -> 标准错误输出(stderr)

2) 2>&1

将标准错误输出中定向到标准输出

3) 重定向

现有如下文件

Test_STDERR.sh             (要执行的脚本) 用于输出重定向

Test_STDERR_script.sh      (被调用的脚本) 用来产生错误输出

Test_STDERR_script.sh

echo "aaa"
whatthis       #不存在的命令,用来产生错误

3.1)标准错误输出到终端,标准输出被重定向到输出文件

Test_STDERR.sh

./Test_STDERR_script.sh 2>&1 > ./Test_STDERR_print.txt

Result:
执行./Test_STDERR.sh
查看Test_STDERR_print.txt

./Test_STDERR.sh
./Test_STDERR_script.sh: line 2: whatthis: command not found      ##标准错误输出到终端

cat Test_STDERR_print.txt                                         ##标准输出被重定向到输出文件
aaa 

3.2)标准输出被重定向到输出文件,标准错误输出也被重定向到输出文件

Test_STDERR.sh

./Test_STDERR_script.sh  > ./Test_STDERR_print.txt 2>&1

Result:
执行./Test_STDERR.sh
查看Test_STDERR_print.txt

./Test_STDERR.sh                   ##终端没有输出

cat Test_STDERR_print.txt
aaa
./Test_STDERR_script.sh: line 2: whatthis: command not found   ##标准输出,标准错误输出都被重定向到输出文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值