linux和shell总结

linux发展史,从刚开始的Unix,变成Minx,发展成Linux。
发行版本:Ubuntu.
Redhat.
Debian.
Linux Mint.
CentOS
vim/vi:有三种模式。一般模式,编辑模式,指令模式。
man 和 help都是帮助命令man是Linux的命令,help是shell中的命令
ctrl + c 停止进程。ctrl + l 清屏,reset彻底清屏。ctrl + q退出,tab键提示补全。ctrl + alt linux和Windows之间切换。
pwd:显示用户当前工作目录的绝对路径。
ls查看目录列表,cd 进入目录下的某个文件夹,或者指定目录。
mkdir创建目录,rmdir删除目录,只能删除空目录。
touch创建空文件,rename为文件修改名称。cp 指定目录或文件复制到指定目录下。
rm一般加-rf递归删除目录下所有文件。 mv移动文件或重命名。
cat 查看文件内容 more、less、head、tail都是查看文件的内容
echo 输出后面的内容 > 是覆盖 >> 追加
ln 创建硬链接 ln -s 创建软连接 history 查看历史命令
find -name -type -size -empty 判断文件。
grep 过滤查找 which查看命令的绝对路径 whereis显示指令及相关文件的路径
useradd添加用户,passwd设置密码,id查看用户是否存在,su切换用户,userdel删除用户及相关文件,
whoami显示自身用户名称,who am i 显示登录用户
sudo 设置普通用户添加root权限 usermod用于修改用户的基本信息,groupadd创建组,groupdel删除组,
groupmod修改组信息,r=4,w=2,x=1 chmod改变权限,chown改变文件或目录所有者,chgrp改变所属组。
date显示当前时间,cal查看日历,gzip/gunzip压缩与解压缩,压缩后源文件不存在,解压后压缩文件不存在。
zip/unzip压缩与解压缩压缩过源文件存在,解压过源文件存在。
tar-c是产生压缩文件,-x是解压文件,ps-aux查看进程,-ef查看子进程,kill-9 进程id杀掉某一个进程,killall进程名称。
pstree查看进程树,top报告系统整体性能情况,free显示内存情况,netstat显示网络系统得状态和端口号占用情况。
df查看磁盘占用情况,du显示文件和目录的磁盘使用空间情况 fdisk查看磁盘使用情况和磁盘分区,mount/umount挂载设备。
rpm查询卸载安装软件包,yum安装软件包。crontab-e编解定时任务,-l显示定时任务列表,-r删除定时任务。

shell是一个解释性语言、易编写、易调试、灵活性强。
格式
第一部分第一行必须是#!/bin/bash
第二部分描述脚本名称时间作用路径等信息,第三部分开始脚本内容。
自定义变量 用户变量 变量名=值 读取变量echo$变量名 撤销变量uset变量名 静态变量 readonly变量名=值,不能撤销。
全局变量:export变量名=值,系统变量在/etc/profile文件中添加。
$n n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10};
$# 参数的个数 $*代表所有参数 $@代表所有参数,但是引号引起来会把它分开看待。$?获取上一次命令的结果
数组名=() 获取所有元素echo${数组名[*]}、根据索引获取数据echo${数组名[索引]}、获取数组长度:echo${#数组名[*]}
unset 数组名[索引] 删除根据索引得到的数据不写索引全部删除。
$((运算式))或$[运算式] expr 运算符前后得加空格 小数计数得:echo "scale=小数位数 ; expression" | bc 给bc计算器
(1)两个整数之间比较
== 字符串比较
-lt 小于(less than)
-le 小于等于(less equal)
-eq 等于(equal)
-gt 大于(greater than)
-ge 大于等于(greater equal)
-ne 不等于(Not equal)
(2)按照文件权限进行判断
-r 有读的权限(read)
-w 有写的权限(write)
-x 有执行的权限(execute)
(3)按照文件类型进行判断
-f 文件存在并且是一个常规的文件(file)
-e 文件存在(existence)
-d 文件存在并是一个目录(directory)
语法:if[条件判断式]
then
主体代码
fi
第二种
if [ 条件判断式 ]
then
主体代码
else
主体代码
fi
第三种
if [ 条件判断式 ]
then
主体代码
elif [条件判断式]
then
主体代码
else
主体代码
fi
case判断语法
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
for循环语句
写法二
$*:读取传入脚本中的全部参数,把参数看作一个整体
$@:读取传入脚本中的全部参数,把参数区分对待

for 变量 in "$*"
do
程序
done

for 变量 in "$@"
do
程序
done
while循环语句
while [ 条件判断式 ]
do
程序
done
read读取控制台输入,-p指定提示符-t等待时间
系统函数
basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。
dirname从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分)
自定义函数
语法:[ function ] funname()
{
Action;
[return int;]
}
funname
cut对文件的切分指定用户显示出的部分。
-b <起始字节位置-结束字节位置>仅显示行中指定字节范围的内容。例如,“-b 2-10”将显示第2~10个字节位置的内容,当只有一个数字时,则仅显示指定字符位置的内容.
-f <起始列位置-结束列位置>显示指定的字段内容,-d <分隔符>指定字段的分隔符,默认的字段分隔符为“TAB”,-c <起始字符位置-结束字符位置>
仅显示行中指定范围的字符。例如,“b2-10” 将显示第2~10个字符位置的内容。当只有一个数字时,则仅显示指定字符位置的内容。

sort将文件进行排序-n依照数值的大小排序,-r以相反的顺序来排序。-t设置排序时所用的分隔字符,-k指定需要排序的列
sed一次处理一行内容不在源文件上做修改然后输出修改过的结果。-e直接在指令列模式上进行sed的动作编辑(一次执行多个操作时)。
-i直接编辑文件,p打印一般 -n 配合使用,a新增,在指定的行之后插入内容,i新增,在指定的行之前插入内容,
d 删除,s 查找并替换 (注意:如果进行全局的查找替换 sed -i ‘s/查找条件/替换字符串/g’ global)。

awk是一门编程语言,也是一个强大的文本分析工具,逐行扫描文件,默认从第一行到最后一行,寻找匹配特定模式的行,并在这些行上进行你想要的操作。
语法:awk 选项 ‘pattern1{action1} pattern2{action2}...’ 文件名,-F 指定输入文件折分隔符,-v 赋值一个用户定义变量。
awk内置的变量FILENAME文件名 NR已读的记录数 NF浏览记录的域的个数。

猜你喜欢

转载自www.cnblogs.com/chenduo000/p/13400072.html