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 ...
随机推荐
- 总结Objective-c常用算法
今天是星期天,想睡到10点起床,结果认为自己太奢侈了,不能这么做,于是把闹钟设置成了6:30:结果终于9:36醒了,起床,无缘无故迟了,好吧,就算太累了吧,周天就原谅自己一回.终于到了中午 ...
- 再谈SQL Server中日志的的作用
简介 之前我已经写了一个关于SQL Server日志的简单系列文章.本篇文章会进一步挖掘日志背后的一些概念,原理以及作用.如果您没有看过我之前的文章,请参阅: 浅谈SQL Server ...
- 使用 SoapUI 测试ASP.NET Web API
我们为不同的目的开发了很多web服务,经过授权的用户就可以访问和使用这些web服务.soapUI 是一个强大的测试web服务的工具,他不仅可以测试SOAP服务,他也支持测试RESTful服务.在这里我 ...
- Android属性动画源代码解析(超详细)
本文假定你已经对属性动画有了一定的了解,至少使用过属性动画.下面我们就从属性动画最简单的使用开始. ObjectAnimator .ofInt(target,propName,values[]) .s ...
- android服务里生成通知点击后返回正在运行的程序和当前的Activity
想在服务里生成一个通知,并且点击通知打开当前应用程序下单当前活动,折腾了半天,网上的那些都不靠谱,试了半天,最后把ActivityManager和反射都用进来了,终于解决了这个问题.这样在服务中想恢复 ...
- CSharpGL(0)一个易学易用的C#版OpenGL
+BIT祝威+悄悄在此留下版了个权的信说: CSharpGL(0)一个易学易用的C#版OpenGL CSharpGL是我受到SharpGL的启发,在整理了SharpGL,GLM,SharpFont等开 ...
- 我所理解的RESTful Web API [Web标准篇]
REST不是一个标准,而是一种软件应用架构风格.基于SOAP的Web服务采用RPC架构,如果说RPC是一种面向操作的架构风格,而REST则是一种面向资源的架构风格.REST是目前业界更为推崇的构建新一 ...
- 文件上传之Apache commons fileupload使用
后台servlet代码: File file1 = null,file2=null; String description1 = null,description2 = ...
- 《Entity Framework 6 Recipes》中文翻译系列 (32) ------ 第六章 继承与建模高级应用之TPH与TPT (1)
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 6-6 映射派生类中的NULL条件 问题 你的表中,有一列允许为null.你想使用 ...
- Java动态编译
程序产生过程 下图展示了从源代码到可运行程序的过程,正常情况下先编译(明文源码到字节码),后执行(JVM加载字节码,获得类模板,实例化,方法使用).本文来探索下当程序已经开始执行,但在.class甚至 ...