前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >learn shell

learn shell

作者头像
Ryan-Miao
发布2018-03-13 13:23:33
6250
发布2018-03-13 13:23:33
举报
文章被收录于专栏:Ryan MiaoRyan Miao

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档