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 ...
随机推荐
- 安卓工具箱:color of Style
<?xml version="1.0" encoding="utf-8"?> <resources> <color name=&q ...
- ASP.NET Core中显示自定义错误页面-增强版
之前的博文 ASP.NET Core中显示自定义错误页面 中的方法是在项目中硬编码实现的,当有多个项目时,就会造成不同项目之间的重复代码,不可取. 在这篇博文中改用middleware实现,并且放在独 ...
- SpringMVC拦截器详解[附带源码分析]
目录 前言 重要接口及类介绍 源码分析 拦截器的配置 编写自定义的拦截器 总结 总结 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:h ...
- Azure PowerShell (3) 上传证书
<Windows Azure Platform 系列文章目录> 本文介绍的是国外的Azure Global Update 2015-09-01 发现一个新的命令,在Azure PowerS ...
- Linux学习之Exam系统发布
配置时间:2015年11月27日 配置人:撰写人:微冷的雨 Happy 01.Linux安装图 欢迎页面 桌面 02.Linux命令之文件目录操作 给北大青鸟五道口校区创建三个机房(L4,L5,L ...
- C#4语法
在C# 4.0中可以通过委托某个成员的实现来实现一个接口,例如下面的代码: public class Foo : IList { private List _Collection implements ...
- Module Zero概览
返回<Module Zero学习目录> 介绍 ABP框架的设计是独立于任何数据库模式的且尽可能地使用泛型.因此,它避开了一些要求数据存储的抽象和可选的概念(如审计日志,session管理和 ...
- window系统JDK1.7的快速配置
快速配置java环境变量 右键单击计算机--->属性 点击 "高级系统设置"--->"环境变量",出现环境变量设置窗口 系统变量--->新建 ...
- KnockoutJS 3.X API 第七章 其他技术(5) 使用其他事件处理程序
在大多数情况下,数据绑定属性提供了一种干净和简洁的方式来绑定到视图模型. 然而,事件处理是一个常常会导致详细数据绑定属性的领域,因为匿名函数通常是传递参数的推荐技术. 例如: <a href=& ...
- oc集合
本人之前学习过一年半ios开发 由于行情太过凄惨,故转前端.心在前端,苹果亦难忘!把我平时的笔记作出给大家总结! 回顾之前的知识 便利初始化函数:框架类库中的一些类有一系列的以init开头的方法,这些 ...