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 ...
随机推荐
- 完美解决 Linux 下 Sublime Text 中文输入
首先,我参考了好几篇文章,都是蛮不错的,先列出来: sublime-text-imfix:首先推荐这个方法,最简单,但是在我的系统上有些问题.可用这个的强烈推荐用这个 完美解决 Linux 下 Sub ...
- ASP.NET Core 使用 Redis 和 Protobuf 进行 Session 缓存
前言 上篇博文介绍了怎么样在 asp.net core 中使用中间件,以及如何自定义中间件.项目中刚好也用到了Redis,所以本篇就介绍下怎么样在 asp.net core 中使用 Redis 进行资 ...
- RESTful API 设计最佳实践
背景 目前互联网上充斥着大量的关于RESTful API(为了方便,以后API和RESTful API 一个意思)如何设计的文章,然而却没有一个"万能"的设计标准:如何鉴权?API ...
- 基于Deep Learning 的视频识别方法概览
深度学习在最近十来年特别火,几乎是带动AI浪潮的最大贡献者.互联网视频在最近几年也特别火,短视频.视频直播等各种新型UGC模式牢牢抓住了用户的消费心里,成为互联网吸金的又一利器.当这两个火碰在一起,会 ...
- 剑指Offer面试题:26.字符串的排列
一.题目:字符串的排列 题目:输入一个字符串,打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a.b.c所能排列出来的所有字符串abc.acb.bac.bca.cab和cba. 二 ...
- 十五分钟学会用Hessian
了解Hessian Hessian是远程调用的一种技术,和WebService类似,但不同的是较WebService而言,它更轻量级,更简单,更快速.关于Hessian更详细全面的介绍可以查看http ...
- CSharpGL(4)设计和使用Camera
CSharpGL(4)设计和使用Camera +BIT祝威+悄悄在此留下版了个权的信息说: 主要内容 描述在OpenGL中Camera的概念和用处. 设计一个Camera以及操控Camera的Sate ...
- 去年做了什么?OA。
假前一天下午被经理和PM叫上楼,首要一个问题是我去年干了啥,我大致支吾了几句描述了下,一时也说不出个大概.后面就是一片悠长的面谈,什么没达到期望,公司状况不好.......哦,这是KPI评价啊,剩下的 ...
- Android开发学习之路-Android6.0运行时权限
在Android6.0以后开始,对于部分敏感的“危险”权限,需要在应用运行时向用户申请,只有用户允许的情况下这个权限才会被授予给应用.这对于用户来说,无疑是一个提升安全性的做法.那么对于开发者,应该怎 ...
- Spring学习记录(四)---bean之间的关系:继承、依赖
继承 这里说的继承和java的继承是不一样的,不是父类子类.但思想很相似,是父bean和子bean 1.父bean是一个实例时.它本身是一个完整的bean 2.父bean是模板,抽象bean ...