基于Red Hat 5的linux学习笔记----------------------宙斯-------欧也也也!!!!!!!!
人生哪能不二!! 加了个油!!!
超级用户利用root登陆:在超级用户权限下可以更改任何文件。
普通用户即利用普通用户名登录即可,在普通用户权限下,有一些设置是不能更改的。
命令详解篇
一、添加用户
useradd
例如:useradd smd
则在linux系统中会新添加以用户 用户名为 smd
在超级用户下运行 ls /home/(即查看home目录) 会新添加一名为smd的文件夹
二、修改密码 passwd
例如: passswd smd
则系统会提示 更改密码设置 输入两次 即改密成功。
三、切换用户 su
例如: su smd 则会切换到 smd用户下
su root 则会切换到root用户下,但是root用户会要求输入密码。
四、关机 shut down now 即立刻关机
五、拷贝 cp 拷贝文件或者目录
格式: cp 源文件或源目录 目标文件或目标目录,(当拷贝目录时在cp后要加上-r)
六、移动(即剪切) 或 更名 mv
格式: mv 源文件或目录 目标文件或目录
七、删除 rm (同样 当要删除目录时要在目录后加-r)
即 rm hand –r (删除hand 目录)
八、 创建目录 mkdir 文件名
例如: mkdir hand (创建名为 hand 的文件名)
九、改变工作目录 cd
格式 cd 目录
例如 cd /home/
cd / (回到根目录下)
十、查看路径 pwd 显示当前工作目录的绝对路径
十一、查看目录 ls
例如 : ls (查看当前目录下的子目录)
ls /home/ 查看home文件下的子目录(仅仅是查看)
详细查看指令: ls –l 能详细查看本目录中的文件 (建立时间和 文件大小)
十二、打包与压缩
格式: 1、tar cvf tmp.tar /home/tmp
将 /home/tmp/目录下的所有文件和目录打包成一个tmp.tar文件
2、tar xvf tmp.tar
将打包文件tmp.tar文件解压开
3、tar cvzf tmp.tar.gz/home/tmp
将/home/tmp目录下的文件和目录打包并压缩成一个 tmp.tar.gz
4、tar xvzf tmp.tar.gz
将打包的压缩文件tmp.tar.gz在当前目录下解开
十三、解压缩 unzip 例如: unzip tmp.zip 解压tmp.zip文件
文本编辑
一、vi hello.c 就会自动创建一个hello.c文件 . 敲入i转到插入模式 就可以写程序了、。 键入【Esc】 退到命令行模式 键入:wq(有冒号的)
保存并退出
二、 命令行模式功能键:
yy 复制光标所在行
【n】yy n为数字 ,复制当前光标开始的n行
P 粘贴复制的内容到光标所在出
dd 删除当前光标所在行
【n】dd 删除当前光标所在的n行
/name 查找光标之后的名为name的字符串
G 光标移动到文件尾(注意是大写)
u 取消前一个动作(注意是小写)
三、底行编辑功能键
:w 保存
:q 退出 vi(系统会提示保存修复)
:q!强行退出(对保存不做修改)
:wq 保存后退出
:w filename 另存为filename的文件
:set nu 显示行号
:set nonu 取消行号
TFTP服务器
宿主机:主要执行 编译、连接、嵌入式软件的计算机
目标机:运行 嵌入式软件的硬件平台
Tftp服务器作为工作于宿主机上的软件,主要提供对目标机的主要映像文件的下载
Shell编程
#!/bin/sh 用指定的脚本文件解析程序,即利用shell解析程序
注释利用 #
编程:(变量不必提前定义)
例1: #!/bin/sh
# set variable a
a=“hello world” (不用分号结束,a为变量 所以和等号之间不能有空格)
#print a
echo “A is :”
echo $a (在 下一行输出 hello world)
输出结果:
A is:
hello world
例2:
#!/bin/sh
num=2
echo “this is the $num”
输出结果:
this is the 2
例3.
#!/bin/sh
num=2
echo “this is the ${num}nd” (只有家大括号才会识别变量)
输出结果:
this is the 2nd
默认变量:(即 系统已经定义的变量 不是我们定义的)(冒号不是命令)
$#: 传入脚本的命令行参数个数
$*: 所有命令行参数值,在各个参数值之间留有空格
$0: 命令本身(shell文件名)
$1: 第一个命令行参数
$2: 第二个命令行参数
例:
输出结果:
局部变量:
在变量首次被赋值是加上local关键字可以声明一个局部变量
Local在function func1 函数中声明了一个hello 局部变量,变量只在函数中有效。
输出结果:
变量:
1、 变量赋值时,“=”左右两边不能有空格
2、 Bash 中的语句结尾不需要分号。
If语句
****if【expression】
then
#code block
fi
****if [expression]
then
#code block
esle
#code block
fi(以fi结尾结束if语句)
***** if [expression]
then
#code block
else if [expression]
then
#code block
else
#code block
fi
fi
每一个if 都要一个fi结束
比较
比较操作 整数操作 字符串操作
相同 -eq =
不同 -ne !=
大于 -gt >
小于 -lt <
大于或等于 -ge
小于或等于 -le
为空 -z
不为空 -n
例:
比较整数a和b是否相等: if [ $a = $b ] (也可以eq)
判断整数a是否大于整数b: if [ $a –gt $b ]
比较字符串a和b是否相等: if [ $a = $b]
判断字符串是否为空: if [ -z $a ]
判断整数变量a是否大于b: if [ $a –gt $b ]
注意:
1、 在“[”和“]”符号左右都留有空格
2、 “=”左右也都有空格(在变量赋值时 = 两侧没有等号)
文件判断:
-e 文件已经存在
-f 文件是普通文件
-s 文件大小不为零
-d 文件是一个目录
-r 文件对当前用户可以读取
-w 文件对当前用户可以写入
-x 文件对当前用户可以执行
例:
#!/bin/sh
Folder=/home
[ -r “$folder” ] &&echo can read $folder # 只有&&前面成立才执行后面语句
[ -f “$folder” ] || echo this is not file #只有 || 前面不成立才执行后面语句
输出结果:::
For 循环:
for循环结构与C语言中有所不同,在bash中for循环的基本结构是:
for var in [list]
do
#code block
done
其中 var 是循环控制变量,[list] 是var 需要遍历的一个集合,do/done 包含了循环体,相当于C语言中的一对大括号。另外如果do和for被写在同一行,必须在do前面加上“;“ 。 如 for $var in [list] ; do
例一:
输出结果:
for循环7次 一次输出 sun-----------sat
例二:若将星期用引号引住,则只循环一次,因为编译器认为引号中为一个字符
输出结果为:::
for循环注意::
在上面例子中,在for所在行变量day是没有加“$“符号的,二在循环体内,echo所在行变量$day时必须加”$“符号的。。。。
while循环
while循环的结构为:
while[condtion]
do
#code block
done
until循环
until循环的基本结构::
until [condtion]
do
#code block
done
while 和until 的区别在于 while是条件为真时执行,until是条件为假时执行。
case语句
bash中的case语句与C语言中的switch语句功能类似,可以用于多项分支控制
case “$var” in
condtion1);;
contion2);;
default statements;;
esac
注意是两个双引号
例::
输出结果:::
qcd 功能介绍:
qcd –s
qcd –e
如果工作目录很长,用cd切换很不方便,则利用qcd –s
例 qcd -s /home/code/hand/lesson/
在运行 qcd –e 之后就会直接出现/home/code/hand/lesson/ 然后再选择目录即可
qcd –d 是删除目录
qcd –l 列出所有的目录
qcd –c 是删除所有目录