Bash Shell学习笔记二

1.||、&& 和&、|的区别

 

||和&&的执行是从左到右,而&和|的执行是两边到中间的(未实际测试,只能确认它不是按顺序执行的)

||和&&的执行时,只要结果确定就停止,而&和|的执行是计算所有值后才停止

||一般用来判断条件满足则执行。例如 [[ $UID == 0 ]] || mkdir /test  ---只有root用户才执行mkdir /test

 

2.设置用户新文件或文件夹的默认权限

umask

umask其实是一个掩码。

也有umask这样一个命令,它是对用户建立的文件的默认属性的定义。

该定义为:
假设umask为022.

则对于一个文件夹的话,它的默认属性为 777-022=755,这也就是我们平时建立文件夹的权限。

而对于一般的文件的话,则是用 666-022=644.

例如,在.bashrc 或者 .bash_profile中设置  umask 066

这样用户登录后建立新文件夹的权限是 rwx--x--x-,新文件的权限为 rwx------

 

3.设置用户新文件或文件夹的默认组

vi /etc/passwd 或者 vi passwd

修改用户的组ID为默认的组,

如:

修改linfengfeiye:x:1009:1001::/home/user/liukejian:/bin/bash

将 1001改为100,则默认组从1001对应的组变为100对应的组

 

4.1>&2,2>&1,1>dev/null,2>/dev/null的意义

 

在Linux中,shell命令一共有3个标准输入输出,stdin,stdout,stderr,其中stdin默认为键盘,其他的默认为显示器。

其中 stdin对应为0,stdout对应为1,stderr对应为2

1>/dev/null表示输出关闭,2>/dev/null表示输入关闭

1>&2,表示将输出合并到错误输出,2>&1表示将错误输出合并到标准输出

 

5.Linux计算表达式的方法

 

方法一   :A=$[ 1 + 2 ]

方法二   :A=$((1+2))

方法三   :A = 'expr 1 + 2' 注意:A='expr 3 /* 4' 

方法四   :let A=1+2

 

6.修改Linux shell提示符

 

在.bashrc中导出PS1

例如:export PS1='/u@/h:/w /$ ' 显示为 linfengfeiye@node2:~ $ 

其中以/开始的字符的意义如下:

 

/d :代表日期,格式为weekday month date,例如:"Mon Aug 1" 
/H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux 
/h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略 
/t :显示时间为24小时格式,如:HH:MM:SS 
/T :显示时间为12小时格式 
/A :显示时间为24小时格式:HH:MM 
/u :当前用户的账号名称 
/v :BASH的版本信息 
/w :完整的工作目录名称。家目录会以 ~代替 
/W :利用basename取得工作目录名称,所以只会列出最后一个目录 
/# :下达的第几个命令 
/$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$

 

7.bash中 $#,$0,$1....$@ 的意义

 

#!/bin/sh

echo "number:$#"

echo "scname:$0"

echo "first :$1"

echo "second:$2"

echo "argume:$@"

 

$#:表示参数个数

$0:表示命令本身

$1:表示命令的第一个参数

$2:表示命令的第二个参数
....
$@:表示参数列表

8.同时执行多个命令
第一种:用;来分隔命令,如
ls /home;echo "hello"
第二种:用&&或者&来分隔命令,对于&&,如果前面返回真才执行后面,对于&,多个命令不会按照顺序执行。
第三种:用||来分隔,如果前面返回真则不会执行后面命令。

9.Linux shell中 如何引用 变量的变量
例如
i=dest
dest=hello
那么如何由i得到hello的应用呢,显然不能直接用$$i.
经过测试和查阅,在SUSE Linux中,下面的是最终结果。
方法如下:
eval echo "$"$i
也可以用eval echo /$$i,但是此方法只能在shell中输入,如果在文件中引用则会没有出现预期的结果。

10. Linux中fuser的使用

fuser -c 目录路径-----显示目前使用这个目录的进程号
fuser -v 目录路径-----显示目前使用的目录的进程号,用户,用户ID,命令
fuser -k 目录路径-----kill掉所有访问或是使用该目录的进程

你可能感兴趣的:(linux,工作,shell,测试,bash,SuSE)