linux shell基础知识
来源:互联网 发布:恩典壁纸软件 编辑:程序博客网 时间:2024/05/22 01:35
单引号、双引号和反引号
单引号不会去视图改变引用的东西,但是双引号会,反引号主要是命令方面的问题
举个例子:var=123 给变量赋值为123
var2='{$var}'123
echo $var2
var2={$var}123 单引号不会改变引号里面的值
假设换成了双引号
var=123
var2="{$var}"123
echo $var2
var2=123123 双引号会把那个变量里面的东西装进去。
反引号
假设有一个命令ls
var=`ls`
echo $var //这样就相当于执行了ls命令
$() === $``,可以用小括号来代替单引号
var=$(ls)和var=`ls`效果一样,都是将ls执行的值赋给var变量
echo $(var),这里会显示出来
========================================================================================================
查看MAC地址的命令:ifconfig | grep HWaddr
cut命令切割,cut -d' ' -f2 :-d表示用什么来作为分隔符,-f2表示显示第二列。类似awk命令,列编辑,awk '{print $2}',显示第二列,awk默认以空格作为分隔符。
sort命令会按照ASCII码来排列,比如杂乱排序打头的a z k 之类,通过sort就会a k z这样排序。
uniq:是去重复的意思,就是去掉重复的行。
统计用的最多十个命令:
history |awk '{print $2}' |sort|uniq -c|sort -nr|head
sort -nr:表示从大到小来排列。
sort -n:表示从小到大来排列
head表示取出前面十个。
别名:alias
unalias:取消别名
alias ‘ls -l’:这里只能用单引号,如果用双引号的话,会解析引号里面的内容。
任何情况下,输入cd都会回到家目录,想要让alias别名永久生效,可以到家目录下面的/etc/profile这个文件里面加一行laias ...
首先在你的当前目录下面输入cd命令,然后回车,然后在/etc/profile文件里加入alias 'll=ls -l'这样就永久生效了。但是一般不写在这个文件里面,而是写到
.bashrc文件。初始化本地的时候,就会加载.bashrc文件。
改完以后要source一下,source .bashrc。
halt:关机命令
script -a action.log -t 2>time.log
script -a记录当前录制的命令,-t表示记录的时间点
2:表示这个命令从标准错误输出重定向到time.log
按ctrl+d退出录制。
录制出来的存放在action.log 和time.log
scriptreplay time.log action.log通过这个命令来播放刚才录制的操作过程,当看到exit就表示播放结束了。
expr 1+2
a=1
b=2
expr $a + $b
expr $a \* $b
expr $a / $b
a=1
let a=a+1 让a=a+1
echo $[1+2]
c=$[1+2]
echo $c
echo $((1+2)) (())速度是最快的,内置命令
echo $((1*2))
echo 1+2+3|bc //bc是一个计算器,只能接受从管道里流出来的
双括号计算是最常用的:echo $(($a+$b))和echo $[$a+$b]
shell产生随机数:
echo $RANDOM
循环10000次,打印伪随机数,将输出结果重定位到1.txt文件当中
for i in `seq 10000` ; do echo $RANDOM >> 1.txt;done
打印1.txt文件当中长度小于等于3的数,wc -l统计多少行
cat 1.txt | awk '{if(length($0)<=3) print}' | wc -l
随机生成0-9的随机数,模10,取出来肯定是0-9
echo $((RANDOM%10)) echo $[RANDOM%10]
随机生成数字和字母组合的随机数,并且取出随机数前面六位
echo $RANDOM|md5sum|cut -c 1-6
查看字符串的长度:echo ${#a},这样查看字符串a的长度
ctrl+z:暂停脚本运行
ctrl+c:终止命令
fg:暂停的任务恢复到前台来执行
bg:暂停的任务到后来的执行
jobs:查看当前有几个任务暂停了,有几个任务在工作
fg %1:第一个脚本前台执行。
a.sh脚本
#!/bin/sh -
for i in `seq 100`
do
echo "script is running"
sleep 1
done
假设在编辑一个文件,要去查看一些man手册,可以使用ctrl+z来暂停这个进程,就会回到桌面,然后输入fg又会回到编辑模式。
小括号问题:
a=123 变量a的值是123
(echo $a) 子shell中a的值也是123
(a=abc) 子shell中的a的值是abc
双小括号:可以求值,比如 echo $((1+2)),将打印3
花括号:不存在子shell的问题,比如要创建九个文件。可以用花括号:touch test{01..09}。相当于一个序列
使用花括号快速备份:cp smb.conf{,.bak}
中括号:假设查看文件test1 test2 test3,可以使用中括号选择范围:ls test[1-3] -l
shell的内置变量都是大写的。
$RANDOM $PATH $LANG
$?:上一个命令执行成功了,$?为0,否则为非0
ping -c 4 "www.baidu.com"执行4次
$? 为0,表示执行成功了
现在的标准输出是/dev/null这个空洞文件,2>&1,就是表示标准错误输出重定向到/dev/nul里面
ping - c 4 www.baidu.com > /dev/null 2>&1
which ls找到ls命令在哪里
利用cat写入文件命令:
ca t >> pwb.txt << EOF
>.......
>.......
>EOF 读到与上面那个标记符一样的就退出
tr命令:
tr ' ' '\n' tr是将空格转换成换行
tr '2' '0',把2换成0
统计文件中有多少个1111
^1111$,以1111打头的
cat abc.txt|tr ' ' '\n' |grep ^1111$|wc -l
cat abc.txt | grep -o "1111" -o表示输出的意思,只匹配1111
cut -d' '按照空格来切割,-f2打印第二列。
cat temp | cut -d' ' -f2
tac命令和cat命令类似,输出的结果会反过来。
比如cat 输出的结果是:
12 23
12 34
11 21
而tac的结果是:
11 21
12 34
12 23
^$分别是什么开头,什么结尾,中间什么都不加表示空格
grep -v ^$,反向选择,就是过滤掉空行。
cat -n 显示行号。
取出IP地址
ip=$(ifconfig ens33|grep "inet addr"|cut -d':' -f2|cut -d' ' -f1)
使用awk来过滤,awk -F指定冒号或者空格为分隔符,[ :]+后面那个加号表示多个,就是多个空格也是分隔符,在后面就是打印第四列
ip=`ifconfig ens33|grep "inet addr"|awk -F'[ :]+' '{print $4}'`
- Linux操作系统Shell基础知识
- Linux Shell基础知识
- Linux Shell基础知识2
- linux基础知识--shell编程
- Linux shell入门基础知识
- linux基础知识—shell
- linux shell基础知识
- Linux shell基础知识
- Linux shell基础知识
- Linux shell基础知识
- Linux下Shell基础知识简介
- linux变量及shell基础知识
- Linux下Shell基础知识简介
- linux shell 脚本基础知识学习
- Linux Shell Script的基础知识
- Linux Shell 基础知识3 环境变量
- linux SHELL 编程基础知识(2)
- linux shell脚本基础知识之一
- Java代码编写规范
- python中 if __name__ =='__main__'的作用
- 负k进制
- [APIO2009]抢掠计划(tarjan+spfa)
- 【LintCode-632】二叉树的最大节点(Java实现)
- linux shell基础知识
- 猜糖果
- java-day15api的概述: 就是java替我们写好的一些类,他封装了一些功能,我们仅仅只需要知道如何使用即可
- [BZOJ]3679: 数字之积 数位DP
- 51nod 1769 Clarke and math2 线性筛+数学
- C
- 线程
- PEP8 Python 编码规范
- JAVA用线程来反击钓鱼网站。