额,最近有空总结一下经常用到的以及容易混淆的命令
1.文件管理类
find:find命令用来在指定目录下查找文件
cat:命令用于连接文件并打印到标准输出设备上
more:命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读
less:命令用于查看文件,而且在查看之前不会加载整个文件,可前可后
tail:文件有更新时,tail会自己主动刷新,确保你看到最新的档案内容
tee:用于读取标准输入的数据,并将其内容输出成文件。
ln:为某一个文件或目录在另外一个位置建立一个同步的链接(注意软连接和硬链接的区别)
chmod:可以控制文件如何被他人所调用
chown:将文件的拥有者改为指定的用户或组
touch:该命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。(额,我承认吧!我就是一直用这个命令来创建文件的)
mkdir:用于创建文件目录
mv:为文件或目录改名、或将文件或目录移入其它位置
cp:用于复制文件或目录(注意用户使用指令复制目录时,必须使用参数-r)
rm:用于删除一个文件或者目录(注意啊!用时不小心就是灾难啊!)
2.文档编辑
sort:对文本文件的内容,以行为单位来排序
look:用于英文单字的查询
grep:用于查找文件里符合条件的字符串
rgrep:用于递归查找文件里符合条件的字符串
额,这类命令用的较少,暂时把vi命令也归过来吧
vi:打开或新建文件,并将光标置于第一行
vi +n :打开文件,并将光标置于第n行首
/pattern:从光标开始处向文件尾搜索pattern
?pattern:从光标开始处向文件首搜索pattern
:w 保存当前文件
:q 退出vi
:q! 不保存文件并退出vi
3.磁盘管理
cd:切换当前工作目录(最常用到的)
pwd:用于显示工作目录
ls:用于显示指定工作目录下之内容
tree:用于以树状图列出目录的内容
4.系统管理
kill:杀死进程
ps : 用于显示当前进程的状态
pstree:将所有行程以树状图显示
top:命令用于实时显示 process 的动态。
screen:用于多重视窗管理程序
sudo:系统管理者的身份执行指令,由 sudo 所执行的指令就好像是 root 亲自执行
su:更为其他使用者的身份,除 root 外,需要键入该使用者的密码
who:命令用于显示系统中有哪些使用者正在上面
free:命令用于显示内存状态
5.网络通讯
ping:命令用于检测主机
dig:命令主要用来从 DNS 域名服务器查询主机地址信息
接下来稍微扩展一点,介绍一些概念
管道符:“|”
作用:是将上一个命令的标准输出当作后一个命令的标准输入,格式为“命令1|命令2”
重定向:
> 输出重定向到一个文件或设备 覆盖原来的文件
>! 输出重定向到一个文件或设备 强制覆盖原来的文件
>> 输出重定向到一个文件或设备 追加原来的文件
< 输入重定向到一个程序
shell
shell的意思是“壳”,它是一个c语言编写的程序,它主要是用来连接用户和操作系统内核的服务的。
当然shell脚本想要跑起来也需要一个解释器,将其转化为操作系统可以理解的语言,bash被用的最多,我们就也选择bash吧!
老规矩我们先来一个hello world吧!
复制代码
#!/bin/bash复制代码
echo "Hello World"复制代码
稍微解释一下#!是个标记,来告诉我们这个文件中的代码需要的解释器
要想让这个程序跑起来需要两点:1.具有执行权限2.输入执行命令
加上执行权限
复制代码
chmod +x ./a.sh 复制代码
执行代码:
复制代码
./a.sh复制代码
需要注意的是现在的脚本程序的位置,如果不加./ linux会去PATH中寻找,所以./是告诉系统脚本程序的位置。
1.变量:英文字母,数字和下划线,首个字符不能以数字开头
需要注意的是变量名和等号之间不能有空格
变量使用时需要在前面加$
复制代码
#!/bin/bash复制代码
t='hello world'复制代码
echo $t复制代码
readonly将变量定义为只读变量
复制代码
#!/bin/bash复制代码
t='hello world'复制代码
readonly t复制代码
t='you'复制代码
echo ${t}复制代码
unset删除变量,需要注意的是该命令不能删除只读变量
shell的变量可以简单的分为:局部变量(只在当前shell实例中有效),环境变量(所有的shell程序都可以访问),shell变量
2.数据类型
数字,字符串
双引号,单引号都可以用来定义字符串不过建议都用双引号,因为双引号里可以有变量,也可以出现转义字符
介绍一下字符串的几种常见操作
a.获取长度 b.获取子字符串 c.字符串查找
3.数组
用括号来表示数组,用"空格"符号分割开,元素的下标由 0 开始编号获取数组中的元素要利用下标
复制代码
#!/bin/bash复制代码
string=(a b c d)复制代码
echo ${string[0]}复制代码
echo ${string[1]}复制代码
length=${#string[*]}复制代码
echo ${length}复制代码
我们用数组的时候经常用到数组遍历,我们来看一下shell中数组怎样遍历的
4.参数传递
n 代表一个数字,0为脚本的文件名,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推
5.运算符
a.算数运算符,注意:bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 expr
至于算数运算符和其它语言没有类似大家可以自行查阅
b.关系运算符:
关系运算符只支持数字,不支持字符串,除非字符串的值是数字
-eq //等于
-ne //不等于
-gt //大于 (greater )
-lt //小于 (less)
-ge //大于等于
-le //小于等于
c.布尔运算符
-a:与运算 -o:或运算 !:非运算
逻辑运算符:
&&:逻辑的 AND ||:逻辑的 OR
还有字符串运算符,以及文件测试运算符(查文档)
6.函数
关于函数参数的问题在函数体内部,通过 $n 的形式来获取参数的值
7.流程控制
a.if
b.case
八.文件的引用
在shell中我们如何引用其它的shell脚本,是通过import或者require吗?答:不是的
来个例子吧!
source 搞定。。。