ls ls -l ls -la ls -li ls -h
mkdir mkdir -P
cat cat -n [显示行号]
touch
vi esc i / :wq dd u
vim
pwd
df -h
cd .. cd /usr cd ./ cd ~
tar -xzvf filename.tar.gz -C /usr/directory
useradd username
groupadd
chmod 777 filename
chmod u-x g+x o-r
chown hadoop filename
uname -a
mv filenme newFilename
cp file newfilename
which java
where java
rm -fr file
rmdir directory
clear
tail -f
less
more
head
echo
export
Tab 代码补全
上方向键 历史命令
ctrl + c
set
alias
unalias 别名 清除别名
unalias -a 清除 所有别名
history -c -w
重定向
grep egrep fgrep
read -p "提示语 " 变量
read -t 时间second
read -s 保密模式
cat ab.txt | while read line
do
echo "every name : $line"
done
expr 计算 注意要有空格
expr match "str" "regex"
expr substr "str" index count
expr index "str" "substr"
expr length "str"
tmux tmux new -s roclinux ctrl +b c 0
shopt expand_alias
--login
xargs excute argument 从标准输入中读取内容,并将此内容传递给它要协助的命令,并作为哪个命令的参数来执行
cat ab.txt |xargs -E "korea" echo
date
time 计算 命令执行时间 time -v ls
sleep 5s 6m 7h 5d date; sleep 4s ;date
sleep 0.003s
file -f filename 查看文件内容
file -i filename 查看全码
file -b filename 隐藏文件名
file -F “=》” filename
file -L filename 查看软链接
ln source.txt hardsource.txt 不允许链接到目录 不能跨文件系统
ln -s source.txt softsource.txt
ln -f 强制
ln -n 把链接目录 当做文件看
find . 当前目录 -name [pattern] -type f d l b c p s [pattern] -regex '.* '
find . -perm 663 按权限搜索
find -exec args {} ;
find . -type f -size +40m
find , -type f -a -size +30k and -o or
find . -regex "./e .avi .[0-9]+$" 正则 以 . 开始 + 1-n * 0-n ? 0-1
w s d
tree 列出 树状文件 目录
du disk usage 展示磁盘用量统计信息 侧重文件和文件夹的磁盘占用方面
du -sh summarize human
du -ch total human
du -ah .
du -sh *|sort -nr
du -h ab.txt
gzip hot.avi 压缩文件 会 删除源文件,若保留源文件 gzip -c hot.avi
gzip -d hot.avi.gz 解压文件
tar -zxvf filename.tar.gz -C /usr/local/
-x 进行拆包
-z 使用gzip 压缩或者解压缩
-v view 直播解压过程
-f file 指定 文件
tar -czvf finame.tar.gz directory 打包 压缩
-c 打包
tar -ztvf file.tar.gz 只是看看 文件 t 列出文件中内容
gzip -3 erro.jpg
对于 bzip2 压缩包
tar -xjvf fina.tar.bz2 解压
tar -cjvf fina.tar.bz2 fina/ 压缩
bzip2 error.jpg 压缩 会删除源文件
zip -r zdata.zip note.txt soft/
unzip -d newzip/ zdata.zip
unzip -v zdata.zip 只是看看
zip zdata.zip -d mynote.txt 删除压缩包中的文件
dd device driver
dd if=/dev/sda of=/root/sda.img 备份
dd if=/root/sda.img of=/dev/sda 恢复
dd if=/dev/sda |gzip >/root/sda.img.gz
dd if=/dev/sda |bzip2 > disk.img.bz2
dd if=/dev/sda2 of=/root/sda.img
dd if=/dev/mem of=/root/mem.img count=1 bs=1440k
dd if=/dev/zero if=/dev/null if=/dev/urandom
nc -l port
ps 查看进程
ifconfig 查看网络
kill 进程号
shutdown 40
echo -e " " 设别 转义字符
echo -n ' ' 去掉 echo 末尾的换行符
echo -e "\033[41;36m hello world \033[0m" \033 \e \E 等价
grep 搜索 提取
grep --color “leo” /etc/password
grep -v "leo" /etc/password
grep -A 1 leo /etc/password after
grep -B 1 leo /etc/password before
grep -C rand
grep -i "leo" ./etc 不区分大小写
grep -l "fires" *.txt 处理多文件 存在
grep -L "fires" *.txt 不存在
grep "bash$" "^leo" /ect/ 处理正则
grep -w "bash" /etc 处理词
grep -c "root" /etc/pad
sed stream editor 流编辑器 是一个面向 行处理的工具,它以 行 为处理单位,针对每一行进行处理,处理后的结果会输出到标准输出(STDOUT),sed 不会修改 被读取的文件
而是将 原内容 或修改后的内容输出到标准输出中。工作原理,每一次处理一行内容,处理时,sed会把要处理的行存储在缓冲区中,接着用sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着 处理下一行,这样不断重复,直到文件末尾,这个缓冲区被称为 ”模式空间“
sed '/2/d' roc.txt
sed -n '/4/p' roc.txt -n 警告sed ,只输出 明确要输出的行
/d 表示删除行 ; /p 打印该行 ; /r 读取指定文件的内容 /w 写入指定文件 /a 在下面插入新行新内容 /g 替换 s/ 删除
sed 's/..//' test 删除每一行的前两个字符
sed 's/B.*/&2008/' mysed.txt 追加& s/ /
echo "helo world " |sed 's/ (helo) .*/world \1/'
world helo
sed -e 's/Beijing/london/g' -e '/Beijing/d' mysed.txt
sed '/2005/r ins.txt' mysed.txt 匹配 mysed.txt 2005 后,插入ins.txt 到mysed.txt
sed '/2004/i\china' mysed.txt 匹配2004 前一行 插入 china i
sed '/2004/a\china' mysed.txt 匹配 2004 后一行插入 china a
sed '/200[4-6]/w new.txt' mysed.txt,将指定行写入到特定文件中
sed 'y /ei/ie' mysed.txt y就是按照字符顺序,实现前后的替换 y/source /dist 而 s的语法是
s/regexp/replacement
who |cut -b 3 -b 以字节 为单位提取
who |cut 3-5,8
cut -c 以字符为单位提取内容
cut -c 3 roc.txt
cut -d : -f 1,3-5,7 -d 以什么为间隔, -f filed 要提取的域
wc 计算字数
wc -c roc.txt 以字节 byte
wc -m ro.txt 以字符char 来计数
wc -l ro.txt 以 行line
wc -w ro.txt 以 词 word
wc -L ro.txt 可以显示一个文件中最长行的长度
wc rot.txt 显示行数 词数 字节数 文件名称
split 拆分文件
split -b 400M toykohot.avi -b 指定每个拆分文件的大小 -d 指定数字
split -b -C -l 要切割的文件 输出的文件名前缀 -a
md5sum hot.avi md5 验证文件
sha1 hot.avi
paste 拼接文件
paste ro.txt roc.txt
paste -d '' p3.txt p2.txt p1.txt -d 使用字符 拼接
paste -s -d '' p3.txt p2.txt p1.txt -s 以每个文件自身为一个处理单元
sort 排序 将文件的每一行 作为一个单元进行排序,其规则是从行首 字符向后,依次 按 ASCII码值前后顺序进行比较,最后将他们按升序输出 默认是 stdout 输出
sort seq.txt 默认将每行 ASCII码值怕徐
sort -u seq.txt -u 消除重复
sort -u -r seq.txt -r颠倒顺序,逆序 降序
sort -r number.txt -o number.txt -o将排序结果保存到文件 或者重写源文件
sort -n number.txt -n number 按照数值排序
sort -n -k 2 -t : fruit.txt -k 指定要针对的那一列进行排序 , -t 指定间隔符
-f 小写字母转大写
-c 检查文件是否排序 ,乱序则输出 第一行
-C 检查文件是否排序,乱序则不输出
-M 按月份排序
-b 忽略空白
sort -n -t ; -k 2 -k 3 force.txt ,两个排序 列,有先后,都是升序
sort -n -t ' ' -k 3r -k 2 faco.txt ,两个 排序 , 3降序,然后相同的按 2 升序
sort -t ' ' -k 1.2 facebook.txt 对第一列 的第二个字母开始到本行的最后一个字符为止的字符串进行排序
awk 其实是一门编程语言 ,非常适合用来处理文本 类 数据,数据可以来自标准输入,外部文件,或其他命令的输出,,awk同事支持正则表达式和用户自定义的函数
行 record , field 列
awk '{print $0}' student.txt
awk '{print $1 ,$3}' fx.txt
awk 'BEGIN {print "" } {print ""} END {print ""}' student.txt
awk '{ print $1+$3+$6}' stu.txt
awk 'BEGIN {print "" } $3 ~ /beijing/ {print $1,$3,$2+$5 } END {print ""}' stud.txt 帅选
awk 'Pattern {Action}' filename ,Pattern 和Action 都是可选的,但是必须有一个,action 如果被指定 {} 则不做任何动作,也没有输出,
awk 'N/R%2==0 {next} {print NR,$0}' INP.txt NR表示当前记录的行号 ,用‘NR 是否嫩被2整除 的方法可以看出当前是奇数行还是偶数行, 偶数 不输出 进行下一行, 奇数 输出当前行
awk 'NR%3!=0 {T={T " "$0);next} {print T,$0; T=" "}' in.txt 其实是一个 if do else done
把 T 作为一个变量 ,中间存在赋值 操作
awk 'BEGIN {T=" "} /worktime/ {print T;T=$0; next}{T=T" "$0} END{print T}' input.txt
awk '{print $0}' input.txt inp.txt
awk 'NR==FNR &&FNR==1 {print FILENAME, $0} NR>FNR &&FNR==8{print FILENAME ,$0}' INT.txt in.txt
awk 'ARGIND==1{...}ARGIND==2{...}ARGIND==3{...}...' file1 file2 file3 ...
awk 'BEGIN {OFS=FS=":" NR==FNR {a[$1]=$2} NR>FNR{$2=a[$1];print}' shadow passwd
OFS 输出字段分隔符 FS 字段分隔符
合并两文件并求和
awk '{ for(i=1;i<=NF;i++) a[i]=$i; getline<"1.txt"; for(i=1;i<=NF;i++) printf a[i]+$i" ";
printf "\n"}' 2.txt
外部调用 getline 引用外部数据 ,system 调用shell 中的命令
awk '{getline;print}' test getline 左右没有 < | ,getline 是对当前打开的文件操作,表示读取行的下一行数据,并把读取到的数据赋值给$0,同时更新 NF NR FNR
awk '{print $0; while ((getline <"1.txt") >0)print$0)' test
awk 'BEGIN {system("ls -al")' awk 无法直接将脚本中的数据直接输出给 shell命令,反之 依然
ifconfig |awk '/eth/ {inter=$1;getline;sub(/inetaddr:/,"");print inter,$1}'
查看 TCP 连接状态
netstat -nat |awk '{print $6}' |sort|uniq -c |sort -rn
查找请求Shuffle排名 前5名的ip
netstat -anlp |grep 80|grep tcp|awk '{print $5}'|awk -F : '{print $1 }' |sort|
uniq -c |sort -nr|head -n 5
锁定tme——wait 连接较多的源 ip
netstat -n |grep TIME_WAIT |awk '{print $5}'|awk -F :'{print $1}'|sort|
uniq -c |sort -nr|head -n 5
使用tcpdump 嗅探 80 端口的访问