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复习之删除数据库

本次记录删除数据库的两种方法,第一种为直接删除;第二种为先查询再删除。 删除数据库,语句如下: use master--指向当前操作的数据库 go --第一种...

3096
来自专栏散尽浮华

shell+curl监控网站页面(域名访问状态),并利用sedemail发送邮件

应领导要求,对公司几个主要站点的域名访问情况进行监控。下面分享一个监控脚本,并利用sendemail进行邮件发送。 监控脚本如下: 下面是写了一个多线程的网站状...

1947
来自专栏技术博文

MySQL常见错误码及说明

1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败<=================可以忽略 1008:数据库不存在,删除...

3758
来自专栏吴柯的运维笔记

使用XtraBackup工具实现数据库备份

一:安装XtraBackup软件包 1)安装依赖包perl-DBD-MySQL perl-Digest-MD5 libev # yum -y install ...

3395
来自专栏闵开慧

Ubuntu 下mysql常用操作

1:打开mysql数据库 mysql -h主机地址 -u用户名 -p用户密码 mysql -h110.110.110.110 -uroot -pabcd123 ...

3387
来自专栏电光石火

计算机运行命令全集

winver---------检查Windows版本 wmimgmt.msc----打开windows管理体系结构 wupdmgr--------wind...

1756
来自专栏Greenplum

Greenplum权限管理

每个数据库的逻辑结构对象都有一个所有者,所有者默认拥有所有的权限,不需要重新赋予。

1780
来自专栏张善友的专栏

SQL Server 2008 FILESTREAM特性管理文件

在SQL Server 2008中,新的FILESTREAM(文件流)特性和varbinary列配合,你可以在服务器的文件系统上存储真实的数据,但可以在数据库上...

1816
来自专栏深度学习之tensorflow实战篇

mysql5.5与mysq 5.6中禁用innodb引擎的方法

今天发现有一个备份的mysql数据文件夹异常变大,一查发现是多了三个文件:ibdata1 ib_logfile0 ib_logfile1,前者18m,后两个各5...

3035
来自专栏公有云大数据平台弹性MapReduce

EMR上Hive ACL配置

到目前为止,hive就已经支持acl功能了。现在来看看如果使用acl功能(常用命令)。

1312

扫码关注云+社区