awk
awk语法
参数 | 说明 |
---|---|
-F | 以指定字符作为分割字段 |
awk用法
打印/etc/passwd内容
awk '{print}' /etc/passwd
root❌0:0:root:/root:/bin/bash
daemon❌1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin❌2:2:bin:/bin:/usr/sbin/nologin
sys❌3:3:sys:/dev:/usr/sbin/nologin
sync❌4:65534:sync:/bin:/bin/sync
games❌5:60:games:/usr/games:/usr/sbin/nologin
man❌6:12👨/var/cache/man:/usr/sbin/nologin
lp❌7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail❌8:8:mail:/var/mail:/usr/sbin/nologin
news❌9:9:news:/var/spool/news:/usr/sbin/nologin
uucp❌10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy❌13:13:proxy:/bin:/usr/sbin/nologin
www-data❌33:33:www-data:/var/www:/usr/sbin/nologin
backup❌34:34:backup:/var/backups:/usr/sbin/nologin
以冒号为分隔符取1、3、6位内容
awk -F ":" '{print $1 $3 $6}' /etc/passwd
bin2/bin
sys3/dev
sync4/bin
games5/usr/games
man6/var/cache/man
lp7/var/spool/lpd
mail8/var/mail
news9/var/spool/news
uucp10/var/spool/uucp
proxy13/bin
www-data33/var/www
backup34/var/backups
取出内容以Tab建作为分隔符
awk -F ":" '{print $1 "\t" $3 "\t" $6}' /etc/passwd
root 0 /root
daemon 1 /usr/sbin
bin 2 /bin
sys 3 /dev
sync 4 /bin
games 5 /usr/games
man 6 /var/cache/man
lp 7 /var/spool/lpd
mail 8 /var/mail
news 9 /var/spool/news
uucp 10 /var/spool/uucp
proxy 13 /bin
www-data 33 /var/www
backup 34 /var/backups
内容加以排版
awk -F ":" '{print "ID="$1 "\t 家目录="$6}' /etc/passwd
ID=root 家目录=/root
ID=daemon 家目录=/usr/sbin
ID=bin 家目录=/bin
ID=sys 家目录=/dev
ID=sync 家目录=/bin
ID=games 家目录=/usr/games
ID=man 家目录=/var/cache/man
ID=lp 家目录=/var/spool/lpd
ID=mail 家目录=/var/mail
ID=news 家目录=/var/spool/news
ID=uucp 家目录=/var/spool/uucp
ID=proxy 家目录=/bin
ID=www-data 家目录=/var/www
ID=backup 家目录=/var/backups
crontab
crontab语法
-l 列出定时任务列表
-e 编辑定时任务内容
-u 设定指定用户
crontab用法
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
cat
chattr
date
find
expr
git
Git 配置
添加git信息
git config --global user.name "Scott Chacon"
git config --global user.email "schacon@gmail.com"
# --global 为全局选项
git信息配置文件
~/.gitconfig
Git仓库
克隆一个项目
git clone https://github.com/MZqk/boco
初始化一个仓库
cd ./
git init
Git流程
git add
#添加新创建或修改的文件到本地的缓存区(Index)
git rm
#删除后会自动将已删除文件的信息添加到缓存区
git commit
#命令提交到本地代码库
git status
#查看当前git仓库的状态
git diff --cached
#如果没有--cached参数,git diff 会显示当前你所有已做的但没有加入到索引里的修改
git push origin master
#将本地仓库同步到远端服务器
分支与合并
git branch
#查看当前的分支列表
git branch experimental
#创建一个新的叫 experimental的分支
git checkout experimental
#切换到experimental分支
git merge -m 'merge experimental branch' experimental
#将experimental分支合并到当前分支
git branch -d experimental
#只能删除那些已经被当前分支的合并的分支. 如果你要强制删除某个分支的话就用git branch –D
git reset --hard HEAD^
#回到合并之前的状态
Git日志
git log
#显示所有的提交
git log v2.5.. Makefile fs/
#找出所有从"v2.5“开始在fs目录下的所有Makefile的修改
git log --stat
打印详细的提交记录
git log --pretty=oneline
格式化日志输出,可用medium,full,fuller,email 或raw
git log --graph --pretty=oneline
可视化提交图
git log --pretty=format:'%h : %s' --topo-order --graph
提交按拓扑顺序来显示
grep
sed
sed语法
参数 | 说明 |
---|---|
-n | 显示处理后的过程,自动换行 |
sed用法
文件内容
line 1 This is a book
line 2 That is a pen
line 3 Happy Holiday
line 4 Niscenter is a good place
line 5 End
删除第2到4行内容
sed '2,4d' file
line 1 This is a book
line 5 End
替换每行第一个is为error
sed 's/is/error/' file
line 1 Therror is a book
line 2 That error a pen
line 3 Happy Holiday
line 4 Nerrorcenter is a good place
line 5 End
替换全部的is为error
sed 's/is/error/g' file
line 1 Therror error a book
line 2 That error a pen
line 3 Happy Holiday
line 4 Nerrorcenter error a good place
line 5 End
在有center内容的一行替换is为xx
sed '/center/s/is/xx/g' file
line 1 This is a book
line 2 That is a pen
line 3 Happy Holiday
line 4 Nxxcenter xx a good place
line 5 End
tar
tar语法
参数 | 说明 |
---|---|
-c --crate | 创建新的归档,即打包 |
-r --append | 向压缩文件追加内容 |
-t --list | 查看压缩全部的内容 |
-u --update | 更新压缩文件 |
-x --extract | 释放归档文件,即解压 |
-v | 显示操作过程 |
-z | 解压tar.gz、tgz文件选项 |
-j | 解压tar.bz2文件 |
-f | 制定压缩文件名 |
-C | 切换至指定目录 |
--exclude file | 压缩过程中排除指定文件 |
tar用法
- tar
tar -xvf filename.tar
tar -cvf filename.tar dirname
- tar.gz
tar -zxvf filename.tar.gz
tar -zxcf filename.tar.gz dirname
- tar.bz2
tar -jxvf filename.tar.bz2
tar -jxcf filename.tar.bz2 dirname
test
test语法
参数 | 说明 |
---|---|
-d | 如果文件为一个目录,则为真 |
-e | 如果文件存在,则为真 |
-G | 如果文件存在且归该组所有,则为真 |
-O | 如果文件存在并且归该用户所有,则为真 |
-s | 如果文件的长度不为零,则为真 |
-r | 如果文件可读,则为真 |
-w | 如果文件可写,则为真 |
-x | 如果文件可执行,则为真 |
-eq | 数值等于,则为真 |
-ne | 数值不等于,则为真 |
-gt | 数值大于,则为真 |
-ge | 数值小于等于,则为真 |
-lt | 数值小于,则为真 |
-le | 数值小于等于,则为真 |
= | 字符相等,则为真 |
!= | 字符不相等,则为真 |
-z | 字符串长度为零,则为真 |
-n | 字符串长度不为零,则为真 |
Shell还提供了与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为:"!"最高,"-a"次之,"-o"最低。
test用法
文件测试
cd /bin
if test -e ./bash
then
echo '文件已存在!'
else
echo '文件不存在!'
fi
输出结果
文件已存在!
数值测试
num1=100
num2=100
if test $[num1] -eq $[num2]
then
echo '两个数相等!'
else
echo '两个数不相等!'
fi
输出结果
两个数相等!
字符串测试
num1="ru1noob"
num2="runoob"
if test $num1 = $num2
then
echo '两个字符串相等!'
else
echo '两个字符串不相等!'
fi
输出结果
两个字符串不相等!