如果命令串太长,如何使用两行来输出?
cp /var/spool/mail/root/ /etc/crontab \
/etc/fstab /root
上面的这个命令用途是将三个文件复制到/root这个目录下。【enter】键是紧接着反斜杠的。
echo的使用:
echo $variable
echo ${PATH}
在bash当中,当一个变量名称尚未被设置时,默认的内容是【空】
变量的设置规则
- 变量与变量内容以一个等号【=】来连接
- 等号两边不能直接接空格
- 变量名称只能是英文字母和数字,但是开头字符不能是数字
- 双引号内的特殊字符如$等,可以保有原本的特性
- 单引号内的特殊字符则仅为一般字符(纯文本)
- 可用转义符【\】将特殊符号(如【enter】【$】【\】【空格】【‘】)变成一般字符
- 在一串命令的执行中,还需要借由其他额外的命令所提供的信息时,可以使用反单引号或$命令
- 若该变量为扩增变量内容时,则可用“$变量名称”或${变量}累加内容
PATH="$PATH":/home/bin PATH=${PATH}:/home/bin
- 若该变量需要再其他子程序执行,则需要以export来使变量变成环境变量。
- 取消变量的方法为使用unset
#12name=VBird #fail #name = Vbird #fail name=Vbird #ok #name=Vbird's name #fail name="Vbird's name" #ok #name='vbird's name' #fail name=Vbird\'s\ name #ok
如何进入目前内核的模块目录
cd /lib/modules/`uname -r`/kernel
cd /lib/modules/$(uname -r)/kernel
env命令:观察环境变量
echo $$ shell的PID;
?: 关于上个执行命令的返回值
子进程仅会继承父进程的环境变量,子进程不会继承父进程的自定义变量。如你想要让该变量内容继续的在子进程中使用,那么就请执行:export 变量名称
read [-pt] variable 要读取来自键盘输入的变量
-p: 后面可以接提示字符
-t: 后面可以接等待的秒数
book@100ask:~$ read atest
nihao
book@100ask:~$ echo $atest
nihao
book@100ask:~$ read -p "please keyin your name:" -t 10 named
please keyin your name:shenzhong
book@100ask:~$ echo $named
shenzhong
book@100ask:~$
book@100ask:~$ path=${PATH}
book@100ask:~$ echo ${path}
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/book/Desktop/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
book@100ask:~$
book@100ask:~$ echo ${path#/*/local/sbin:}
/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/book/Desktop/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
book@100ask:~$
book@100ask:~$ echo ${path##/*:}
/home/book/Desktop/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
book@100ask:~$
book@100ask:~$ echo ${path%/*/bin}
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/book/Desktop/100ask_imx6ull-sdk/ToolChain
book@100ask:~$ echo ${path%:*/bin}
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
book@100ask:~$
book@100ask:~$ echo ${path%%:*/bin}
/usr/local/sbin
book@100ask:~$
book@100ask:~$ echo ${path/sbin/SBIN}
/usr/local/SBIN:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/book/Desktop/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
book@100ask:~$ echo ${path//sbin/SBIN}
/usr/local/SBIN:/usr/local/bin:/usr/SBIN:/usr/bin:/SBIN:/bin:/usr/games:/usr/local/games:/snap/bin:/home/book/Desktop/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
book@100ask:~$
${变量#关键词} 若变量内容从头开始的数据符合【关键词】,则将符合的最短数据删除
${变量##关键词} 若变量内容从头开始的数据符合【关键词】,则将符合的最短数据删除
${变量%关键词} 若变量内容从尾向前的数据符合【关键词】,则将符合的最短数据删除
${变量%关键词} 若变量内容从尾向前的数据符合【关键词】,则将符合的最短数据删除
${变量/旧字串/新字符串} 若变量内容符合旧字符串,则第一个旧字符串会被新字符串替换
${变量//旧字串/新字符串} 若变量内容符合旧字符串,则所有的旧字符串会被新字符串替换
通配符
* 代表0到无穷多个任意字符
? 代表一定有一个任意字符
【】 同样代表一定有一个在括号内的字符(非任意字符)
【-】 若有减号在中括号内时,代表在编码顺序内的所有字符
【^】 若中括号内的第一个字符为指数符号(^),那表示反向选择。
1> 以覆盖的方法将正确的数据输出到指定的文件或设备上;
1>> 以累加的方法将正确的数据输出到指定的文件或设备上;
2> 以覆盖的方法将错误的数据输出到指定的文件或设备上;
2>> 以累加的方法将错误的数据输出到指定的文件或设备上;
2>&1 文件描述符 1 是标准输出 (stdout)。 文件描述符 2 是标准错误 (stderr)。起初,2>1 可能看起来像是将 stderr 重定向到 stdout 的好方法。但是,它实际上会被解释为“将 stderr 重定向到名为 1 的文件”。& 表示后面和前面的是文件描述符,而不是文件名。因此,我们使用2>&1。将 >& 视为重定向合并运算符。
管道命令仅会处理标准输出,对于标准错误会予以忽略;
管道命令必须要能够接受来自前一个命令的数据成为标准输入继续处理才行。
cut 主要用途在于同一行里面的数据进行分解,最长使用在分析一些数据或文字数据的时候。这是因为有时候我们会以某些字符当做划分的参数,然后来将数据加以分割,已取得我们所需要的数据。
-d : 后面接分割字符,与-f 一起使用
-f : 根据-d的分隔字符将一段信息划分为数段,用-f取出第几段的意思
-c: 以字符(characters)的单位取出固定字符区间
book@100ask:~$ echo ${PATH}
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/book/Desktop/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
book@100ask:~$ echo ${PATH} | cut -d ':' -f 3
/usr/sbin
book@100ask:~$
book@100ask:~$ echo ${PATH} | cut -d ':' -f 3,4
/usr/sbin:/usr/bin
book@100ask:~$
book@100ask:~$ echo ${PATH} | cut -c 12
s
book@100ask:~$ echo ${PATH} | cut -c 12-
sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/book/Desktop/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
grep 分析一行信息,若当中有我们所需要的信息,就将该行拿出来
grep 【-acinv】【--color=auto】 '查找字符' filename
-a: 将二进制文件以文本文件的方式查找数据
-c: 计算找到‘查找字符’的次数
-i: 忽略大小写的不同,所以大小写视为相同
-n: 顺便输出行号
-v: 反向选择,显示出没有'查找字符’的那一行
未完继续