最近在看鸟哥的私房菜,做了一些笔记,记录下来,能记住最好,记不住以后来查看。
查看命令类型
比如看ls命令:1
type -a ls
这样可以看到ls的别名(alias)和命令所在的目录。
变量的赋值与应用
1 | var="lang is $LANG" |
等号两边不能有空格,双引号里可以有变量,这样变量var等于”lang is $LANG”。双引号里的$LANG也是一个变量,它是系统的环境变量,显示的是系统的语言,记住变量前有个$。1
echo $var #lang is zh_CN.UTF-8
如果变量在单引号里,则直接输出。比如:1
2var='lang is $LANG'
echo $var #lang is $LANG
echo相当于C语言里的printf函数,释放变量用:1
unset var
1 | name=uruir #不带双引号给变量赋值是可以的,但建议用双引 |
将当前变量变成环境变量
1 | export var |
这样就可以在子bash里使用var变量了,要不然在当前bash消失后,var变量也消失了~
使用echo $PATH查看当前环境变量
添加环境变量
1 | PATH="$PATH":/home/ur/bin |
目前我知道的添加环境变量是让我们给新安装的程序加上路径,这样就可以直接在bash里输入程序名来执行程序了。当然一般程序的默认安装路径在/bin or /usr/bin or /usr/local/bin这些系统默认的环境变量中~
系统内核
1 | cd /lib/modules/`uname -r`/kernel |
这里uname -r是一个命令,它显示当前系统内核版本,”`“是“Esc”键,用在路径中表示执行`xxx`这个命令,因为在我ubuntu12.04系统里:uname -r显示的是”3.8.0-35-generic”。而cd是change directory的意思,所以上面的命令表示我要切换到/lib/modules/3.8.0-35-generic/kernel这个目录
查看当前目录
1 | echo "the dir is $(pwd)" |
如上所示”$(xxx)”跟xxx的功能类似,都是执行xxx命令的意思
取1-32767之间的随机数
1 | echo $RANDOM |
从键盘读入数据
1 | read -p "please keyin ur name:" -t 30 name |
这里的-p是read命令的参数,表示在输入时,显示please keyin ur name:这么一个提示语,-t 30也是read的参数,表示在30秒内输入有效,将输入的变量保存到name中,然后只要echo $name就可以显示出刚才输入的变量了~
声明变量类型
1 | declare -i sum=100+210 #i是int类型,所以sum就可以是100和210这两个整型的和了~ |
数组
1 | var[1]="uruir" |
对用户的限制
1 | ulimit -a |
这条命令是查看给用户分配的资源,如果用户很多,那就有必要限制一下用户的资源了,比如我要让一个用户最多只能打开100个文件,则:1
ulimit -n 100
控制台指令:1
stty -a
按ctrl+alt+f8是正常的图形界面,f1-f6是类似DOS这样的控制台~
显示文件
1 | ll -d /etc/????? |
这里用到了正则表达式,?匹配一个字符,5个?就匹配5个字符,一个不多一个不少。*匹配零到多个字符,[0-9]匹配任意一个数字。一个命令是否支持正则表达式,正则表达式的写法会有所不同,ls系列命令是不支持正则表达式的,这里只是在ls命令的参数中使用了正则
重定向
1 | find / -name .bashrc > right 2> wrong |
表示在/目录下面查看名为.bashrc的文件,并把正确结果输出到right文件中,错误结果输出到wrong文件中。如果直接find / -name .bashrc,很显然不管正确还是错误的结果,都直接在bash里显示,如果不用less or more命令,那这结果我们就很难看清楚。1
find / -name .bashrc 2> /dev/null
只得到正确的数据。>前面的2表示错误输出,我们通过2>把错误输出重定向到了/dev/null里面了~相当于把错误结果给扔了,不要了~1
find / -name .bashrc > list 2>&1 #把正确和错误的结果都重定向到list文件中
文本文件
1 | cat > list.bak < list #用list文件中的内容创建一个新的list.bak文件 |
分隔符
1 | echo $PATH | cut -d ':' -f 3,5 |
|是管道,它表示把前一条命令的结果传递给后面一条命令。因为PATH变量里各元素以“:”分隔,所以cut命令就从echo拿到数据,并显示出PATH变量中由“:”分隔的第3个和第5个元素,“3,5”改成“3-5”的话,是显示3,4,5三个元素1
2export | cut -c 12-
last | grep 'reboot'
反向选择
1 | last | grep -v 'reboot' #-v参数是反向的意思,所以就是在last命令的结果里面找出不含“reboot”的行咯~ |
排序
1 | cat /etc/passwd | sort #对passwd文件的内容进行排序咯,当然排序有各种方式,就要用到下面这条命令里的参数咯~ |
计算行列及总字符数
1 | cat /etc/passwd | wc #wc命令是统计passwd里文本的行,列和总字符数~~~ |
双向重导向
1 | last | tee -a last | cut -d ' ' -f 1 #a是append,不用a则替换 |