Mac终端技巧和Linux入门指南

  • A+
所属分类:mac使用教程

想必大家在工作当中会经常跟linux打交道,这篇文章从终端的工具开始,介绍了一套完整的也是比较基础的入门路线,有需要的同学可以了解一下。

终端实用技巧

俗话说得好:“工欲善其事,必先利其器”,一个好的终端可以让你事半功倍,工作效率提升自然不用说。因为笔者主要用mac办公,所以这部分内容主要针对mac用户,当然这是技巧在windows上面也是有样例的,可以搜索相关关键词自行了解学习。

你需要一个更好的终端软件

windows主要推荐实用CRT,mac主要推荐iTerm2。(如何安装就不赘述了)

mac自带的终端办公也可以,只是功能相对比较单薄,iTerm算是mac下面主流的终端软件,虽然crt也有mac版本,不过破解起来非常费劲。

让你的工具赏心悦目

专业,让工作更高效

前提你已经安装了iTerm2,这些配置的改动建议了解一些,尤其是经常会使用终端的同学,强烈推荐。

  • 字体
    等宽字体Consolas、monoco、sourcepro...各取所需

  • 配色
    黑白、黑绿这种高对比度的配色非常伤害眼睛
    主题很多,推荐一下solarized

  • 编码
    拒绝中文乱码,统一UTF-8

最终看起来就会比较有辨识度,接下来介绍几个常用的工作技巧。

技巧一:会话保存与tag使用

你有没有遇到过这样的问题,比如:

同样的机器每次都要登录,比如公司跳板机…
机器太多记不住,都是数字特别容易混淆…
已经登录过了,新开窗口还是要再登录…

当然有办法啦,CRT其实已经自带了这个功能,iTerm实现也很轻松

iTerm2的配置方法:

1. 安装sshpass(安装方法自行百度) 2. 打开iterm2->Peferences->Profiles 3. 添加对应profile,比如新增标签paclous,登录命令为/usr/local/bin/sshpass -p 密码 ssh [email protected] 4. 在窗口选项中点击对应名字即可实现不输入密码登录

技巧二:session会话克隆

你可能还会遇到这样的问题,比如

机器的登录密码是变动的,刚才那个技巧不管用了
已经登录了某机器,新开窗口还得再次登录

iTerm配置方法

1. 编辑vim ~/.ssh/config 2. 增加如下配置     host *     ControlMaster auto     ControlPath ~/.ssh/master-%r@%h:%p

再也不用为多开而苦恼

其他技巧

  1. 选中即复制,滚轮是粘贴,当然ctrl+C(commond+C),ctrl+V(commond+V)也是可以的

  2. ctrl+a, ctrl+e回到行首行尾

  3. ctrl+r,搜索历史记录

  4. zsh了解一下

Linux基础入门

目录结构

Mac终端技巧和Linux入门指南

/bin:bin是Binary的缩写,这个目录存放着最经常使用的命令。

/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及景象文件。

/dev:dev是Device(设备)的缩写,外部设备

/etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。

/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

/lib:这个目录里存放着系统最基本的动态连接共享库

/mnt:文件、光驱挂载

/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

/root:该目录为系统管理员,也称作超级权限者的用户主目录。

/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

/srv:该目录存放一些服务启动之后需要提取的数据。/tmp这个目录是用来存放一些临时文件的。

/usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。

/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

最基础命令

linux命令很多,每个命令支持的参数也很多,详细了解每个命令的用法可以man command或者command -h或者command --help自行学习,下面主要介绍一些常用的命令。


'-h'和'--help'主要是shell风格的差异,功能是完全一样的,比如-r其实是等同于--regular的,不用太纠结这个

cd路径切换

ls显示文件或目录信息(ls –l = ll)

mkdir当前目录下创建一个空目录,mkdir –p可用于级联创建

rmdir删除目录,要求目录为空

touch生成一个空文件

cp复制文件,cp –r递归复制,复制文件夹是需要用到

mv移动文件或目录、文件或目录改名

rm删除文件或目录,rm –r删除目录,rm –f强制删除(不问是否),一定要慎用rm –rf易翻车!!!

find查找文件,比如在当前目录下查到nginx.conf这个文件find ./ -name "nginx.conf"

cat查看文本文件内容,文件较大时终端容易开始,使用more或者less代替

more查看文件内容

less查看文件内容,功能更强大

tail查看文件内容,常用于日志文件的查看和检测

head查看文件的头部

echo把内容重定向到指定的文件中 ,有则打开,无则创建

绝对路径与相对路径

.或./表示当前目录, cd .或者cd ./表示当前目录

..或../表示上一级目录

~ 表示当前登录用户的主目录(等于echo $HOME

通配符

比较常用的通配符*,参考正则表达式

几个常用场景

  1. 当前目录下显示文件名中带audit的文件ls –l “*audit*”

  2. 在系统中搜索一个包含123关键词的文件find / -name “*123*”

中断与挂起

ctrl+c是发送中断信号,ctrl+z是挂起任务或者服务,需要手动终止

管道“|”

用于连接多个命令,并将上一个命令的输出作为下一个命令的输入

查找tomcat进程: ps aux | grep “tomcat”

串行执行多个命令 && 或者 ;

多个命令如何一起执行呢?答案是&&或者;

cd /home/test && ls -al && echo "123" > test.txt cd /home/test ; ls -al ; echo "123" > test.txt; mkdir -p test/a/b && cd test/a/b && do something

重定向

>表示清空文件并写入

>>表示向文件中追加写入内容

创建一个空文件touch test.txt可以用echo "" > test.txt代替

echo "" > access.log可用于清空文件内容

echo "haha" >> access.log往access.log文件末尾追加内容

grep、awk、sed文本处理三剑客

grep文本过滤,经常配合管道、awk一起使用(大小写敏感)

查找tomcat进程ps –ef|grep tomcat

查找匹配关键词的文件行cat test.txt | grep keyword

grep常见用法:

grep ios正向过滤,过滤出包括ios关键词的行

grep –v test反向过滤,过滤不包括test关键字的行

grep “ios”|grep “android”|…过滤出同时包含ios和android的行

grep “ios|android”包含ios或者android的行

grep –E “正则”根据正则匹配目标行

grep –r “关键字” .递归匹配,在当前目录下查找所有文件中能匹配到关键字的行

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

命令格式:

awk [-F field-separator] 'commands' input-file(s)

awk默认以空格为切分符号,比如我们想拿到当前系统下nginx的master进程的pid,可以这么操作ps aux | grep nginx | grep master | awk '{print $2}'

awk很强大,可自定义变量还可以使用更高级语法的来做更复杂的计算,比如计算总和,求平均值等

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作

sed常用格式:sed [-nefri] ‘command’ 输入文本

显示第一行到第二行sed -n '1,2p' ab

显示第一行sed -n '5p' ab

grep/awk/sed是linux下面文本处理三剑客,功能很强大,有兴趣的话自己深入学习一下吧。

文件压缩与解压

比较常见的两种格式:gz和zip

压缩:tar –zcvf test.tar.gz ./test

解压:tar -xf test.tar.gz

压缩:zip test.zip ./test

解压:unzip test.zip

文件上传与下载

1秒钟搞定服务器文件上传和下载,前提是iTerm和服务器都要支持rzsz才可以使用

iTerm配置rzsz参考配置链接

服务器安装lrzsz扩展:Yum –y install lrzsz

上传:rz –e 单文件(只能是单文件,不能是文件夹)

下载: sz + 文件名

注意,上传文件不要太大,容易卡死


定时任务crontab

crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。

基本格式:* * * * * command

Cront –e编辑当前用户的crontab

Crontab –l限时当前crontab列表

*/15 * * * * do something每小时内15/30/45/0时执行操作

1,3,5 * * * * do something每小时内分钟为1,3,5时执行操作


vim常用操作

Vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。

Vim提供了三种模式:普通模式、编辑模式、命令模式

常用操作:
打开文件: vim test.txt
插入:i
在当前行的下一行插入o
在当前行的上一行插入O
跳到文件开头gg
跳到文件末尾G
翻页:ctrl+F(下一页), ctrl+B(上一页)
搜索:/关键字 (在搜索结果间跳转n N)
替换:%s/原始字符串/目标字符串/g
光标移动:hjkl 或者 方向键
撤销u
复制yy,粘贴p

vim键盘图谱

Mac终端技巧和Linux入门指南

alias超级实用的别名

alias命令用来设置指令的别名,我们可以使用该命令可以将一些较长的命令进行简化。

操作方法:

  1. 编辑~/.bashrc文件

  2. alias 新的命令='原命令 -选项/参数'

  3. source ~/.bashrc

要删除一个别名,可以使用 unalias 命令,如 unalias l

举个实例,执行jmeter压测/root/goodstart/apache-jmeter-3.2/bin/jmeter.sh -n -t test.jmx命令很长,按照上面的操作方法我们可以使用alias优化一下alias jmeter="/root/goodstart/apache-jmeter-3.2/bin/jmeter.sh -n”,之后在系统中直接输入jmeter就等同于你输入了/root/goodstart/apache-jmeter-3.2/bin/jmeter.sh -n,非常实用哦。

进程相关

ps(process)

常用过滤用户进程ps aux | grep tomcat

  • Cpu升序ps -aux --sort -pcpu | less

  • 内存升序ps -aux --sort -pmem | less

端口占用lsof

常用与查看某个端口占用情况,laof –i:8080

top

显示所有正在运行而且处于活动状态的实时进程, 而且会定期更新显示结果;它显示了CPU使用率,内存使用率,交换内存使用大小,调整缓存使用大小,缓冲区使用大小,进程PID, 使用的命令等信息。

iostat

查看存储设备输入和输出状态统计的工具,用来追踪存储设备的性能 问题;包括设备,磁盘,NFS远程磁盘

iftop

网络流量监控(需要自己安装)

Mac终端技巧和Linux入门指南

pmap

pmap命令用于报告进程的内存映射关系,是Linux调试及运维一个很好的工具。pmap pid查看pid的内存占用情况


avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: