马哥linux shell 笔记2

  1. 云栖社区>
  2. 博客>
  3. 正文

马哥linux shell 笔记2

科技小能手 2017-11-12 14:22:00 浏览832
展开阅读全文

变量替换:用变量的值替换变量名:echo"$AGE"

命令替换:用命令的执行结果替换命令:$(COMMAND)='COMMAND'

echo "Today is 'date+%F'"


touch file-'date+%F-%H-%M-%S'

seq 用来列出一系列数

seq 5   1 2 3 4 5

seq 1 10 1 2 3 4 5 6 7 8 9 10

seq 10 2 100

NUMSEQ=’seq 1 10'

echo $NUSEQ


变量:配置文件

bash:

   全局:

    /etc/profile,/etc/profile.d/*, /etc/bashrc

   个人

    ~/.bash_profile ~/.bashrc ~/.bash_history

bash的运行方式:

    交互式:先读取/etc/profile-->/etc/profile.d/*--


>.bash_profile-->~/.bashrc-->/etc/bashrc

    非交互式:~/.bashrc-->/etc/bashrc-->/etc/profile.d/*

profile 类

      设定环境变量

      运行命令或脚本


bashrc类

       设定本地变量

       设定命令别名


source 文件名 = . 文件名  让bash重新读取配置文件


命令别名:

  alias cls=clear 将clear换为cls

  unalias cls     将cls撤销

  alias cdnet="cd /etc/sysconfig/"

bash脚本解释器:

shell脚本:

每一个脚本第一行必须加#!/bin/bash


练习:

#!/bin/bash

mkdir /tmp/test

touch /tmp/test/file-'date +%F-%H-%M-%S'

cp -r /etc/profile.d /tmp/test2


DESTDIR='/tmp/test'


mkdir $DESTDIR

touch %DESTDIR/file-'date+%F-%H-%M-%S'

cp -r /etc/profile.d/ $DESTDIR


nuset DESTDIR 撤销变量



输入输出重定向.管道


程序的默认输入设备,叫标准输入,stdin,键盘,0

程序的默认输出设备,叫标准输出,stdout,minitor,1

程序的默认错误信息输出设备,标准错误输出,stderr ,minitor,2


输出重定向:

command>FILE 覆盖输出(慎重)



set -C 关掉标准输入输出


set +C 打开标准输入输出

set >|强制覆盖


command >>FILE 追加输出


/dev/null 数据黑洞

date >/dev/null

echo $? 显示为0,则表示执行成功


/dev/zero 泡泡机,吐0

/dev/urandom 随机数生成器

输入重定向

COMMAND <FILE

tr 'a-z' 'A-Z' </etc/passwd


COMMAND <<"EOF"

echo -e "the fist line.\nwww.baidu.com.\nwww.qq.com" >/tmp/test

cat >>/tmp/test1

<the fist line

<www.baidu.com

<www.qq.com

<EOF


错误输出:

COMMAND 2>FILE

COMMAND 2>>FILE


正确或错误统统重定向

COMAND >FILE 2>&1

COMMAND &>FILE


管道:只传递正确信息

COMMAND1 |command2 |COMMAND3

ehco "the first line " |tr 'a-z' 'A-Z'

echo "the first line " |tr 'a-z' 'A-Z' |cut -d" " -f2|tr 'A-Z'


'A-Z'

RESULT=echo "the first line " |tr 'a-z' 'A-Z'

echo $RESULT


file 'ls /var/log' |cut -d: -f2|tr -d' ' |sort


uniq 对于连续的内容,只保留一个


tee

command |tee file |command

ls /etc |tee /tmp/tee.out |gr 'a-z' 'A-Z'



本文转自 穿越防火墙 51CTO博客,原文链接:http://blog.51cto.com/sjitwant/1399186


网友评论

登录后评论
0/500
评论