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
grepqooweds@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 -20BEGIN,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

Shell常用命令分享相关推荐

  1. shell 常用命令

    shell 常用命令 Shell基本命令 几个基本的shell命令,用ssh管理主机必备. 1.ls  列出目录下的文件,不同类型的文件颜色不同,例如蓝色是文件夹,白色是文件 [root@restor ...

  2. UEFI Shell 常用命令

    UEFI Shell 常用命令 分类:IT技术 2013-09-11 16:49阅读(14542)评论(0) EFI是Extensible Firmware Interface的缩写,是介于平台固件和 ...

  3. android adb shell 常用命令

    adbshell.com/ adb常用命令 1.模拟点击 adb shell input tap 100 100 复制代码 2.滑动 adb shell input swipe x1 y1 x2 y2 ...

  4. adb 输入回车命令_Android超级终端(Adb Shell)常用命令、命令大全-持续更新 | 何连超的博客小站...

    Android超级终端(Adb Shell)常用命令.命令大全-持续更新 超级终端(手机端操作)与AdbShell(电脑端操作)使用的Shell命令(即Linux shell命令,类似Dos命令)是相 ...

  5. 终端shell常用命令

    终端shell常用命令 1.ls命令 – 显示指定工作目录下的内容及属性信息 语法格式: ls [选项] [文件] **语句功能:**列出指定目录下的内容及其相关属性信息. 常用参数: -a 显示所有 ...

  6. Shell常用命令 和 bat常用命令

    linux和windows下的反斜杠\和正斜杠/区别 Windows:--"/"是表示参数,"\"是表示本地路径. xcopy /E /Y D:\DailyBu ...

  7. shell 常用命令-source

    文章目录 前言 shell 常用命令-source 01 概念 02 作用 03 source filename与 sh filename 及./filenmae 执行脚本对比 前言   如果您觉得有 ...

  8. Linux下Shell常用命令与工具

    文章目录 Shell常用命令与工具 1.ls 2.echo 3.printf 4.cat 5.tac 6 .rev 7.wc 8.cp 9.mkdir 10.mv 11.rename 12.dirna ...

  9. HDFS系列(3) | HDFS的Shell常用命令大全

    此次更新的的博文是关于HDFS的shell的常用命令,希望大家能够喜欢 目录 一. 基本语法 二. 命令大全 三. 常用命令实操 1. 常用命令及其作用对比表 2. 常用命令的实际操作 一. 基本语法 ...

最新文章

  1. ubuntu 下mysql导入出.sql文件
  2. 《机器人操作系统ROS原理与应用》——1.1 宏观
  3. sql server转mysql工具下载_SQL Server转换为MySQL工具推荐(Mss2sql)
  4. netty检测系统工具PlatformDependent
  5. leafLet API 中文文档翻译
  6. 如何在android模拟器中安装apk软件
  7. 习题6-2 使用函数求特殊a串数列和 (20 分)
  8. ado.net 操作mysql_ADO.NET操作数据库(一)
  9. java限制金额控制_JavaMail 限额管理
  10. wpf checkbox选中触发事件_Web前端开发(16)——JQuery事件绑定与插件
  11. 最火UI素材|短视频、直播APP套件,轻松搞定设计
  12. 微课系列(三):Python列表中存储的是元素的引用
  13. 杭电计算机组成原理教材答案,杭电计算机组成原理包建课后作业答案详解.doc...
  14. sublime text 显示 typescript高亮
  15. 她经济正在替代男性,成为体育产业的新支柱?
  16. 计算机打音乐醉赤壁,抖音确认过眼神我遇上对的人是什么歌,醉赤壁歌曲介绍...
  17. VUE3(二十四)自定义alert弹窗组件
  18. hssfrow 单元格样式_POI设置Excel单元格样式
  19. Linux——一文彻底了解进程id和线程id的关系(什么是pid、tgid、lwp、pthread_t)
  20. 用python爬取中国土地市场网上的土地出让公告所有标题

热门文章

  1. 为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从
  2. Jetson TX2 高功率模式更改 Can't access Fan!(JetPack4.2)
  3. java实现http/https抓包拦截
  4. Acrel-2000在线测温系统 在山东东岳高分子智能车间的应用
  5. 2023同等学力申请硕士计算机综合国考
  6. 计算机软件计入无形资产摊销,计算机软件按照多少年摊销
  7. SCI一区顶刊Trans常客-天宇师兄的科研方法及如何更容易被录取经验分享
  8. Service Control Manager 服务管理器简介
  9. spark1.1.0部署standalone分布式集群
  10. Matlab\Simulink仿真中遇到的代数环问题