目录
本篇为初步整理的相关知识点,会有很多不足之处,后续还会继续完善。
在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(command interpreter,命令解析器)。它类似于DOS下的COMMAND.COM和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
通俗理解,shell是命令行解析器,解释用户输入的命令,调出程序等,同时,shell还是脚本语言。这里主要熟悉下shell的基本命令和语法。
shell命令提示符:用户名@主机名 路径名
命令的基本格式:指令 -选项 参数
例如rm -rf 文件名/路径名
若将多个命令在一行书写,用分号(;)将各命令隔开;
如果一条命令不能在一行写完,在行尾使用反斜杠(\)标明该条命令未结束
Bourne Again Shell(bash)
定义命令别名 alias d ='cd'
取消别名unalias d
通配符 (方便批处理
rm 1.*删除以1.为前缀的文件
?匹配一个长度的字符
[123]匹配列表中任意一个字符,[1-9]匹配范围内的任意一个字符
[^3]匹配列表中的之外的所有字符的任意一个
管道符 |
将第一个命令的输出作为第二个命令的输入
ls|wc -l 显示出ls出来的行数
wc -w单词个数 wc -c字符个数 空格会算上
重定向符 > 和>>
> 将>前面命令的输出结果定向到目标文件中,目标文件原来内容被清空cat1.c >2.c
>>在目标文件中增加第一个命令输出的内容
输入重定向 wc<1.c 输出1.c文件的行号,单词数,字符个数
2>或&>报错重定向
cd 1 2>1.c将cd 1这个命令的报错信息重新定向到1.c这个文件中,1.c原来的内容被清空
基本系统维护命令
shutdown -h now /-h +60
shutdown -h +60
shutdown -r now :reboot
passwd username 修改用户的密码
su切换管理员用户,exit退出
df 查看磁盘占用情况 ,选项说明
-a 显示所有物理内存使用情况,
-h 以兆为单位查看
-k 以千字节为单位查看
-T 查看磁盘对应文件的类型 type
安装nfs(network file system)服务器
用于文件共享,方便用户访问
1、安装
sudo apt-get install nfs-kernel-server
2、修改配置文件
sudo vi /etc/exports
在最后一行添加/home/ubuntu/nfs/rootfs *(rw,sync,no_root_squash,no_subtree_check)
去掉开头的#号
/home/ubuntu/nfs/rootfs:根文件系统的路径,修改为自己的路径
* ---> 指所有的用户
rw ---> 对跟文件系统可读可写的权限
sync ---> 同步文件
no_root_squash ---> 如果客户端为root用户,那对文件系统有root的权限
no_subtree_check ---> 不检查子目录的权限
注:
1> *( : 之间不可以出现空格
2> rw,sync,no_root_squash,no_subtree_check 逗号后边不允许有空格
创建nfs文件夹 cd ~ ; mkdir nfs ; chmod 777 nfs
拷贝压缩包到nfs文件夹下,并解压 tar -vxf rootfs-ok.tar.xz
添加用户adduser hq 添加用户hq
usermod -p 123456 username :修改密码
语法:usermod [-u uid [-o]] [-g group] [-G gropup,…]
[-d home [-m]] [-s shell] [-c comment]
[-l new_name] [-f inactive][-e expire]
[-p passwd] [-L|-U] name
给用户重命名并且更改对应用户主目录的名字:
usermod -d /home/newname -m -l newname oldname
- 删除用户:deluser --remove-home user1 删除用户user1的同时删除用户的工作目录
删除用户组:delgroup groupname
ps 查看进程动态
-A列出所有的行程
top动态监视进程运行状态
shift+'>' :向下翻页
shift+'<' :向上翻页
q:退出
kill -l查看信号列表
SIGKILL:杀死进程
14) SIGALRM:alarm()函数调用时产生该信号
17) SIGCHLD :子进程结束时会给父进程发送该信号
19) SIGSTOP :暂停进程
文件相关命令
cat -n 目标文件:查看指定文件的内容,带行号
sudo cat /dev/input/mouse[0-3]:查看鼠标设备
4.文件移动
mv 文件 目标路径
day5
shell脚本里的多行注释
<<字符串
被注释内容
字符串
ex:
<<zzz
echo hello
zzz
echo nihao
解释:此时hello无法被输出;注意3个及以上的字母才可以
shell脚本里的函数
格式:
function 函数名()
{
函数体
return 返回值
}
-
注意:function用于声明一个函数
-
shell脚本里的函数没有返回值类型
-
shell脚本里的函数没有参数列表,但是可以通过位置变量传参
-
shell函数函数体也是在{}内部
-
shell脚本在通过return返回一个数值是只能返回0-255这个范围内的数值,超出这个范围需要通echo来接收返回值
-
函数只有被调用才会执行
函数的调用
函数名 参数1 参数2 参数3.。。。。
传参方式是传递的参数被位置变量接收($1 $2$3.....)
$0接收的参数是脚本名,$1传递的是第一个函数参数,依次向下
#!/bin/bash
#函数定义
function exap()
{
echo $0
echo $1
echo $2
}
#函数调用
exap hello hahha nihao
函数返回值的获取
-
可以通过$?来获取
#!/bin/bash
function fun_add()
{
echo $0
echo $1
echo $2
return $(($1+$2))
}
#函数调用
fun_add 112 100
#返回值获取通过$?
echo $?
-
可以通过全局变量来获取返回值
#!/bin/bash
function fun_add()
{
echo $0
echo $1
echo $2
sum=0
sum=$(($1+$2))
}
#函数调用
fun_add 112 100
#返回值获取通过$?
echo $sum
注意:在shell脚本里无论变量是否是在函数内部,变量属性默认都是全局可用,想要让变量变成局部变量,可以在变量前加local
-
可以通过echo来实现返回值的返回,>255的数值只能通过这种方式获取
#!/bin/bash
function fun_add()
{
echo $0
echo $1
echo $2
echo $(($1+$2))
}
#函数调用
#通过echo方式返回结果,并使用命令置换符来给变量赋值函数返回结果
ret=`fun_add 112 200`
ret=$(fun_add 112 200)
#返回值获取通过$?
echo $ret