8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
shell脚本
为什么使用shell脚本?
当命令比较复杂的时候,就需要专门写一个脚本文件。
脚本举例:#下面两个是命令可直接执行
date
who
#!/bin/bash
#创建变量,如果是字符串的话,有空格的一定要用双引号,否则会被解析成命令
NDK=10
text="i love shell"
#命令的执行结果的输出作为变量的值,其中下面的 ` 是键盘中英文状态下的ESC下面那个键
text1=`date`
text2=$(who)
echo $NDK
echo $text
#字符串拼接,同理:有空格需要用双引号
echo "$text very much"
#转义字符
echo "$NDK"
echo $text1
echo $text2
输入输出重定向
输出重定向:命令的执行结果输出到test.txt文件,不再输出到屏幕上
ls -al > test.txt
输入重定向:wc命令是输出test.txt文本中的行数,单词数,字节数,显示在屏幕上
wc < test.txt
wc命令在命令行中的使用wc << EOF 然后输入一些文本,最后输入一个EOF结束
基本运算#1、使用命令,输出的结果作为c的值
#注意除号左右两边要有空格
c=$(expr $b / $a)
#2、使用方括号运算符代替expr命令
d=$[$b/$a]
echo "c:$c"
echo "d:$d"
浮点数的处理
基本运算不支持浮点数,为了支持浮点数,需要用bc命令:a=10
e=$(echo "scale=4; $a / 3" | bc)
echo "e:$e"
其中|是管道的意思,一个命令的输出作为另外一个命令的输入。
scale是自带的内建变量:#内联输入重定向,多次运算的时候
f=$(bc << EOF
scale=4
a1=($a * $b)
a1 / 3
EOF
)
命令执行退出的状态:0 成功
127 没有找到命令
1 未知错误
126 命令不可执行
查看与退出状态指定:查看上一次命令的执行状态
echo $?
在shell脚本中,自己指定退出的状态
exit 状态码
if语句
只有if命令的退出状态码为0,才会执行then部分if 命令
then
命令
fi
if语句举例:#!/bin/bash
testuser=lady
#查找passwd里面是否有对应的目录
if grep $testuser /etc/passwd
then
echo "ok"
ls -a /home/$testuser/
#如果passwd中没有目录,再判断是否有这个目录
elif ls -d /home/$testuser
then
echo "用户不存在,主目录仍然存在"
#其他情况
else
#可以继续嵌套if
#if
#then
echo "$testuser not exist"
fi
grep命令是查找命令
可以结合test命令,如果条件成立,test命令以状态为0退出,if条件成立。
test命令简单形式,用中括号,注意空格要加上,举例如下:#!/bin/bash
a=10
b=5
#test命令简单形式
if [ $a -gt $b ]
then
echo "$a greater than $b"
else
echo "$a smaller than $b"
fi
test数值比较:-gt
-eq 等于
-le
-ne 不等于
判空:#!/bin/bash
str1=""
if [ str1 = "" ]
then
echo "有内容"
else
echo "没内容"
fi
test字符串比较:str1 == str2
str1 != str2
str1 < str2
-n str1 长度是否非0
-z str1 长度是否为0
test文件比较:-d 检查是否存在,并且是一个目录
-e 检查file是否存在
-f 检查是否存在,并且是一个文件
-r 检查是否存在,并且可读
-w、-x
file1 -nt file2 file1比file2新
file1 -ot file2 file1比file2旧
举例:#!/bin/bash
mydir=/usr/jason
#-d检查目录是否存在
if [ -d $mydir ]
then
echo "$mydir exist"
cd $mydir
ls
else
echo "mydir not exist"
fi
多个条件的时候:#!/bin/bash
#多个条件 []
mydir=/usr/jason/shell
#任意数学赋值或者比较表达式
#if (( a++ > 90 ))
if [ -d $HOME ] && [ -w $mydir ]
then
cd $mydir
touch test5
else
echo "no"
fi
case命令
格式:case 变量 in
pattern1) 命令;;
pattern2) 命令;;
*) 默认命令;;
esac
举例:#!/bin/bash
testuser=rose
case $testuser in
rose)
echo "hi,$testuser";;
ricky)
echo "hello, ricky";;
*)
echo "defaults";;
esac
for循环命令
格式:for var in list
do
命令
done
举例1:#!/bin/bash
for item in 1 2 3 4 5
do
echo $item
done
举例2:#使用字符串的时候一定要注意转义字符,#、'等
list="windows--linux--macos"
#IFS字段分隔符
IFS=$--
for item in $list
do
echo $item
done
while命令
格式:while test command(或者[])
do
命令
done
举例:#!/bin/bash
a=10
while [ $a -gt 0 ]
do
echo "num:$a"
#赋值不用使用$符号
a=$[ $a - 1 ]
if [ $a -eq 5 ]
then
echo "break"
break
fi
done
注意:
编译ffmpeg
编写shell脚本之前,要执行./configure –disable-yasm,主要目的进行一系列的准备工作,比如说检查gcc的版本,会生成config.mak等文件