第一章:初认识linux
第二章:基本命令
常用的命令
绝对路径:是使用 /写起来的
[root@centos ljq]# cd /home
相对路径: 是使用 .写起来的
[root@centos home]# cd ./ljq
文件操作命令
文件处理命令 :
ls、cd、pwd、touch、mkdir、cp、mv、 rm、rmdir
ls
[root@centos ljq]# ls
[root@centos ljq]# ls -a 所有文件,包括隐藏文件
[root@centos ljq]# ls -l 查看文件属性和权限
cd
cd /home 绝对路径
cd ./home 相对路径
pwd
[root@centos ljq]# pwd
/home/ljq
mkdir 创建新的目录
[root@centos ljq]# mkdir -p ./123/ testmkdir 递归创建目录,
rmdir 删除目录
[root@centos ljq]# rmdir -p testmkdir/
cp (复制文件或目录)
[root@centos ljq]# cp -fr if hello
#赋值if到hello
文件查看命令 :
[root@centos ljq]# cat /etc/passwd #全部输出
[root@centos ljq]# more /etc/shadow #可以分页看
[root@centos ljq]# head /etc/passwd #从前面开始看
[root@centos ljq]# tail -3 /etc/passwd #从后面开始看
文件搜索命令:
grep 【查找字符串】
[root@centos ljq]# grep root /etc/services
rootd 1094/tcp # ROOTD
rootd 1094/udp # ROOTD
which
[root@centos ljq]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
find
[root@centos ljq]# find /etc -name passwd #通过名字查找
网络管理与通信命令:
[root@centos hello]# ifconfig
#参看IP主机号
[root@centos hello]# netstat
#打印网络系统的状态信息
-a 所有端口
-at 所有tcp端口
-au 所有udp端口
ping 连接百度网站
[root@centos hello]# ping www.baidu.com
write 向另一个用户进行交互
[root@centos ljq]# write centos
wall root用户向所有用户发送信息
解压缩解命令:
gzip 压缩 只是压缩文件,不压缩目录 不会保留源文件
[root@centos hello]# gzip hello.java #压缩
[root@centos hello]# ls
hello hello.java.gz if
[root@centos hello]# gzip -d hello.java.gz #解压缩
[root@centos hello]# ls
hello hello.java if
[root@centos hello]# gunzip hello.java.gz #解压缩
[root@centos hello]# ls
hello hello.java if
zip压缩 文件和目录 会保留源文件
【就是要自己设置压缩包的名字】
[root@centos hello1]# zip -r ljq.sh.zip ./ljq.sh #压缩
adding: ljq.sh (stored 0%)
[root@centos hello1]# ls
ljq.sh ljq.sh.zip
[root@centos hello1]# unzip ljq.sh.zip #解压缩
Archive: ljq.sh.zip
extracting: ljq.sh
[root@centos hello1]# ls
ljq1.sh.zip ljq.sh ljq.sh.zip
[root@centos hello1]#
bzip2压缩:
tar压缩:
[root@centos hello1]# tar -zcvf ljq.gz.tar ljq.sh #压缩名字为ljq.sh的文件 压缩包名为ljq.gz.tar
ljq.sh
[root@centos hello1]# ls
ljq1.sh.zip ljq.gz.tar ljq.sh ljq.sh.zip
[root@centos hello1]# ls
ljq1.sh.zip ljq.gz.tar ljq.sh.zip
[root@centos hello1]# tar -zxvf ljq.gz.tar #解压
ljq.sh
[root@centos hello1]# ls
ljq1.sh.zip ljq.gz.tar ljq.sh ljq.sh.zip
[root@centos hello1]#
帮助命令:
man
[root@centos hello1]# man ls
info
[root@centos hello1]# info ls
whatis 查询命令功能
[root@centos hello1]# whatis ls
ls (1) - list directory contents
ls (1p) - list directory contents
whoami 查看当前用户
[root@centos hello1]# whoami
root
第三章:用户和用户组
文件基本属性
chown :修改文件或者目录的拥有者
例子: chown root testchown.sh
chmod :修改文件或者目录的权限
例子:
chmod 777 testchmod
chmod u=rwx,g=rx,o=r test1
chgrp :修改文件或者目录的拥有组【组】
例子:
chgrp akak testchgrp
ls -l 查看文件属性和所有组
cat /etc/passwd 【查看用户信息】
cat /etc/shadow, /etc/group 【查看密码】
cat /etc/group 【查看组】
第四章shell编程:
输出
echo "hello word!"
执行shell脚本的方法
chmod +x ./tesh.s
sh text.sh
shell变量
var=123
echo "$var"
~
拼接字符串
myvar="hello"
myvar1=""$myvar",word!"
#变量拼接
myvar2="$myvar word2!"
echo $myvar1
echo $myvar2
获取字符串长度
#!/bin/sh
string="hello word"
echo ${#string}
数组
#!/bin/sh
arr1=(1 2 3 4 5 6)
#输出下标为2的数
echo ${arr1[2]}
#输出所有数据
echo ${arr1[@]}
#输出数组长度
echo ${#arr1[@]}
shell算术运算符
#!/bin/bash
val=`expr 2 + 2`
echo "两数之和为 : $val"
注意:表达式和运算符之间要有空格,不然会报错误,然后还要是反引号 expr是一个计算工具,可以这样理解,把数据放进里面,就开始运算。
要注意空格的问题。。。。
#!/bin/sh
var=`expr 2 + 2`
echo "两个数的和:$var"
var1=`expr 3 == 3`
echo $var1
if [ 3 == 3 ];then
echo "true"
fi
exit 0
shell关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
相关字符的意思:
-eq是等于
-ne是不等于
-gt是大于
-lt是小于
-ge是大于或等于
-le是小于或等于
案例实现:
#!/bin/sh
a=10
b=20
if [ $a -eq $b ]
then
echo "$a -eq $b : a 等于 b"
else
echo "$a -eq $b: a 不等于 b"
fi
if [ $a -ne $b ]
then
echo "$a -ne $b: a 不等于 b"
else
echo "$a -ne $b : a 等于 b"
fi
if [ $a -gt $b ]
then
echo "$a -gt $b: a 大于 b"
else
echo "$a -gt $b: a 不大于 b"
fi
if [ $a -lt $b ]
then
echo "$a -lt $b: a 小于 b"
else
echo "$a -lt $b: a 不小于 b"
fi
if [ $a -ge $b ]
then
echo "$a -ge $b: a 大于或等于 b"
else
echo "$a -ge $b: a 小于 b"
fi
if [ $a -le $b ]
then
echo "$a -le $b: a 小于或等于 b"
else
echo "$a -le $b: a 大于 b"
fi
布尔运算符
!或 ==
#!/bin/sh
a=10
b=20
if [ $a != $b ]
then
echo "$a != $b : a 不等于b"
else "$a == $b : a 等于b"
fi
exit 0
逻辑运算符
&&逻辑和 ||逻辑或
因为一个判断要使用一个[],如果两个判断的话就是[ ] [ ] 而且用这个判断的话,就要使用这些逻辑运算符
#!/bin/sh
a=10
b=20
if [[ $a -lt 100 && $b -gt 100 ]];then
#意思就是a小于100 和b大于100
echo "ture"
else echo "false"
fi
exit 0
流程控制
if判断语句 【总结:就是有if的后面都要添加then】
for((file1=1;file1<=100;file1++))
do
if (($file1<=20))
then
echo "$file1"
else
fi
done
for循环
第一种C语言的格式:
for ((i=1; i<=100; i++))
do
echo $i
done
第二种python的格式:
for i in {1…100}
do
echo $i
done
if判断和for一起使用
#!/bin/sh
#aaaa.sh
var=123
echo "$var"
#for file1 in {1..100}
for((file1=1;file1<=100;file1++));do
if (($file1<=20));then
echo "$file1"
elif (($file1 <=50));then
echo "path:$file1"
else echo "test:$file1"
fi
done
while选择语句
int=1
while(($int<=8));do
echo $int
let "int++"
#let是运算
done
exit 0
结果:
until选择语句
返回值是false才可以进入循环
#!/bin/bash
a=0
until [ ! $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done
select选择语句
#/bin/sh
echo "请按照顺序选择"
select i in "11" "22" "33"
do
echo "选择了$i"
break
done
exit 0
case … esac选择语句
echo "其输入1-4数字:"
echo "输入:"
read int
case $int in
1) echo "1t";;
2) echo "2t";;
3) echo "3t";;
4) echo "4t";;
*) echo "没有数据";;
esac
read site
case "$site" in
"runoob") echo "菜鸟教程"
;;
"google") echo "Google 搜索"
;;
"taobao") echo "淘宝网"
;;
*) echo "没有数据";;
esac
~
这个是可以自定义输入的信息的,不用规定为数字列表
shell函数
#!/bin/sh
#vi fun.sh
demofun(){
echo "这是一个函数"
}
echo "函数开始"
demofun
echo "函数结束"
exit 0
结果:
2.函数
!/bin/sh
#vi fun.sh
demofun(){
echo "这是一个函数"
}
fun2(){
echo "这个函数会对输入的两个数字进行相加运算..."
echo "输入第一个数字: "
read aNum
echo "输入第二个数字: "
read anotherNum
echo "两个数字分别为 $aNum 和 $anotherNum !"
return $(($aNum+$anotherNum))
}
echo "函数开始"
demofun
fun2
echo "两个数的和为:$? !"
echo "函数结束"
exit 0
函数返回值在调用该函数后通过 $? 来获得。
结果:
函数参数:
fun3(){
echo "$1参数"
echo "$2参数"
}
fun3 1 2
输出的数为1参数 2参数 |
---|
第六章:进程管理
参看进程ps
ps -aux
ps -ef
kill -9 进程号
或者kill -15 进程号