1,=的使用注意

var=valur和var = value(有无空格)
前者是赋值操作,后者是相等操作

2,mv移动文件或者重命名

3,null位桶或黑洞

/dev/null是一个特殊的设备文件,这个文件接受的任何数据都会被丢弃。因此null设备又被称为位桶(bit bucket)或黑洞。

你可以将一些不需要的垃圾信息重定向到/dev/null

$cmd 2>/dev/null

将错误信息丢弃。

4,pwd查看用户当前所在位置

5,rm删除文件

rm –r 循环删除直到删除没有
rm –f 强制删除
rm –rf 强制删除文件

6,touch创建文件命令

7,别名转义

$\command

\对命令实施转义,使我们可以执行原本的命令,而不是这些命令的别名替身。

8,彩色打印

echo -e "\e[1;32m This is a red text\e[0m"

\e[1;32m将颜色设为红色,\e[0m将颜色重新置回

文字颜色:
重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37

背景颜色:
黑色=30,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47

9,查看环境变量

环境变量是未在当前进程中定义,而从父进程中继承而来的变量。

env 查看所有与此终端进程相关的环境变量
$env
对于每个进程的运行时的环境变量可以用一下命令查看:

$cat /pro/$PID/environ

PID为进程的ID

假设一个gedit的应用程序在运行,可以用pgrep获得gedit的进程ID
$pgrep gedit

10,查看数据包经过路由节点

traceroute www.baidu.com

11,查看所有进程类似任务管理器

ps -aux

12,弹出窗口的一种方式

zenity --info --text "hello world"

13,获取字符串长度

len=${#str}
echo "str length is $len"

14,将一条命令的輸出賦值給其他變量

将一条命令的执行结果取得命令执行结果的值有:

1、使用反引号`` (数字键1左边的键,tab键上面,英文方式输入) 如:a=echo "hello world";即将命令 echo "hello world"的输出赋给变量a

2、可以使用 部分学习笔记《LINUX+SHELL脚本攻略》Sarath Lakshman_筆記(echo “hello world”),即将命令echo "hello world"的输出赋给变量a。

15,普通和超级用户

$是普通用户,#是超级用户

查看当前用户:
echo $UID
返回值0是root用户,其他是普通用户。

转为超级用户:
sudo -i
输入密码后转为超级用户

16,时间

$date【获取当前时间】
$date “+%s”【获取纪元时】
$date “+%y %m %d”【按自定义格式打印时间】
$date -s “21 June 2018 11:01:22”【设置时间】

EST—东部标准时间,美国东部标准时间Eastern Standard Time
CST 可视为美国、澳大利亚、古巴或中国的标准时间。

$sleep no_of_seconds
睡眠n秒

17,识别当前shell版本

echo $SHELL
或者
echo $0

18,调试shell

1,bash内置调试脚本工具
$bash -x test.sh
$sh -x test.sh
打印出所执行的每一命令以及当前状态。

如果只关注脚本中某些部分的命令的调试-----:
set -x 在执行时显示参数和命令
set +x禁止调试
set -v当前命令进行读取时显示输入
set -v禁止打印输入

例如:
#!/bin/bash

for i in {1…6}
do
set -x
echo $i
set +x
done
echo “Script executed”

尽在-x和+限制的区域内,调试信息才显示。

2,通过环境变量_DEBUG
在脚本中添加
DEBUG()
{
["$_DEBUG" == “on”] && $@ || :
}

执行时:
$_DEBUF=on ./test.sh

3,还可以利用shebang
调试时把#!/bin/bash 改成#!/bin/bash -xv就行了。

19,文件描述符

0—stdin
1—stdout
2—stderr(标准错误)

20,在PATH中添加一条新路径

PATH=“$PATH:/home/user/bin”
export PATH

或者使用
export PATH=“$PATH:/home/user/bin”

这样就将/home/user/bin添加到PATH中了。

其他环境变量:
HOME,PWD,USER,UID,SHELL等

21,重定向

1,下面错误会将stderr文本打印到屏幕上而不是文件中
$ls + > out.txt
ls: 无法访问’+’: 没有那个文件或目录

2,而在下命令中stdout没有任何输出:
$ls + 2> out.txt

3,将stderr单独重定向到一个文件,将stdout单独重定向到另一个文件。
$cmd 2>stderr.txt 1>stdout.txt

4,还可以用以下方法将stderrr转为stdout,是的stderr和stdout都被重定向到一个文件中
$cmd 2>&1 out.txt
或者
$cmd &>out.txt