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 ...
随机推荐
- angularjs内置指令 - form
form类 angular js对form表单进行了那些扩展 ①html原生form表单不允许嵌套,而angular封装之后的form可以进行嵌套 ②angular为form扩展了自动校验,和防止重复 ...
- [学习笔记] Inten
- SQL Server表分区的NULL值问题
SQL Server表分区的NULL值问题 SQL Server表分区只支持range分区这一种类型,但是本人觉得已经够用了 虽然MySQL支持四种分区类型:RANGE分区.LIST分区.HASH分区 ...
- LB 负载均衡的层次结构
作为后端应用的开发者,我们经常开发.调试.测试完我们的应用并发布到生产环境,用户就可以直接访问到我们的应用了.但对于互联网应用,在你的应用和用户之间还隔着一层低调的或厚或薄的负载均衡层软件,它们不显山 ...
- 一步一步学ROP之linux_x64篇
一步一步学ROP之linux_x64篇 一.序 **ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防 ...
- io.js入门(一)—— 初识io.js
io.js可以说是彻底从NodeJS里分离出来的一条分支,其事情始末可以查看这篇报道,此处便也不赘言.既然是分支,io.js便也基本兼容NodeJS的各种API,连执行指令也依旧兼容Node的 nod ...
- 几个毫无节操纯属恶搞的JavaScript插件
fartscroll.js,为放屁而生 你知道么,有了这个js库,你的页面就可以——————————放屁勒! 打开下面的演示地址,然后滚动页面. 在线演示:http://theonion.github ...
- [ASP.NET MVC 小牛之路]08 - Area 使用
ASP.NET MVC允许使用 Area(区域)来组织Web应用程序,每个Area代表应用程序的不同功能模块.这对于大的工程非常有用,Area 使每个功能模块都有各自的文件夹,文件夹中有自己的Cont ...
- 过段时间逐步使用HTML5新增的web worker等内容
想来快2017年了,2013年前的手机应该很少有人用了,以后逐渐使用HTML5新增的高级API吧. 先把web worker的内容再熟悉一下,因为微软虚拟学院的'面向有经验开发人员的 JavaScri ...
- ASP.NET列表信息以Excel形式导出
1.从数据查出数据扔进table中: private DataTable getTable() { var dbHelper = applyBLL.CreateDataBase("VISAd ...