1.16条常用的命令

.文件的权限修改:(把文件1.txt的归属改为mysql的,然后ll查看)
chown mysql:mysql .txt .增加当前用户的x权限,然后ll查看:
chomd u+x .txt .对比文件的差异:
diff .txt .txt .查询文件位置:
find ./ -name .txt .杀掉进程
kill - .杀掉test用户下面的所有进程:
ps -ef | awk '$1=="test"{print $2}' | xargs kill - .查看时间:
date .查看当前用户
id .查看当前主机信息
uname -a .使用root用户修改test用户密码:
passwd test .磁盘空间信息
df -h .查看当前所在目录
pwd .标准输出,和print类似:
echo '' .查看文件前10行信息
head - .txt .查看文件后10行
tail - .txt .vi基本使用
ESC后:
x:删除一个字符
dd:删除一行
底行模式:
设置行号:set nu
查找:/字符

2.文件权限问题命令:

.权限字符:
分三列:所有者,所属组,其他
r:读---
w:写---
x:执行--- .增加当前用户的x权限,然后ll查看:
chmod u+x .txt .文件的权限修改:(把文件1.txt的归属改为mysql的,然后ll查看)
chown mysql:mysql .txt .例如:-rw-r--r--. root root Mar : test.sh
所有者:root 权限:rw
所属组:root 权限:r
但是所有者root可以使用:sh test.sh来执行这个文件,因为可读
直接使用./test.sh执行不了,
需要授权:chmod +x test.sh 即可执行 .执行文件:(推荐./和sh的方式)
有r:
sh test.sh
bash test.sh
source test.sh 有x:
sh test.sh
bash test.sh
source test.sh
./test.sh .sh的原理:
读取文件的命令,然后执行文件里面的命令,所以只要有r权限就能执行

3.命令操作符号问题:

.符号>
删除文件内容追加新内容,经常和cat一起使用
cat >.txt
回车然后输入内容 .符号>>
不删除文件内容追加字符,经常和cat一起使用
cat >>.txt
回车然后输入内容 .符号;
执行多条命令
cat .txt ; ls .符号|
管道:| 表示管道,上一条命令的输出,作为下一条命令参数(输入)。
cat .txt | grep 你好 .符号&&
前面的命令执行成功才执行下一条命令
cat .txt && ls .符号||
前面的命令执行不成功才执行下一条命令 .符号""
输出变量值
echo "第一个变量是:$a" .符号''
只会当成字符串输出
echo '第一个变量是:$a' .符号``
符号内解析为一条命令
a='date' 为字符串 echo $a 结果为date
a=`date` 为一条命令 echo $a 结果为时间 .无底洞
>/dev/null 把错误的输出丢到无底洞,不会在控制台打印错误信息
>/dev/null 把正确的输出丢到无底洞,不会在控制台打印正确信息
cat .txt >/dev/null

4.运算符号问题:

.输出表达式的三种方法:
expr +
echo $[ + ]
echo $(( + )) .使用bc计算器(字符串交给bc处理)
echo "1.2+1.3" | bc 结果:2.5
echo "scale=2;1.2+1.3" | bc 结果:2.5
echo "scale=2;(1.2+1.3)/1" | bc 结果:2.50

5.判断运算的问题:

    -e    目标是否存在:    [ -e .txt ] || touch .txt
-d 是否为路径 : [ -d /docker ] && echo '存在'
-f 是否为文件 -r 是否有r权限: [ -r .txt ] && echo '有读权限'
-w
-x 整数:
-eq 等于 [ -eq ] && echo '等于'
-ne 不等于
-gt 大于
-lt 小于
-ge 大于或等于
-le 小于或等于 字符串:
= 等于 [ 'ggg' = 'ggg' ] && echo '等于'
!= 不等于 小数:通过bc计算器 [ `echo '1.2 > 1.3' | bc` -eq ] && echo '大于' 常用:
[ $? -eq ] 判断上一条命令是否执行成功

6.read命令:

read命令:
-p 给出提示符
-s 隐藏输入内容
-t 给出等待时间,超时退出read
-n 限制读取字符个数,超过临界值会自动执行

7.-e 的作用

-e :激活命令的作用:
echo -e "\n"
`echo -e "\033[4;31m 你好: \033[0m"`

8.处理海量数据;grep,awk,sed,cut

8.1grep:行操作

    -v :内容的取反
-n :行号+内容
-w :精确匹配
-i :忽略大小写
^ :匹配行首
-E :正则匹配 在123.sh文件提取包含user的行内容
grep 'user' .sh 匹配以user开头的行
grep '^user' .sh 匹配包含user1或user2或user3的行
grep -E 'user1|user2|user3' .sh

8.2cut:列操作

    -d :指定分割符(不加默认tab键分割)
-f :指定截取区域
-c :以字符为单位进行分割 以':'为分割符,截取出123.sh文件第一列和第3列
cut -d ':' -f , .sh 以':'为分割符,截取出123.sh文件第一列到第3列
cut -d ':' -f - .sh 以':'为分割符,截取出123.sh文件第二列到最后一列
cut -d ':' -f - .sh 截取123.sh文件第二个字符到第五个字符
cut -c - .sh 案例:
领教教你截取所有可登陆系统的普通用户(除root)
grep '/bin/bash' /etc/passwd | cut -d ':' -f | grep -v 'root'
cat /etc/passwd | grep 'bin/bash' | cut -d ':' -f1 | grep -v 'root'   上述命令也可以用cat命令:
    cat 123.sh | cut -d ':' -f 1,3

8.3强大的awk:列操作

    awk [选项] '条件{执行动作} 条件2{执行动作} ..' 文件名
选项和条件可以不写 printf:格式化输出,不会自动换行
\t:tab
\n:换行
%ns:字符串 n表示字符串个数
%ni:整型 n表示数字个数
%.nf:浮点型 n表示小数点后个数
printf '%s\t%s\t%s\t\%s\n' print:会自动换行 例子:查看磁盘的使用率
df -h | grep /dev/vdal | awk '{printf "/dev/vdal的使用率:"} {print $5}' 浮点计算(最后的$0表示一整行)
echo "scale=2; 0.13 + 0.1" | bc | awk '{printf "%.2f\n",$0}' $:一整行
$:第一列
$:第二列
... 条件:
\F:指定分割符:
cat /etc/passwd | cut -d ':' -f
cat /etc/passwd | awk -F":" '{print $1}' BEGIN:读取所有文件内容前执行,一般用于修改内置变量的值
FS:BEGIN时定义分割符
cat /etc/passwd | awk 'BEGIN {FS=":"} {print $1}' END:结束时执行
cat /etc/passwd | awk -F":" '{print $1} END{printf "以上为执行结果\n"}' NR:行号
df -h | awk '(NR>=2 && NR<=5) {print $5}'
awk '(NR>=2 && NR<=5) {print $5}' /etc/passwd 打印行号:
nl /etc/passwd | awk '(NR>=2 && NR<=5) {print $1}'

8.4sed:先取,新增,搜索,替换,删除

    sed [选项] [动作] 文件名
选项和动作可以不写 -n:把匹配到的行打印
p:以行为单位进行查询,通常与-n一起使用
打印第二行:
df -h | sed -n '2p'
打印包含2行:
df -h | sed -n '/2/p' d:删除(不会对源文件修改的)
删除第二行:
df -h | sed '2d'
把文本放到一个新的文件
df -h > newdf.txt
sed '2d' newdf.txt a:在行的下面插入新的内容(不修改源文件)
sed '2a 123456789' newdf.txt i:在行的上面插入新的内容(不修改源文件)
sed '2i 123456789' newdf.txt c:替换
把第二行替换
sed '2c 123456789' newdf.txt s/str1/str2/g str2替换str1
sed 's/%0/100%/g' newdf.txt -i:对源文件进行修改(高危操作,必须先备份)
sed -i 's/%0/100%/g' newdf.txt -e:表示可以执行多条动作
比如搜索内容时替换和打印两个动作
cat newdf.txt | sed -n -e 's/0%/100%/g' -e '/100%/' 搜索内容的方法:
sed -n '/100%/p' newdf.txt
cat -n newdf.txt | sed -n '/100%/p' 之前学过的grep搜索:
cat -n newdf.txt | grep %

复习:

判断运算的问题 

    -e    目标是否存在:    [ -e .txt ] || touch .txt
-d 是否为路径 : [ -d /docker ] && echo '存在'
-f 是否为文件 -r 是否有r权限: [ -r .txt ] && echo '有读权限'
-w
-x 整数:
-eq 等于 [ -eq ] && echo '等于'
-ne 不等于
-gt 大于
-lt 小于
-ge 大于或等于
-le 小于或等于 字符串:
= 等于 [ 'ggg' = 'ggg' ] && echo '等于'
!= 不等于 小数:通过bc计算器 [ `echo '1.2 > 1.3' | bc` -eq ] && echo '大于' 常用:
[ $? -eq ] 判断上一条命令是否执行成功

运算符号问题:

.输出表达式的三种方法:
expr +
echo $[ + ]
echo $(( + )) .使用bc计算器(字符串交给bc处理)
echo "1.2+1.3" | bc 结果:2.5
echo "scale=2;1.2+1.3" | bc 结果:2.5
echo "scale=2;(1.2+1.3)/1" | bc 结果:2.50

9.循环:

9.1循环的if

.  if [条件];
then
动作
fi . if [条件];
then
动作
else
动作
fi 例子:判断输入文件是否存在
#!/bin/bash
if [ -e $ ];
then
echo "$1存在"
else
echo "$1不存在"
fi . if [条件];
then
动作
elif [];
动作
fi 例子:判断输入的数字是否大于10
#!/bin/bash
echo '请输入一个数字:'
read number
if [ $number -eq ];
then
echo "$number 等于10"
elif [ $number -gt ];
then
echo "$number 大于10"
else
echo "$number 小于10"
fi

9.2循环的for

    .格式:
for 变量名 in 值1 值2 ....
do
动作
done 例子:打印1-
#!/bin/bash
for i in
do
echo $i
sleep
done .格式
for 变量名 in `命令`
do
动作
done 例子:打印1-
#!/bin/bash
for i in `seq `
do
echo $i
done 例子:ping两下baidu是否通,通则断开
#!/bin/bash
for i in $(cat a.txt)
do
ping -c $i
echo -e "\n"
done a.txt文件内容
www.taobao.com
www.qq.com .格式:
for ((条件))
do
动作
done 例子:打印1-
#!/bin/bash
for ((i=;i<;i++))
do
echo $i
sleep
done

9.3循环的case:(匹配执行)

    .格式:(;;表示执行完后结束)
case 变量 in
值1 )
动作
;; 值2 )
动作
;; 值3 )
动作
;; ...
esac 例子:查询城市天气
echo '请输入城市'
read city
case $city in
'广州')
echo "$city温度23,热"
;;
'四川')
echo "$city温度24,热"
;;
'大良')
echo "$city温度25,热"
;;
*)
echo "输入有误"
;;
esac

9.4循环的while

    .格式:
while [ 条件判断式 ]
do
动作
done 例子:计算0加到n的和
#!/bin/bash
i=
sum=
while [ $i -le $ ]
do
sum=$(($sum+$i))
i=$(($i+))
done
echo 'the sum is:'$sum

linux和shell的学习记录的更多相关文章

  1. Linux 下shell 编程学习脚手架

    linux body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-t ...

  2. Linux 下Shell的学习

    1.Shell学习 1.什么是Shell    shell是一个命令解析器,在操作系统的最外层,负责和用户对话,将用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果.2.什么是shell脚本 ...

  3. Linux 下Shell的学习3-优秀demo

    优秀的DEMO cat /etc/init.d/functions   -->里面有颜色定义cat /etc/rc.d/rc.sysinit cat /etc/init.d/nfscat /et ...

  4. linux下计划任务学习记录

    0x01 计划任务简介 linux 中计划任务主要分为”循环执行”和”只执行一次”两种,分别对应的时 crond 服务 和 atd 服务: 0x02 只执行一次的计划任务 0x02.1 atd 服务说 ...

  5. linux下shell脚本学习

    在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具.Shell不仅仅是命令的收集,而且是一门非常棒的编程语言.您可以通过使用shell使大量的任务自动化,shel ...

  6. 和菜鸟一起学linux之DBUS基础学习记录

    D-Bus三层架构 D-Bus是一个为应用程序间通信的消息总线系统, 用于进程之间的通信.它是个3层架构的IPC 系统,包括: 1.函数库libdbus ,用于两个应用程序互相联系和交互消息. 2.一 ...

  7. Linux 下Shell的学习2

    0. 查看帮助(比如内置功能)    man bash    -->变量处理大全 1.-计算变量长度的不同方法及不同方法的耗时对比    尽可能的用内置的命令处理,速度快        time ...

  8. 【转】和菜鸟一起学linux之DBUS基础学习记录

    [原文] D-Bus三层架构 D-Bus是一个为应用程序间通信的消息总线系统, 用于进程之间的通信.它是个3层架构的IPC 系统,包括: 1.函数库libdbus ,用于两个应用程序互相联系和交互消息 ...

  9. linux基础了解的学习记录

    一.文件结构图 linux的储存结构为文件树 二.绝对路径.相对路径.权限 1.绝对路径: /usr/local/include       在路径的最前面是 / 开头的 使用环境:当在当前路径下想到 ...

随机推荐

  1. 安装和启动tftp-server服务器及可能出现Redirecting to /bin/systemctl restart xinetd.service问题的解决方式

    安装和启动tftp-server服务器及可能出现Redirecting to /bin/systemctl restart xinetd.service问题的解决方式 1)首先,检查服务器已安装的tf ...

  2. Python学习笔记六

    Python课堂笔记六 常用模块已经可以在单位实际项目中使用,可以实现运维自动化.无需手工备份文件,数据库,拷贝,压缩. 常用模块 time模块 time.time time.localtime ti ...

  3. Make Eudict for reviewing example sentences

    Recently, I've started an activity of recording typical and nice English sentences from dictionaries ...

  4. 一起学Python——数据类型详解

    和学习其他编程语言一样,首先要了解一门语言的数据类型. Python的数据类型有整型.浮点型.字符串.布尔型.日期时间类型.list列表.set集合.tuple元组.dict词典等. 1.整型 就是数 ...

  5. Spring Conditional注解使用小结

    今天我们来总结下Conditional注解的使用. Conditional注解 增加配置类Config package condition; import org.springframework.co ...

  6. for in和for of的区别(转)

    原文链接:https://www.jianshu.com/p/c43f418d6bf0 1 遍历数组通常用for循环 ES5的话也可以使用forEach,ES5具有遍历数组功能的还有map.filte ...

  7. UOJ#42. 【清华集训2014】Sum 类欧几里德算法

    原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ42.html 题解 首先我们把式子改写一下: $$(-1)^{\lfloor a\rfloor} \\=1 ...

  8. python一个命令开启http服务器

    1.例如想共享文件在   E:python文件 打开cmd cd E: cd python文件 #进入要分享的文件夹 2.执行py脚本文件 python -m http.server 3.访问 本机i ...

  9. 【AtCoder】【模型转化】【二分答案】Median Pyramid Hard(AGC006)

    题意: 给你一个排列,有2*n-1个元素,现在进行以下的操作: 每一次将a[i]替换成为a[i-1],a[i],a[i+1]三个数的中位数,并且所有的操作是同时进行的,也就是说这一次用于计算的a[], ...

  10. CodeForces - 1013B And 与运算暴力

    题目链接: https://vjudge.net/problem/1735275/origin 基本思路: 本题思路比较简单,首先,我们知道 a & x = b, b & x = b; ...