Shell常用命令分享

Shell常用命令分享

1.常用操作

第一次进入Linux会用到的命令

ls(按顺序显示文件), cd(cd -), cat, mv, cp, rm(注意rm -rf前要ls), touch, mkdir,pwd等命令,例如

按文件大小排序
root@laogu8:/home/sgm/logs# ls -Slr
按时间逆序
root@laogu8:/home/sgm/logs# ls -lrt

了解一下各个目录存放什么

1.文件
linux下对所有的资源的操作都是对文件.文件夹和设备都是文件.使用文件描述符(fd:file descriptor)来对文件进行操作.文件描述符是整数

2.目录结构
“/” :Linux文件系统的入口.也是最高一级的目录.
“.” :当前目录
“…” :父目录
“~” :用户根目录

“/usr”:存放用户使用系统命令和应用程序等信息.像命令.帮助文件等.
“/home”:普通用户的目录默认存储目录.
“/etc”:所有的系统配置文件.
“/proc”:系统信息目录.只存在内存当中,而不占用外存空间.(./cpuinfo ./meminfo ./net/)
“/bin”:基本系统所需要的命令,功能和"/usr/bin"类似,这个目录下的文件都是可执行的.普通用户也是可以执行的.

“/boot”:内核和加载内核所需要的文件.grub系统引导管理器也在这个目录下.
“/dev”:设备文件存储目录.像终端.磁盘等.
“/lib”:库文件和内核模块存放目录.
“/media”:即插即用设备的挂载点自动存放在这个目录下.像U盘,cdrom/dvd自动挂载后,就会在这个目录下.
“/mnt”:临时文件系统的挂载点目录.
“/opt”:第三方软件的存放目录.
“/root”:Linux超级权限用户root的根目录.
“/sbin”:基本的系统维护命令,只能由超级用户使用.
“/srv”:存放一些服务器启动之后需要提取的数据.
“/tmp”:临时文件目录.
“/var”:存放经常变动的数据,像日志.邮件等.
了解单个文件的使用

1.查看
lic@lic:~/tmp$ ls -l
-rw-rw-r-- 1 lic lic 19 Oct 25 07:21 tmp1.sh
第一个小格是特殊表示格,表示目录或连结文件等等,d表示目录,l表示软链接文件,“-”表示文件
后面9个小格:rw-(Owner)rw-(Group)r–(Other)
第二个栏位,表示文件个数
第三个栏位,表示该文件或目录的拥有者
第四个栏位,表示所属的group
第五栏位,表示文件大小
第六个栏位,表示创建日期
第七个栏位,表示文件名
扩展名只是作为执行软件或程序识别用;文件能否被执行仅与执行权限有关

2.权限

sudo
su - 
exit
chmod 
u:用户,g:组,o:其它,a所有用户(默认)r=4,w=2,x=1
//7 等于 4+2+1 , 4 是可读, 2 是可写, 1 是可执行
常见权限:
444 r–r–r–
600 rw——-
644 rw-r–r–
666 rw-rw-rw-
700 rwx——
744 rwxr–r–
755 rwxr-xr-x
777 rwxrwxrwx
lic@lic:~/tmp$ chmod a+x test
lic@lic:~/tmp$ chmod 777 test

3.软链接和硬链接
inode:索引节点,是文件的唯一标识而非文件名
建立软链接 ln -s 存放是另一文件的路径名的指向
建立硬链接 ln 存放的是inode的指向
显示inode ls -i
好处:方便,隐藏路径,增加安全性

(了解更多:http://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/)

管道

| 管道符号
command 1 | command 2
他的功能是把第一个命令command 1执行的结果作为command 2的输入传给command 2
lic@lic:~/tmp$ ps -ef |grep ps
重定向

用得最多的是 > 和 >>

lic@lic:~/tmp$ echo "hello, now is "`date +%s` > hello_world
lic@lic:~/tmp$ echo "hello, now is "`date +%s` >> hello_world

1.文件描述符:
0表示标准输入
1表示标准输出
2表示标准错误

2.重定向输出:将命令的正常输出结果保存到指定的文件中,而不是直接显示在显示器的屏幕上
若重定向的输出的文件不存在,则会新建该文件

重定向输出(覆盖文件)

重定向输出(追加内容)

其他重定向知识
< 重定向输入: 将命令中接收输入的途径由默认的键盘改为其他文件.而不是等待从键盘输入
2> 错误重定向:类似于重定向输出
&> 混合输出:不区分标准输出和错误输出
&等同于
/dev/null 垃圾桶:无法读取任何文件,也不会因为输出的内容过多而导致文件大小不断的增加

lic@lic:~/tmp$ ls /tmp /nginx 1>a.txt 2>b.txt 
lic@lic:~/tmp$ ls /tmp /nginx > /dev/null 2>&1 

2.查看日志
head/tail

显示前30行
lic@lic:~/tmp$ cat test_data |head -n 30
显示前30个字节
lic@lic:~/tmp$ cat test_data |head -c 30
显示除前30行之外的行数
lic@lic:~/tmp$ cat test_data |head -n -30
more/less

以less举例
翻页:空格
向上翻页:b
向下一行:回车
向上一行:y

显示行号
lic@lic:~/tmp$ cat test_data |less -N
从第50行开始显示
lic@lic:~/tmp$ cat test_data |less +50
从的一个string_1开始显示
lic@lic:~/tmp$ cat test_data |less +/string_1
sort

sort默认为升序,如果需要降序使用-r参数:
lic@lic:~/tmp$ cat test_data |sort -r

以数值大小来排序使用-n参数
设置间隔符使用-t参数
指定列数使用-k参数
lic@lic:~/tmp$ cat test_data |sort -k4nr -t :

忽略大小写使用-f参数
uniq

去除重复行
lic@lic:~/tmp$ cat test_data |head -n 30 |uniq -c
grep

qooweds@ubuntu:~/git/python$ cat test_data.txt |grep 104

打印行号
qooweds@ubuntu:~/git/python$ cat test_data.txt |grep -n 104

打印文件名
qooweds@ubuntu:~/git/python$ cat test_data.txt |grep -H 104

统计行数
qooweds@ubuntu:~/git/python$ cat test_data.txt |grep -c 104

使用扩展的正则表达式
qooweds@ubuntu:~/git/python$ cat test_data.txt |grep -E "104|103"

排除某些行
qooweds@ubuntu:~/git/python$ cat test_data.txt |grep -Ev "99|103" 
awk

默认分隔符为空格
qooweds@ubuntu:~/git/python$ cat test_data.txt |awk '{print $2}'

指定分隔符
qooweds@ubuntu:~/git/python$ cat test_data.txt |awk -F ':' '{print $2}'

对某一列数值按数值从大到小进行排序
qooweds@ubuntu:~/git/python$ cat test_data.txt |awk -F ':|,' '{print $9}' |sort -k1nr |head -20

将邮箱按ASCII字符顺序进行排序
qooweds@ubuntu:~/git/python$ cat test_data.txt |awk -F ':|,' '{print $13}' |sed 's/\"//g' |sort -k1 |head -20

BEGIN,END模式
qooweds@ubuntu:~/git/python$ cat test_data.txt |head -5|awk -F ':|,' 'BEGIN {print "aaa"} {if($9>90)print $9} END{print "bbb"}'
vim

0 到行头
$ 到行尾
gg 到文档头
G 到文档尾
dd 剪切当前行
(n)dd 剪切从当前行起的多行
o 从下一行插入
O 从上一行插入
/pattern → 搜索 pattern 的字符串
n 跳到下一个搜索字符

跳到上一个搜索字符

vim内替换: 类似于sed
(推荐陈皓的博客: http://coolshell.cn/articles/5426.html)
3.处理日志
修改配置

修改vim配置
/usr/share/vim/vimrc (rc = RunCom = Run commands, 表示包含命令启动信息的文件)
~/.vimrc
修改环境变量
~/.profile
及bash对应的bash_profile, bashrc, bash_logout
使用别名

修改~/.bashrc
添加想要使用的别名,例如: alias gohome=“cd ~”
tr

字符串替换
lic@lic:~/tmp$ cat test_data |tr “string_1” “string_2”

a-l大小写字母替换
lic@lic:~/tmp$ cat test_data |tr “a-l” “A-L”

tr比sed好的是可以比较方便的处理换行符
wc

计算行数
lic@lic:~/tmp$ cat test_data |wc -l
计算字符数/判断文件是否为空
lic@lic:~/tmp$ cat test_data |wc -c
date

lic@lic:~/tmp$ date
lic@lic:~/tmp$ date ‘+%c’
lic@lic:~/tmp$ date ‘+%D’
lic@lic:~/tmp$ date ‘+%x’
lic@lic:~/tmp$ date ‘+%T’
lic@lic:~/tmp$ date ‘+%X’
lic@lic:~/tmp$ date -d next-day +%Y%m%d
lic@lic:~/tmp$ date -d ‘next monday’
lic@lic:~/tmp$ date -d ‘2 weeks’
find

查找指定目录,指定深度,符合某些特征文件名的文件
qooweds@ubuntu:~/git/python$ find . -maxdepth 1 -name “test_data.txt”

查找含有某些字符串的文件
qooweds@ubuntu:~/git/python$ find . -maxdepth 1 -name “*.txt” |xargs grep -HEnv “99|103”
sed

替换并输出指定字符或字符串
qooweds@ubuntu:~/git/python$ cat test_data.txt |sed -e ‘s/字符串_1/字符串_2/g’
qooweds@ubuntu:~/git/python$ cat test_data.txt |sed -e ‘s/@/#/g’

替换并修改指定字符或字符串
qooweds@ubuntu:~/git/python$ cat test_data.txt |sed -e ‘s/@/#/g’

仅替换每行第一个
qooweds@ubuntu:~/git/python$ cat test_data.txt |sed -e ‘s/’"/####/’

仅打印发生变化的行
qooweds@ubuntu:~/git/python$ cat test_data.txt |sed -n ‘s/104/一百四/pg’

限定替换的行
qooweds@ubuntu:~/git/python$ cat test_data.txt |sed -n ‘80,85s/104/一百四/pg’

同时进行多种替换
qooweds@ubuntu:~/git/python$ cat test_data.txt |sed -n ‘80,85s/104/一百四/pg;s/103/一百三/pg’
4.任务自动化
crontab

          • date >> /tmp/echo_date > /dev/null 2>&1
            分 时 日 月 周
            ssh

ssh root@192.168.0.1 -p 222
(推荐阮一峰的一篇博客,介绍了ssh的一些原理,
包括使用密钥登录的方法,可以尝试修改自己VPS的登录方式为密钥登录
http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html)
rsync

-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-v, --verbose 详细模式输出
mail

cat mail.txt |mail -s “$DATE Reconciliation” nigel.li@hypers.com
tar

无论是解压还是压缩,参数都是压缩包在前
lic@lic:~/tmp$ tar -zcvf test.tar.gz *
lic@lic:~/tmp$ tar -zxvf test.tar.gz
curl

lic@lic:~/tmp$ curl https://www.hypers.com
kill

lic@lic:~/tmp$ kill pid
lic@lic:~/tmp$ kill -9 pid
其他小工具(举2个例子)

base64格式转换:
lic@lic:~/tmp$ echo “www.hypers.com” |base64
d3d3Lmh5cGVycy5jb20K
lic@lic:~/tmp$ echo “d3d3Lmh5cGVycy5jb20K” |base64 -d
www.hypers.com

时间戳转换:
lic@lic:~/tmp$ date +%s
1480251935
lic@lic:~/tmp$ date -d @1480251935
Sun Nov 27 21:05:35 CST 2016

shell脚本等…
5.与windows的交互
sz/rz
mount

lic@lic:~/tmp$ sudo mount -t cifs //192.168.0.103/Users/linux_mount /home/lic/server/mount -o username=lic,password=read_passwd
xshell复制粘贴/登录
6.其他命令&工具介绍
top

按1显示多核
load average:当前,最新5分钟,最新15分钟的cpu平均负载
mem:buffers指用于内核缓存的内存大小,cached指缓冲的交换空间大小
ps
netstat
wget
tcpdump
df
ifconfig
history
uname -a
Ctrl+r

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值