Linux基础

1、常用命令

ssh -p 端口号 用户名@主机ip  远程连接(-p可选)
ls  查看当前文件夹文件(不包含隐藏等文件)
ls -l = ll  查看文件夹文件(包含详细信息)
ls -a  查看所有文件(包含隐藏文件)
ls -R  递归查看所有文件
pwd  查看当前目录
cd  切换文件夹
cd ~ 或 直接cd  快速返回家目录
cd -   返回上一次目录
mkdir +文件夹名  新建文件夹
mkdir -p   创建多层文件夹
history  查看使用的历史命令
cat   查看文件内容
cut  截取文本。-d '分隔符'  按分隔符截取。  -f 列数1,列数2....... 获取截取的列数
rm   删除文件
useradd +用户名   创建用户     passwd  设置密码
userdel +用户名   删除用户
usermod +选项 +用户名   修改用户信息
home目录下保存用户信息
echo相当于print    echo +数据 > 文件名   可将数据写入文件(一个大于>是覆盖写,两个大于>>是追加写)
printf  除去不同变量间用空格隔开,同c语言(推荐)
r w x(可执行)   权限顺序:user用户 --> 用户组 --> 其他用户
chmod 二进制 文件名.    chmod u/g/o+-r/w/x +文件名  改权限。查看文件可能需要读和执行两个权限
chown +user:group +文件   改变文件的拥有者和组
| grep   过滤
passwd目录保存用户信息
groupadd   增加用户组
groupdel   删除用户组
groupmod +选项 +用户组   修改用户组
dir  同ls ,但无文件颜色显示
mv  移动文件或重命名文件,存在修改的目录则是移动,不存在就是重命名
tac  从最后一行向上读
cat f1 f2 > f3   将f,f2合并到f3,不删除f1,f2
cat -b   带行号查看
more/less   分屏查看 (more下一行按回车,less下一页按空格、b上一页、q退出)
tail +选项 +文件   查看文件的最后几行   -f 动态查看,一直监听  -n 限制查看行数
du  查看文件大小  

df -h  查看磁盘空间占用情况
lsblk  查看硬盘设备挂载情况
ps -aux查看进程  ps -df  使用标准语法(Unix风格)查看系统上的每个进程
kill -9 杀死进程(kill -9 进程id)
pstree 查看进行树(需要安装)
top  实时监控内存进程
netstat -anp  查看进程网络信息(需要安装net-tools)
netstat -nlp  查看网络端口号占用情况和套接字信息
netstat -tunlp  仅查看网络端口号占用情况
crontab 系统定时任务 -e编辑定时任务  -l 查询任务  -r 删除当前用户的所有任务
find [路径] [选项] [文件名]. 查找 /etc 目录下以 conf 结尾的文件,文件名区分大小写,例如:find /etc -name '*.conf'
diff  逐行比较两个文件差异。 -i 不检查大小写
ln -s 文件路径名 连接名  创建软连接
vim  :set nu显示行号;:set nonu取消显示行号  /xxx搜索xxx,n/N跳转下一个/上一个搜索结果;:noh取消高亮;
     :s/old/new/g光标所在行old替换为new; :%s/old/new/g替换全部; :1,5s/abc/xyz/g替换1-5行
yum 下载并安装
wget 下载
curl url地址 获取网络请求或下载 -O下载文件
rpm [参数] 软件包. -i安装软件包;-e卸载软件包;-qa查询已安装的所有软件包;-ql查询某个软件的安装路径
    如:rpm -ivh xxx 安装软件包。-v显示命令执行过程;-h安装软件包时列出标记

2、文件权限

权限以三位为一组,依次为user,user组,其他用户权限

File Type:

        l 代表软连接

        d 表示文件夹

        — 表示普通文件

3、shell基础命令

1、注释

1、单行注释#

2、多行注释:

:<<xxx
注释内容
xxx   (注:xxx可自定义,推荐EOF)

2、获取变量值

变量的声明,修改,调用(${}),删除(unset)

变量命名用下划线连接

#!/bin/sh
echo "hello world"
a=1
b=2
echo ${a},${b}

echo '${a},${b}' #单引号仅当作字符串,不考虑特殊含义
echo "${a},${b}" #双引号考虑

3、将命令结果赋值给变量的两种情况``和$()

c=`echo ${a}`
d=$(echo ${b})
echo "c=${c},d=${d}"

4、local 定义局部变量

多使用在函数内部,定义局部变量。shell 默认定义的是全局变量,即使在函数内部。

5、env查看所有环境变量

6、set查看所有变量

7、readonly 只读

readonly e=5
#e=2 #报错
echo e=${e}

8、unset删除变量(不可删除只读变量)

unset a
echo a=${a} #a被删除,无值

9、$0...$n 表示运行命令后添加的参数,0是文件名 ,1是第一个参数...

echo "文件名:$0"      
echo "第一个参数:$1"
echo "第二个参数:$2"
echo "第三个参数:$3"
echo "参数总个数: $#" # $#表示传入的参数总个数
echo "参数分别是:$*" # $*显示所有传入的参数
echo "当前脚本ID:$$" # $$当前脚本的ID
echo "后台最后一个进程ID: $!" # $!显示后台最后一个进程ID
echo "$@"             # 同$#
echo \$\_: "$_" 
echo "程序返回:$?" #返回0表示程序无错误,其他值表示有错误

10、字符串的拼接(直接拼,+都不用)

# shell 默认只有字符串一种数据类型,没有int double等
key=abc
value=def
str1=$key$value #直接拼接为abcdef
echo str=$str1
str2=${str1}ghi #可以变量与字符拼接等各种拼接方法
echo $str2

11、获取字符串的长度 在字符串前面加#

echo "str1的长度:${#str1}"
echo "str2的长度:${#str2}"

12、字符串的截取

1、从指定索引位置截取

 ${字符串:开始位置:截取长度}
str3="abcdefghijklmn"
echo ${str3:3:5} #字符串只能是接收值的变量,不能是字符串
echo ${str3:3}   #没有截取长度默认截取到末尾

echo ${str3:0-5:3} #从右边开始计数,从左边开始计数索引从0开始,从右边
索引从1开始

2、从指定字符开始截取

echo ${str3#*def} #截取后面的字符串
echo ${str3#abc}  #最靠近左边的不用*
echo ${str3##*g}  #两个##表示从右边开始截取,遇到符合的就退出

echo ${str3%def*} #%与#作用相反,保留左侧的字符串,但用法相同也有%%

13、数组

#创建数组(用空格隔开)
array1=(a b c d)
echo ${array1} #不带索引输出数组,默认值输出0号索引的值
echo ${array1[0]}
echo ${array1[1]}
echo ${array1[2]}

14、关联数组(键值对) declare -A ...

declare -A array2=(["a"]="1" ["b"]="2")
array2["c"]="3"
array2["d"]="4"
echo ${array2["a"]} #通过key获取值
echo ${array2["b"]}
echo ${array2["c"]}
echo ${array2["d"]}
echo ${array2[*]}   #使用*和@获取所有值
echo ${array2[@]}

15、获取数组中的所有元素

echo ${array_name[@]} //使用 @ 符号可以获取数组中的所有元素

16、获取数组长度的方法

echo ${#array1[*]} //*
echo ${#array2[@]} //@

17、运算符

1、算数运算符 + - * / % = == !=

echo `expr 1 + 1` #`expr x + x`形式,要注意格式
echo `expr 2 \* 2` #乘号比较特殊,是特殊符号,需要转义
echo $((2+3))  #$(())形式,把表达式用两个小括号包裹起来(推荐)

2、关系运算符

# -eq 两值是否相等 
a=10
b=20
if [ "${a}" -eq "${b}" ];
then
  echo "a=b"
else
  echo "a!=b"
fi

# -ne 两数是否不相等, -gt 左值>右值, -lt 左<右, -ge >=, -le <=
# 多用在if判断条件,while判断条件中

18、read 输入函数

-p加提示,-t设置超时时间,-a xxx 把读取的数据赋值给>数组xxx

read -p "请输入姓名和年龄:" name age #多个值用空格隔开
read -p "请输入值存入数组:" -a array1
echo "name=${name}"
echo "age=${age}"
echo ${array1[0]}
echo ${array1[1]}
echo ${array1[2]}

19、echo -e开启转义,\c不换行

echo -e "abc\c"
echo "def"
#printf 同c语言printf
printf "%4.2f\n" 12345678.1234567
printf "%5.2f\n" 12.1

20、if判断语句

if [ $a == $b ]  #注意格式
then  # 表达式包裹在then和fi中
  echo a=b
else
  echo a!=b
fi

if两种判断条件格式

#read -ep "请输入比较值:" e
e=10

#1、[] 需要用字母做比较符
if [ $e -gt '10' ]
then
  echo 'e>10'
elif [ $e -gt 5 ]
then           # elif后也要加一个then
  echo 'e>5'
else
  echo 'e<=5'
fi

2、(()) 需要用符号作比较符(推荐)
if (($e > '10'))
then
  echo 'e>10'
elif (($e > '5'))
then
  echo 'e>5'
else
  echo 'e<=5'
fi

 3、[[ 条件 ]] 用法和作用同[],但支持正则,写法:[[ xxx =~ 正则表达式 ]]

21、let(常用于赋值语句)

let a++; #自增

22、for循环

1、逐个列出循环值
for i in 1 2 3 4 5 6 
do   #for循环语句要包裹在do...done中
  echo $i
done

2、指定范围用{}大括号
for j in  {1..10} 
do
  echo $j
done

3、除do...done以及两层括号外,其余和c语言一样。(推荐)
for((i = 0; i<10; i++))  
do
  echo $i
done

23、while循环


x=0
while (( $x<5 )) 
do  #循环语句包裹在do...done中
  echo ${x}
  let "x++"  #自增
done

24、until循环

与while相反,条件为false循环,为true退出循环

25、case...esac选择分支结构

echo "输入你的分数(1-10):"
read score
case $score in
  1|2|3|4|5) echo "不及格" #匹配条件写出 x1|x2|x3) 格式
  ;;  #两个分号表示该句结束
  6|7|8) echo "及格"
  ;;
  9|10) echo "优秀"
  ;;
esac  # 结束标志,就是case反过来写

26、select选择分支结构(了解)

27、跳出循环 break continue 同java

28、函数

function printInfo()
{
  echo "hello world"
}

printInfo

带返回值函数(return)和带参数函数

sum()
{
 echo $[${1}+${2}] #最好带上大括号${n},代表传入的第n个值
}
                  
sum 2 5

$0 获取运行文件名

$# 获取传入参数个数

$* 和 $@ 获取所有函数。用引号括起来时,* 把所有参数拼接成一个整体。@不会

$? 获取最后一句命令的返回值。为0代表正常执行;其他都是依异常(shell默认所有数都为字符串,所以没有泛型的概念)

29、shell中系统任务设置(定时任务)

定时任务存放在 /etc/crontab 文件中。

格式为:* * * * * 命令

如:每一分钟执行一次/usr/local/shell/test.sh
    */1 * * * * /usr/local/shell/test.sh
修改crontab的配置后需要重启crontab,使配置生效
    /bin/systemctl restart crond.service

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值