`
jja1982
  • 浏览: 112462 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

鸟哥的Linxu私房菜 基础学习篇 读书笔记(二)

阅读更多
十. vi文字处理器
vi共分为3中模式,分别是一般模式,编辑模式与命令行命令模式。
1. 使用vi 进入一般模式。
2. 按下i进入编辑模式,开始编辑文字。
3. 按下[Esc]键回到一般模式。
4. 在一般模式中按下:wq存储后离开vi。

十一. 认识Bash Shell
/bin/bash是Linux默认的shell。
您曾经执行的命令都记录下来了,记录的文件在家目录内的.bash_history中。不过需要注意的是,~/.bash_history记录的是前一次登录之前所执行过的命令,而至于这一次登录所执行的命令都被暂时储存在临时文件中,成功注销系统后,该命令记录才会记录到.bash_history中。

变量的获取与设置:echo、变量设置规则、unset
echo $PATH 或 echo ${PATH}
PATH=”$PATH”:/homt/dmtsai/bin
Cd /lib/modules/`uname –r`/kernel 在一串命令中,`之内的命令将先执行,而其执行出来的结果将作为外部输入信息。
列出所有的环境变量:env
HOME:代表用户的家目录。
SHELL:当前这个环境使用的shell是哪个程序。
HISTSIZE:历史命令的记录数目。
ENV:这个是用户所用的个性化环境设置文件的读取文件。
MAIL:当使用mail命令收信时,系统回去读取的邮件信箱文件(mailbox)。
PATH:执行文件搜索的路径。目录之间以:分割,由于文件的搜索是按顺序由PATH的变量内的目录来查询,所以目录的顺序很重要。
LANG:语系文件。

set命令除了会降环境变量列出来之外,其他的自定义变量,以及所有的变量,都会列出来。
这次登陆所进行的变量设置,如果没有更改设置文件,那么这次设置的变量在下次登录时将被取消。所以,如果想要变量每次都能在您登录时自动设置好,那么就必须将设置写入登录时加载的设置文件。
命令别名设置alias、unalias
alias lm=’ls –l | more’
如何知道当前有哪些命令别名:alias

历史命令:history
history
history 3 列出当前最近的3个命令
history –w 在默认情况下,会将历史记录录入~/.bash_history中。

系统默认的PATH并没有执行当前目录下的设置,也就是”.”路径。只是出于安全的考虑。所以在执行当前目录命令时,要加上./,如./squid
个人的个性化设置一般写在~/.bash_history
在我们登录bash的时候,设置文件的读取顺序是
1. 先读取/etc/profile,再根据/etc/profile的内容去读取其他附加的设置文件,例如etc/profile.d与/etc/inputrc等设置文件。
2. 根据不同的用户,到用户家目录去读取~/.bash_profile或~/.bash_login或~/.profile等设置文件。
3. 根据不同的用户,到家目录去读取~/.bashrc。

数据流重导向就是将某个命令执行后应该要出现在屏幕上的数据,传输到其他地方,例如文件或者设备(如打印机)。>替换 >>累加。
1. 标准输入(stdin):代码为0,使用<或者<<
2. 标准输出(stdout):代码为1,使用>或者>>。
3. 标准错误输出(stderr):代码为2,使用2>或者2>>。
/dev/null这个垃圾桶很重要,当输入的任何东莞联系导向这个虚拟的垃圾桶设备时,他就会凭空消失不见了。
< 将原本需要由键盘输入的数据,通过文件来读入。

管道命令|,在每个管道的前后都是命令。后一个命令的输入时前一个命令的输出。
ls –al /ect | less
选取命令。
cut:将一块短数据经过分析后,取出我们想要的部分,或者是,通过分析关键字,取出我们想要的行。
last | cut – d ‘ ‘ -f 1
grep:分析一行信息,若其中有所需要的信息,就将该行取出。
last | grep ‘root’
排序命令。
sort:用来排序。Scat /etc/passwd | sort
uniq:想要将重复的数据仅显示一行 last | cut –d ‘’ –f1 | sort | uniq –c
wc:想要知道文件中有多少字,多少行,多少字符
cat etc/man.config | wc -l

十二. 正则表达式

^word:待搜索的字符串(word)在行首
grep –n ‘^#’ regular_express.txt  搜索行首为#的那一行
word$:待搜索的字符串(word)在行尾
grep –n ‘!$’ regular_express.txt  将行尾为(!)的那一行显示出来
.:代表任意一个字符,一定是一个任意字符
\:转译符,将特殊符号的特殊意义去除。
*:重复零个或多个的前一个重复字符。
\{n,m\}:连续n到m个的前一个重复字符。若为\{n\}则是连续重复n个前一个字符。若为\{n,\}则是连续重复n个以上前一个字符。
Grep –n ‘go\{2,3\}g’ regular_express.txt
[]:字符集合的重复特殊字符的符号。
grep –n ‘[0-9a-zA-Z]’ regular_express.txt
grep –n ‘oo[^t]’ reqular_express.txt

正则表达式的特殊字符与一般在命令行输入命令的通配符并不相同。例如,在通配符中,(*)代表0到无限多个字符,但在正则表达式中,(*)则是重复0到多个前一个字符的意思。
举例来说,不支持正则表达式的ls工具中,若使用 ls –l * 代表任意文件的文件名,而ls –l a* 代表以a开头的任何文件名的文件。但在正则表达式中,要找到含有以a开头的文件,则必须要这样做(需搭配支持正则表达式的工具):ls | grep –n ‘^a.*’
另外,通配符的反向选择为[!range],正则表达式则是[^range]。

十三. 学习shell脚本
Shell脚本是利用shell功能说编写的程序,这个程序使用纯文本文件,将一些shell语法与命令写在里面,与正则表达式、管道命令与数据流重导向一起实现我们的目的。
#可作为注释。任何加载#后面的内容,将全部被视为注释文字而被忽略。
执行一个文件,方法如下:
1. 将shell.sh加上可读与执行(rx)权限,然后就能用./shell.sh执行了。
2. 用sh shell.sh的方式直接执行即可。
Shell脚本的第一行 #!/bin/bash在声明这个脚本时用的shell名称:因为使用的是bash,所以要以”#!/bin/bash”来声明这个文件内的语法使用bash的语法。当执行这个程序时,他就能加载bash的相关环境设置文件,并且执行bash来使下面的命令能执行。这很重要(很多情况下,如果没有设置好这一行,那么该程序很可能无法执行,因为系统可能无法判断该程序要使用什么shell来执行)。程序内容的声明:整个脚本中,错了第一行的#!是用来声明shell的之外,其他的#都是注释。
Shell脚本的默认变量($0, $1 … )
Sh sh07.sh theone haha quot
$0 = sh07.sh, $1 = theone, $2 = haha, $3 = quot
条件判断
使用if…then
if [ 条件判断表达式一 ]; then
当条件判断表达式一成立时候,可以执行的命令。
elif [ 条件判断表达式二 ]; then
当条件判断表达式二成立时,可以执行的命令。
else
当条件判断表达式一与二均不成立时,可以执行的命令。
fi
使用case…esca
case $变量名称 in
  “第一个变量内容”)
程序段
;;
  “第二个变量内容 “)
程序段
;;
  *)
不包含第一个变量内容与第二个变量内容的其他程序执行段
exit 1
;;
esac
函数
function fname() {
程序段
}
循环
while do one, until do done
while [ condition ]
do
程序段落
done
until [ condition]
do
程序段落
done
for…do…done
for (( 初始值; 限制值;  执行步长))
do
程序段
done
shell脚本的追踪与调试
sh –n scripts.sh 不要自行脚本,仅查询语法问题。
sh –x scripts.sh 将使用的脚本内容显示到屏幕上,则是很有用的调试参数
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics