Linux小推车

Linux Day18: unmask/shell

2018-10-25  本文已影响6人  泥人吴

umask :遮罩码

root@VM-0-3-ubuntu:~# umask
0022
$ umask
0002
$ umask 023
$ umask
0023
$ touch hellosa
$ ls -l hellosa
-rw-r--r-- 1 ywu ywu 0 Oct 19 22:46 hellosa
$ mkdir testdir
$ ls -ld testdir/
drwxr-xr-- 2 ywu ywu 4096 Oct 19 22:47 testdir/
$ # -rw-r--r-- 644而不是643?文件默认不能具有执行权限,如果算的结果中有执行权限,则其将权限加1
$ # drwxr-xr-- 754 

站在用户登录的角度来说,SHELL的类型

shell编程:

 静态语言:编译型语言
   强类型(变量)
   事先转换成可执行格式
   + C、C++、JAVA、C#

动态语言:解释型语言,on the fly
   弱类型
   边解释边执行
   PHP、SHELL、python、perl

编程模型
   面向过程:Shell,C
   面向对象:JAVA,Python,perl,C++

变量:内存空间,命令
内存:编址的存储单元

编程能力
   脚本编程

bash变量类型:

1.环境变量
2.本地变量(局部变量)
3.位置变量
4.特殊变量

本地变量:

局部变量:作用域为当前shell进程及其子进程

1.export VARNAE=VALUE
2.VARNAME=VALUE
3.export VANAME

环境变量:

位置变量:$1,$2,...;shift:

# 举例说明:$1\$2代表的意义:
./filetest.sh /etc/fastab /etc/inittab
$1:/etc/fastab
$2: /etc/inittab

# 练习:写一个脚本
能接受一个参数(文件路径)
判定:此参数如果是一个存在的文件,就显示“ok”;否则显示不存在:
ubuntu@VM-0-3-ubuntu:~$ nano filetest.sh
ubuntu@VM-0-3-ubuntu:~$ cat filetest.sh 
# !/bin/bash
if [ -e $1 ];then
 echo "OK"
else
 echo "No such file."
fi
ubuntu@VM-0-3-ubuntu:~$ chmod +x filetest.sh
ubuntu@VM-0-3-ubuntu:~$ ./filetest.sh 
OK
ubuntu@VM-0-3-ubuntu:~$ ./filetest.sh /etc/fstab
OK
ubuntu@VM-0-3-ubuntu:~$ ./filetest.sh /etc/fstabb
No such file.

# 查看shift的意义:
ubuntu@VM-0-3-ubuntu:~$ nano shift.sh
ubuntu@VM-0-3-ubuntu:~$ cat shift.sh 
echo $1
shift 2
echo $1
shift 1
echo $1
ubuntu@VM-0-3-ubuntu:~$ ./shift.sh 1 2 3 4 5 6 7 
1
3
4

特殊变量:

$?:上一个命令的执行状态返回值
$#:参数的个数
$*:参数列表

ubuntu@VM-0-3-ubuntu:~$ nano filetest.sh
ubuntu@VM-0-3-ubuntu:~$ cat filetest.sh 
# !/bin/bash
echo $#
echo $*
if [ -e $1 ];then
 echo "OK"
else
 echo "No such file."
fi
ubuntu@VM-0-3-ubuntu:~$ ./filetest.sh /etc/fstab /etc
2
/etc/fstab /etc
OK

程序执行,可能有两类返回值:

程序执行结果
程序状态返回码(0-255):0代表正确,1-255错误执行(1,2,127系统预留)

输出重定向:

>
>>
2>
2>>
$>
+撤销变量:
unset VARNAME

root@VM-0-3-ubuntu:~# ls /var
backups  cache  crash  lib  local  lock  log  mail  opt  run  snap  spool  tmp
root@VM-0-3-ubuntu:~# nano first.sh
root@VM-0-3-ubuntu:~# nano first.sh
root@VM-0-3-ubuntu:~# ls
first.sh
root@VM-0-3-ubuntu:~# ls -l first.sh
-rw-r--r-- 1 root root 21 Oct 24 21:40 first.sh
root@VM-0-3-ubuntu:~# chmod +x first.sh
root@VM-0-3-ubuntu:~# ls -l first.sh
-rwxr-xr-x 1 root root 21 Oct 24 21:40 first.sh
root@VM-0-3-ubuntu:~# first.sh
first.sh: command not found
root@VM-0-3-ubuntu:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
root@VM-0-3-ubuntu:~# pwd
/root
root@VM-0-3-ubuntu:~# ./first.sh
backups  cache  crash  lib  local  lock  log  mail  opt  run  snap  spool  tmp

root@VM-0-3-ubuntu:~# chmod -x first.sh
root@VM-0-3-ubuntu:~# ls -l first.sh
-rw-r--r-- 1 root root 21 Oct 24 21:40 first.sh
root@VM-0-3-ubuntu:~# bash first.sh
backups  cache  crash  lib  local  lock  log  mail  opt  run  snap  spool  tmp
上一篇 下一篇

猜你喜欢

热点阅读