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
 
 
 

learn shell的更多相关文章

  1. linux shell中的单引号与双引号的区别(看完就不会有引号的疑问了)(转)

    tips: ============================= IFS - LINUX字段分隔符,内部字段分隔符 IFS(Internal Field Seperator)在Linux的she ...

  2. Shell脚本编程与文件系统修复

    导读 Linux基金会发起了LFCS认证(Linux 基金会认证系统管理员)Linux Foundation Certified Sysadmin,这是一个全新的认证体系,旨在让世界各地的人能够参与到 ...

  3. shell单引号双引号详解

    linux shell中的单引号与双引号的区别(看完就不会有引号的疑问了) " "(双引号)与 ' '(单引号)的区别    你在shell prompt(shell 提示)后面敲 ...

  4. Shell学习(二)Shell变量

    一.Shell变量 变量的定义 例子: my_job="Learn Shell" PS:变量名和等号之间不能有空格!!! 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头 ...

  5. mongoDB & Nodejs 访问mongoDB (一)

    最近的毕设需要用到mongoDB数据库,又把它拿出来再学一学,下盘并不是很稳,所以做一些笔记,不然又忘啦. 安装 mongoDB & mongoVUE mongoDB: https://www ...

  6. Linux--Introduction and Basic commands(Part one)

    Welcome to Linux world! Introduction and Basic commands--Part one J.C 2018.3.11 Chapter 1 What Is Li ...

  7. Linux awk命令使用方法

    awk是linux上非常好用的文本处理工具,常用于指定列的处理,包括获取指定列的内容.根据指定列匹配关系输出等文本处理.本文主要描述awk命令的基本语法.正则表达式与操作符的使用.常用内置变量的含义和 ...

  8. 2019 DevOps 技术指南

    原文链接:https://hackernoon.com/the-2018-devops-roadmap-31588d8670cb 原文作者:javinpaul 翻译君:CODING 戴维奥普斯 写在前 ...

  9. Learn the shell

    learn the shell what is the shell? when we speak of the command line,we are really to the shell.Actu ...

随机推荐

  1. js将数字转成大写中文

    <script type="text/javascript"> //主函数 function DX(n) { if (!/^(0|[1-9]\d*)(\.\d+)?$/ ...

  2. 个人查阅资料-Sql语句

    SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRAN ...

  3. 安装mysql

    查看已安装的mysql,并删除它们 rpm -qa|grep -i mysql rpm -e --nodeps filename 如果重装mysql,查找安装mysql产生的文件,并删除它们 find ...

  4. [译] 给PHP开发者的PHP源码-第一部分-源码结构

    文章来自:http://www.hoohack.me/2016/02/04/phps-source-code-for-php-developers-ch 原文:http://blog.ircmaxel ...

  5. 【腾讯Bugly干货分享】Redex初探与Interdex:Andorid冷启动优化

    本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/583b9e3ee8992c2c2df6e6ac 导语 早在去年10月份,face ...

  6. MySQL 忘记root密码解决办法

    标签:root密码不为空 概述 很多时候mysql安装完root用户的默认密码不为空,这时候就需要通过其它办法登入到mysql重置密码. 步骤 方法1:查看/root/.mysql_secret文件 ...

  7. JSON数据的定义

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. struts1四:常用标签

    struts1支持的5种标签: HTML 标签: 用来创建能够和Struts 框架和其他相应的HTML 标签交互的HTML 输入表单 Bean 标签: 在访问JavaBeans 及其属性,以及定义一个 ...

  9. fir.im Weekly - 让 iOS 应用更加安全

    攻易防难,关于 iOS 应用安全看起来有些神秘.iOS Security , 源于@吴发伟_则平博客翻译的关于iOS安全的一系列文章,现在站点已经系统收集了大量关于 iOS 逆向.安全.反编译.静动态 ...

  10. 单页面实现之hash

    至学了angularJs后,发现这个单页面应用不知道在没有angularJs的情况下怎么实现. 所以就此对这个思考与资料并行,终于知道这个的实现基本原理. 首先angularJs的实现是hash值的变 ...