learn shell

the basic shell skills.

  • Bourne shell
    • sh
    • ksh
    • Bash
    • psh
    • zsh
  • C shell
    • csh
    • tcsh

[root@bogon temp]# cat /etc/shells

/bin/sh

/bin/bash

/sbin/nologin

/usr/bin/sh

/usr/bin/bash

/usr/sbin/nologin

/bin/tcsh

/bin/csh

1.echo

[root@bogon temp]# echo "hello world!"

-bash: !": event not found

[root@bogon temp]# echo 'hello world!'

hello world!

2.sh

sh script must declare #!/bin/bash at the begining

you'd better show note 

[root@bogon sh]# cat -A hello.sh

#!/bin/bash$

#Ryan$

$

echo "Hello World"$

cat -A will print all character include \n. You can see, my script hava a $, this is the \n in linux, if in windows, it will be ^M$, you have to run dos2unix to convert it.

3.Basis

3.1.history

show the history command you had typed

history

!n --execute the num n

!!  --execute the laste , acturelly, we use ↑

3.2.alias

[root@bogon sh]# alias

alias cp='cp -i'

alias egrep='egrep --color=auto'

alias fgrep='fgrep --color=auto'

alias grep='grep --color=auto'

alias l.='ls -d .* --color=auto'

alias ll='ls -l --color=auto'

alias ls='ls --color=auto'

alias mv='mv -i'

alias rm='rm -i'

alias vi='vim'

alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

3.3 shortcuts

ctrl+A     move to line start

ctrl+E     move to line end

ctrl+C     stop

ctrl+L     clean

ctrl+U   delete the command before the cursor

ctrl+K    delete the command after the cursor

ctrl+Y     paste the command that you ctrl+U/K

ctrl+R     search from history

ctrl+D     exit

ctrl+Z     suspend and background

4.command

ls -a /etc/ | more

grep 

-i ingnore case

-n show linenum

-v negate

var

  • =bothends can't be space
  • $var_name, ${varname}
  • `` ==$()

envrionment

parent-shell->sub-shell

export var_name=var_value

env

unset var_name

source profile, . ./profile

  • /etc/profile
  • /etc/profile.d/*.sh
  • ~/.bash_profile
  • ~/.bashrc
  • /etc/bashrc

?

one

*

any

[]

the char inside[]

[-]

the char in the range of [-]

[^]

the  opposite char

''

anything is char

""

double quotation, specific char like "$"、"`"、"\"

``

==$()

$()

command to be var

#

note

\

transfferred meaning

var position

$n

$0-command itselt; $1-$9 the attr after command; beyond 10 ${10}

$*

all attrs as a attr

$@

all attrs as attrs

$#

the sum of attrs

$?

the status of the last command : 0? correct:error

$$

current PID

$!

last PID in backgroud

read -t 30 -p "please input somethind :"  sm

echo $sm

caculate num

  • declare -i cc=$aa+$bb
  • dd=$(expr $aa + $bb)
  • ff=$(($aa+$bb))

regular

*

behind char any times

.

one char

^

begin

$

end

[]

any inside char

[^]

can be inside char

\

transfer

\{n\}

n times behind. [0-9]\{4\}  ~ 1234; [1][3-8][0-9]\{9\} ~ tel

\{n,\}

at least n times

\{n,m\}

at least n times and at most m times

.*

any char any times

\.$

end with .

output

command >file         cover

command >>file       append

err command 2>file

err command2>>file

command>file 2>&1

command  &>> file

char cut

cut

-d seperator

-f the index

[root@00:09:13 /temp/project/sh]$ cut -d ":" -f 1,3 /etc/passwd

root:0

bin:1

[root@00:13:16 /temp/project/sh]$ cat /etc/passwd | grep /bin/bash | grep -v root | cut -d ":" -f 1,3

amandabackup:33

ryan:1000

yue:1001

yangmi:1002

bimm:1003

cangls:1004

st:1005

printf

%ns:      n char

%ni:       n num

%m.nf     12.34

awk

 awk [POSIX or GNU style options] -f progfile [--] file ...

[root@00:24:15 /temp/project/sh]$ cat stu.txt

name    age aa   

mrf    12    bb

ryan    18    vv

[root@00:24:31 /temp/project/sh]$ awk '{printf $2 "\t" $3 "\n"} ' stu.txt

age    aa

12    bb

18    vv

[root@00:24:33 /temp/project/sh]$ df -h | awk '{print $1 "\t" $5 "\t" $6}'

[root@00:29:04 /temp/project/sh]$ df -h

文件系统                 容量  已用  可用 已用% 挂载点

/dev/mapper/centos-root   50G  5.3G   45G   11% /

devtmpfs                 1.6G     0  1.6G    0% /dev

tmpfs                    1.6G     0  1.6G    0% /dev/shm

tmpfs                    1.6G  9.0M  1.6G    1% /run

tmpfs                    1.6G     0  1.6G    0% /sys/fs/cgroup

/dev/mapper/centos-home  278G   37M  278G    1% /home

/dev/sda6                497M  162M  335M   33% /boot

tmpfs                    327M     0  327M    0% /run/user/0

[root@00:29:12 /temp/project/sh]$ df -h | grep root | awk '{print $5}' | cut -d "%" -f111

sed

change the file line2

sed -i '2c theReplaceMsg'  file

p     printf

d     delte

a     append

 i     insert

c     replace   line

s     sed 'ns/old/new/g' file

if

[root@bogon sh]# [ "$aa"=="$bb" ] && echo yes || echo no

yes

-n var_name      if var_name!=null return true

-z  var_name      if var_name==null return true

! var_name     opposite  

if [    ]  ;then

  ....

elif [    ]

     then

     ...

else

     ...

fi

or

if [   ]

     then

.....

fi

case

case $var_name in

     val1)

          ...

          ;;

     val2)

          ...

          ;;

     *)

          ...

          ;;

 esac

for

for var_name in val1 val2 val3 ...

     do

          ..

     done

while

while [  $i -le 100    ]

     do

          ...

     done

5.Other

ps

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root         1  0.0  0.1  41632  4060 ?        Ss   5月13   0:12 /usr/lib/systemd/systemd --switched-root --system --deserialize 21

root         2  0.0  0.0      0     0 ?        S    5月13   0:00 [kthreadd]

root         3  0.0  0.0      0     0 ?        S    5月13   0:05 [ksoftirqd/0]

root         7  0.0  0.0      0     0 ?        S    5月13   0:00 [migration/0]

root         8  0.0  0.0      0     0 ?        S    5月13   0:00 [rcu_bh]

root         9  0.0  0.0      0     0 ?        S    5月13   0:00 [rcuob/0]

root        10  0.0  0.0      0     0 ?        S    5月13   0:00 [rcuob/1]

root        11  0.0  0.0      0     0 ?        S    5月13   0:00 [rcuob/2]

root        12  0.0  0.0      0     0 ?        S    5月13   0:00 [rcuob/3]

root        13  0.0  0.0      0     0 ?        S    5月13   4:18 [rcu_sched]

top

kill

kill -1  restart

kill -9  pid  (force)

kill 15  pid  (default)

crond

crontab -e

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序猿

SQL 注入语句特征

语句特征 1.判断有无注入点 ; and 1=1 and 1=2 2.猜表一般的表的名称无非是admin adminuser user pass passwor...

36311
来自专栏乐沙弥的世界

Oracle 外部表

外部表只能在Oracle 9i 之后来使用。简单地说,外部表,是指不存在于数据库中的表。通过向Oracle提供描述外部表的元数据,我们

562
来自专栏芋道源码1024

分布式消息队列 RocketMQ 源码分析 —— Message 拉取与消费(上)

摘要: 原创出处 http://www.iocoder.cn/RocketMQ/message-pull-and-consume-first/ 「芋道源码」欢迎...

2666
来自专栏乐沙弥的世界

参数CONTROL_FILE_RECORD_KEEP_TIME和MAXLOGHISOTRY

--**************************************************

703
来自专栏乐沙弥的世界

sqlplus spool 到动态日志文件名

      通过sqlplus的spool功能我们将数据库日常运维的结果输出到日志文件,而有时候则需要定时输出,为避免日志文件名的重复,我们可以将输出的日志文件...

524
来自专栏Ryan Miao

mysql创建定时执行存储过程任务

sql语法很多,是一门完整语言。这里仅仅实现一个功能,不做深入研究。 目标:定时更新表或者清空表。 案例:曾经做过定时清空位置信息表的任务。(然而,当时并未考虑...

3487
来自专栏Java开发者杂谈

Netty(1):第一个netty程序

为什么选择Netty   netty是业界最流行的NIO框架之一,它的健壮型,功能,性能,可定制性和可扩展性都是首屈一指的,Hadoop的RPC框架Avro就使...

3547
来自专栏代码世界

MYSQL之视图、触发器、存储过程、函数、事物、数据库锁和数据库备份

一、视图 -- view 视图:是一个虚报表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。 视图有如下特点:   1.视图的列可以来自...

3478
来自专栏Java Web

MyBatis(2)——MyBatis 深入学习

编写日志输出环境配置文件 在开发过程中,最重要的就是在控制台查看程序输出的日志信息,在这里我们选择使用 log4j 工具来输出: 准备工作: 将【MyBati...

3033
来自专栏ChaMd5安全团队

SQLI-LABS 更新帖(二)

Less-2 /sqli-labs/Less-2/?id=1 代码如下: $sql="SELECT * FROM users WHERE id=$id LIMI...

43210

扫描关注云+社区