the basic shell skills.
[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
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
- linux shell中的单引号与双引号的区别(看完就不会有引号的疑问了)(转)
tips: ============================= IFS - LINUX字段分隔符,内部字段分隔符 IFS(Internal Field Seperator)在Linux的she ...
- Shell脚本编程与文件系统修复
导读 Linux基金会发起了LFCS认证(Linux 基金会认证系统管理员)Linux Foundation Certified Sysadmin,这是一个全新的认证体系,旨在让世界各地的人能够参与到 ...
- shell单引号双引号详解
linux shell中的单引号与双引号的区别(看完就不会有引号的疑问了) " "(双引号)与 ' '(单引号)的区别 你在shell prompt(shell 提示)后面敲 ...
- Shell学习(二)Shell变量
一.Shell变量 变量的定义 例子: my_job="Learn Shell" PS:变量名和等号之间不能有空格!!! 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头 ...
- mongoDB & Nodejs 访问mongoDB (一)
最近的毕设需要用到mongoDB数据库,又把它拿出来再学一学,下盘并不是很稳,所以做一些笔记,不然又忘啦. 安装 mongoDB & mongoVUE mongoDB: https://www ...
- 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 ...
- Linux awk命令使用方法
awk是linux上非常好用的文本处理工具,常用于指定列的处理,包括获取指定列的内容.根据指定列匹配关系输出等文本处理.本文主要描述awk命令的基本语法.正则表达式与操作符的使用.常用内置变量的含义和 ...
- 2019 DevOps 技术指南
原文链接:https://hackernoon.com/the-2018-devops-roadmap-31588d8670cb 原文作者:javinpaul 翻译君:CODING 戴维奥普斯 写在前 ...
- Learn the shell
learn the shell what is the shell? when we speak of the command line,we are really to the shell.Actu ...
随机推荐
- .NET短距离领域通信-32feet.NET
32feet.NET[http://32feet.codeplex.com/]是shared-source的项目,支持CF.net 2.0以及桌面版本.NET framework,提供短距离领域(pe ...
- 剑指Offer面试题:32.数字在排序数组中出现的次数
一.题目:数字在排序数组中出现的次数 题目:统计一个数字在排序数组中出现的次数.例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4. 二.解题思路 2 ...
- java中文乱码解决之道(八)-----解决URL中文乱码问题
我们主要通过两种形式提交向服务器发送请求:URL.表单.而表单形式一般都不会出现乱码问题,乱码问题主要是在URL上面.通过前面几篇博客的介绍我们知道URL向服务器发送请求编码过程实在是实在太混乱了.不 ...
- 从阿里巴巴IPO联想到创始人和资方关系
[小九的学堂,致力于以平凡的语言描述不平凡的技术.如要转载,请注明来源:小九的学堂.cnblogs.com/xfuture] 5月7日,阿里巴巴于今日向美国证券交易委员会(SEC)提交了IPO(首次公 ...
- 在C#代码中应用Log4Net(一)简单使用Log4Net
首先让我们先把Log4Net跑起来,示例代码在文章最后面可以下载 1.先把Log4Net引入到工程中,为了演示方便,我们先建立一个winform程序.在程序的根目录下面,建立一个Libs文件夹,以便存 ...
- [Unity3D]自己动手重制坦克舰队ArmadaTank
[Unity3D]自己动手重制坦克舰队ArmadaTank 我玩过一款坦克游戏ArmadaTank(坦克舰队),如下图所示 几个月前我尝试用Unity3D重制这款游戏,已经可以玩起来了.下面是在PC上 ...
- WCF basicHttpBinding之Transport Security Mode, clientCredentialType="None"
原创地址:http://www.cnblogs.com/jfzhu/p/4071342.html 转载请注明出处 前面文章介绍了<WCF basicHttpBinding之Message Sec ...
- Module Zero之角色管理
返回<Module Zero学习目录> 角色实体 角色管理者 多租户 角色实体 角色实体代表了该应用的一个角色.它应该派生自AbpRole类,如下所示: public class Role ...
- innerHTML,outerHTML,innerText,outerText区别以及insertAdjacentHTML()方法
在需要给文档插入大量的新的HTML标记的情况下,通过多次DOM操作先创建节点再指定它们之间的关系会非常麻烦而且效率不高,相对而言插入标记的方法会更加简单,速度也更快. 插入标记中有这四个属性inner ...
- 携程App的网络性能优化实践
首先介绍一下携程App的网络服务架构.由于携程业务众多,开发资源导致无法全部使用Native来实现业务逻辑,因此有相当一部分频道基于Hybrid实现.网络通讯属于基础&业务框架层中基础设施的一 ...