Mac/Linux Cheatsheet

timg.jpeg

在初学使用Linux/Mac时的一些笔记,整理放在一起,便于遗忘时快速查阅定位。

Zsh 使用笔记

命令选项补全

在zsh中只需要键入 tar - 就会列出所有的选项和帮助说明

目录浏览和跳转

输入 d,即可列出你在这个会话里访问的目录列表,输入列表前的序号,即可直接跳转。

智能跳转

安装了 autojump 后并启用之,zsh 会自动记录你访问过的目录,通过 j 目录名 可以直接进行目录跳转,而且目录名支持模糊匹配和自动补全,例如你访问过 hadoop-1.0.0 目录,输入j hado 即可正确跳转。j –stat 可以看你的历史路径库。

命令别名

在命令行中输入 alias 可以查看所有的命令别名

.zshrc

在用户根目录的 .zshrc 中新增函数方法动作、快捷别名

Mac OS 如何在终端下打开 APP 应用程序?

比如使用 x.app 软件 打开 y.txt 文件,可使用open命令 open -a x.app y.txt

如何启动HTTP代理 Privoxy ?

因没有安装在系统目录内,所以启动的时候需要打全路径 sudo /usr/local/sbin/privoxy /usr/local/etc/privoxy/config查看是否启动成功 netstat -na | grep 8118
如何查找一个文件,并返回路径?

查找文件 name.txt 路径

find / -name “name.txt”
/ 表示全局查找,替换它以便在其他指定目录查找。

如何创建一个快捷访问文件?

ln -s 源目录 目标快捷方式
例如:在当前文件下创建快捷文件 wwwroot,并指向目录 /home/wwwroot/
ln -s /home/wwwroot/ wwwroot

如何离线下载 YouTube 视频?

使用强大的youtube-dl吧,项目源码:https://github.com/rg3/youtube-dl
安装 youtube-dl:
pip install --upgrade youtube_dl
使用方法:

https://www.youtube.com/watch?v=nNGmruHS3r8 => 需要下载的视频URL

执行下列命令缓存到当前目录

youtube-dl https://www.youtube.com/watch?v=nNGmruHS3r8
离线取回:

利用 python 即可快速创建一个临时 WEB 服务,当其他 Node 的 http-sever 也可以的。

python -m SimpleHTTPServer 8080
现在要下载一个视频 MP3 轨道,我们需要以下两个选项:

–extract-audio (短选项-x) -视频文件转换为纯音频文件。
–audio-format -指定音频格式,其中该文件将被下载。 支持的音频格式是“最佳”,“aac”,“vorbis”,“mp3”,“m4a”,“opus”或“wav” “best”默认设置
要将视频下载为mp3文件,可以使用以下命令之一:

youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=jwD4AEVBL6Q

那么如果我们已经下载了视频格式,结果还想要音频MP3呢?

可以使用 ffmpeg 格式转换工具
以下命令可以将 123.mp4 文件转换成 123.mp3 文件
ffmpeg -i 123.mp4 123.mp3

如何打包、压缩、解压文件/文件夹呢?

.tar.gz格式(.tar是打包! .gz是压缩!打包后的文件名:FileName;需要打包的文件夹:DirName)

压缩:

$ tar zcvf FileName.tar.gz DirName

解压:

$ tar zxvf FileName.tar.gz
.zip格式(打包文件file1、file2和目录dir,压缩为file.zip)

解压:

$ unzip file.zip

压缩:

$ zip -r file.zip file1 file2 dir

如何复制一个文件夹下的文件到另一个文件夹里?

需求:dir1目录下面的一堆文件复制到dir2目录下。

cp -r dir1 dir2 # 这样的话dir1文件夹复制到了dir2下
cp -r dir1/. dir2 # 加上 /. 既可

如何上传和下载一个文件?

可以使用 Curl、Wget、rz/sz、scp 工具

Wget 是大多数 *nix 系统中标准的命令行下载工具。

$ Wget https://example.com/download.php?fileID=foo
Mac OS 自带 Curl 下载 Chrome 的例子:

正常下载一个文件

$ curl -O https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.dmg

url 重定向链接

$ curl -L -o ‘file.zip’ ‘https://example.com/download.php?fileID=foo

上传文件到远程ftp

$ curl -T file.zip ftp://root:123456@jandou.com/home/wwwroot/

上传文件到远程sftp:

$ curl -T file.tar.gz -u root sftp://jandou.com

rz/sz 命令

远程拷贝和本地上传 scp 命令

从远程机器拷贝到本地 ( -P: 大写的P, 指定端口号 )

$ scp -P 10086 root@bg.jandou.com:/root/file.zip ~/Desktop

从本地上传到远程机器(-r:小写的r,表示递归,目录或文件只能用相对路径)

$ scp -P 10086 -r ~/Desktop/file.zip root@bg.jandou.com:/root/
出现错误***: not a regular file不能成功传送,解决方案:有可能服务器没权限 chmod 777 ,在使用scp时加上 -r 参数即可

VI/VIM 常用命令列表

:w 保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w! 强制保存,不推出vi
:wq 保存文件并退出vi
:wq! 强制保存文件,并退出vi
:q 不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑
i 进入编辑模式
d 非编辑模式,双击 d ,删除整行

网卡物理地址(Mac地址)如何动态设置?

例如 00:1f:3c:93:b5:99,可执行:

$ sudo ifconfig en1 ether 00:1f:3c:93:b5:99

如何进行文件(夹)的删除操作?

删除空目录dir: rmdir dir
删除非空目录dir: rm -rf dir
如何进行文件(夹)的重命名操作?
删除空目录dir: mv 原XXX.mp3 改XXX.mp3

Linux 里的进程守护有哪些方法?

用 screen 进程守护,来源 http://www.cmsky.com/shadowsocks-manyuser-sspanel/

screen -S ss
cd /root/shadowsocks/shadowsocks/
python servers.py
恢复执行:

screen -r ss
用 supervisor 进程守护

首先安装 supervisor

默认安装了 pip , 如果没安装过,不同平台参考下面命令安装:

$ sudo apt-get install python-pip # For Debian/Ubuntu
$ sudo yum install python-pip # For CentOS
安装 supervisor 命令:

$ pip install supervisor
创建 supervisor 配置文件

输出至 supervisor 的默认配置路径。

我没有放在默认位置,我放在 /root/shadowsocks 文件夹里的!

$ echo_supervisord_conf > /etc/supervisord.conf
在 supervisord.conf 所放目录下运行 supervisor 服务

$ [root@zhuziyi shadowsocks]# supervisord

$ supervisord
vim 配置 supervisor 以监控 ss-manyuser 运行(或者vi命令)

$ vim /etc/supervisord.conf
在文件尾部(当然也可以新建配置文件,不过这样比较方便)添加如下内容并酌情修改:

[program:ss-manyuser]
command = python /root/shadowsocks-rm/shadowsocks/servers.py
user = root
autostart = true
autorestart = true
其中 command 里的目录请自行修改为你的 servers.py 所在的绝对路径。

重启 supervisor 服务以加载配置

$ killall -HUP supervisord
查看 shadowsocks-manyuser 是否已经运行:

$ ps -ef | grep servers.py
可以通过以下命令管理 shadowsock-manyuser 的状态

$ supervisorctl {start|stop|restart} ss-manyuser
参考:https://prinzeugen.net/build-shadowsocks-sharing-site-with-ss-panel/

在命令后面加上一个 & 符号,表示该命令放在后台执行

fg(foreground)命令:将后台进程 调到前台
bg(background)命令:将一个在后台暂停运行的命令,变成继续在后台执行的命令。
Ctrl + Z 命令:将一个正在前台执行的命令放到后台,并且暂停
Ctrl + C 命名:结束前台进程
用jobs查看进程的 jobnumber,然后用命令:kill %n 来结束。
用 PS 查看进程的 pid,然后用命令:kill pid 来结束。
强大的 PM2 进程管理(推荐)

启动 Shadowsocks:pm2 start /root/shadowsocks/servers.py –name=”shadowsocks” –watch
启动 Http-Server:pm2 start http-server –name=”node-server” –watch
进程守护全面参考:http://www.ruanyifeng.com/blog/2016/02/linux-daemon.html

Mac Terminal里的一些杂项记录

sudo killall -9 networkd

ifconfig 查看网络配置

telnet 172.25.47.49 11443 检测服务器 172.25.47.49 的 11443 端口是否开启

lsof -i tcp:8090 -n 查看8090端口使用情况

ssh -D 6088 supdev@172.25.47.49 连接 172.25.47.49 服务器,本地 6088 端口数据 Socks 5 代理到服务器网络

如何安装 Google BBR 脚本为服务器加速?

https://teddysun.com/489.html
https://doub.io/wlzy-22/
逗比一键安装SSR教程:https://doub.io/ss-jc42/comment-page-5/
注意! Centos 7 默认开启自带防火墙,如果不关闭,系统重启后,外网是无法访问机器的。

如何安装小众加密代理 Brook ?

脚本地址:https://softs.fun/Bash/brook.sh
脚本说明:https://doub.io/brook-jc3/
客户端:https://doub.io/brook-jc2

如何使用 Screen 进程守护?简版

新建一个Screen,如开启一个ss进程守护: screen -S ss
开启需要长期运行的进程,如开启一个Node HTTP服务:http-server -p 80
将当前Screen Session放到后台:CTRL + A + D
当需要唤起一个Screen Session 时:screen -r ss
终止一个Screen Session:先exit退出,再 CTRL + D
via:https://github.com/chenzhiwei/linux/tree/master/screen

lnmp 如何安装和配置 SSL?

不能批量增加域名,会只生成一个路径,从而导致其他域名找不到证书
默认证书储存路径:/etc/letsencrypt/live
nginx 的 80 端口强制 301 跳转到 443 端口、错误页、HSTS等设置,配置所在路径: /usr/local/nginx/conf/vhost/

这是一个模板示例

server
    {
        listen 80;
        server_name jandou.com;
        charset utf-8;
        return 301 https://$host$request_uri; # 注意进行301重定向到https,否则通过http仍能访问你的站点
    }
server
    {
        listen 443 ssl http2;
        #listen [::]:443 ssl http2;
        server_name jandou.com ;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/default;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/jandou.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/jandou.com/privkey.pem;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
        ssl_session_cache builtin:1000 shared:SSL:10m;
        # openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048
        ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;

        # 严格传输安全(HSTS)配置
        add_header Strict-Transport-Security "max-age=63072000; preload";

        include none.conf;
        # 跳转到博客的 404 页
        error_page   404   $scheme://tech.jandou.com$request_uri;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        include enable-php.conf;

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log off;
    }

如何使用 crontab 来定时执行任务?

任务配置文件,在该文件里增加定时任务: /etc/crontab

service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //服务状态
我写的一个脚本示例,可下载:crontab.txt

#!/bin/bash

#随机数,表示随机一个 25 以内的数
randNum1=$(($RANDOM%25))
randNum2=$(($RANDOM%25))
currentTime=`date "+%Y-%m-%d %H:%M:%S"`

#  /var/spool/cron/root ( root是个文件,代表 root 用户的任务调度 ),在文件夹 /var/spool/cron/ 存入各个用户的调度任务配置
#  crontab -e 编辑某个用户的 cron 服务,比如当前用户为 root,这个命令实际上是个语法糖,最终还是往 /var/spool/cron/root 写入配置,效果一样!
path_root="/var/spool/cron/root"
# /etc/crontab 是系统任务调度,系统级别的任务添加在这里,但目前我没用这个!!
path_sys="/etc/crontab"
path_log="/root/wwwroot/jandou.com/data/runlog.txt"
path_qiandao="/root/wwwroot/jandou.com/data/qiandao.txt"

# 测试每分钟写入追加
# * * * * * echo \"$currentTime-$randNum1\" >> $path_log

#生成crontab 任务配置文件
echo "
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

# 每 2 小时运行一次
* 2 * * * . /root/cache.sh

# 每60分钟执行一次
1 9-18  * * * node /root/house/app.js
" > $path_root

echo "# 每周 1 ~ 5 的 9:00 ~ 9:25 ,随机时间,执行一次
#####注释这一行暂停自动打卡   
"$[randNum1]" 9 * * 1-5 node /root/qiandao/app.js" >> $path_root

echo "
# 每周 1 ~ 5 的 18:00 ~ 18:25 ,随机时间,执行一次
#####注释这一行暂停自动打卡  
"$[randNum2]" 18 * * 1-5 node /root/qiandao/app.js" >> $path_root

echo "
# 每周日的 18:00 ,执行一次,清理签到日志
0 18 * * 7 echo '' > $path_qiandao" >> $path_root

echo "
# 每周 1 ~ 5 的 06:00,执行一次,用于自动生成 crontab 配置
#####注释这一行暂停自动打卡 
0 6 * * 1-5 . /root/qiandao/timing.sh" >> $path_root

echo "
# crontab 配置文件生成时间:"$currentTime >> $path_root

echo "
① 生成 crontab 配置成功!" >> $path_log

#重启服务
service crond restart

echo "② 重启 crond 服务成功!
③ 当前时间:"$currentTime"
④ 上班时间:09 : "$randNum1"
③ 下班时间:18 : "$randNum2"
****************************" >> $path_log

cat $path_root
crontab 命令使用,定时执行任务,详细资料查看:http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html

如何安装 zsh 搭档插件 autojump?

Mac 上直接用 MacOS 缺失软件包管理器 Homebrew 来安装

$ brew install autojump
Centos 上可以用 Yum 安装

$ yum install autojump
手动安装
如果返回与以下提示,表示yum源没有autojump

No package autojump available.
Error: Nothing to do
如果不想改源,那么就直接下载autojump源码手动安装:

git clone git://github.com/joelthelion/autojump.git
cd autojump
install.py
安装完后目录 ~/ 下面就有 .autojump 目录了,然后在 .zshrc 里面加一行:

[[ -s ~/.autojump/etc/profile.d/autojump.sh ]] && . ~/.autojump/etc/profile.d/autojump.sh
最后再执行一次 source .zshrc,以生效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值