Liunx命令行

一些简单的命令

[me@linuxbox ~]$ date
Thu Oct 25 13:51:54 EDT 2007
[me@linuxbox ~]$ cal
October 2007
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
[me@linuxbox ~]$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda2             15115452   5012392   9949716  34% /
/dev/sda5             59631908  26545424  30008432  47% /home
/dev/sda1               147764     17370   122765   13% /boot
tmpfs                   256856         0   256856    0% /dev/shm

文件系统

  • pwd - 列出当前工作目录名
  • cd - 更改目录
  • ls - 列出目录内容

Mac使用技巧

Mac终端命令

重启Macos: shutdown -r now
关闭MacOS: shutdown now
获取电池管理设置信息: pmset -g
设置显示器无活动15分钟后关闭: sudo pmset displaysleep 15
计算机无活动30分钟休眠: sudo pmset sleep 30

强制Finder程序显示隐藏文件: defaults write com.apple.finder AppleShowAllFiles TRUE
强制Finder程序不显示隐藏文件: defaults write com.apple.finder AppleShowAllFiles FALSE

ping某个主机: ping -o www.baidu.com
诊断到某个主机的路由节点: traceroute baidu.com
检查主机HTTP服务或网络是否可用: curl -I www.baidu.com |head -n 1
管理windows网络: man net
诊断域名: dig www.baidu.com a dig www.baidu.com MX
查看谁正在登录到Mac机器上: w
显示系统路由表: netstat -r
显示活动网络连接: netstat -s
显示网络统计: netstat -s

统计剪切板中文本的行数: pbpaste |wc -l
统计剪切板中的单词数: pbpaste | wc -w
移除剪切板中重复的文本,然后重新写回剪切版: pbpaste | sort | unip | pbcopy
显示剪切版中文本的前5行: pbpaste | head -n 5
显示剪切板中文本的后5行: pbpaste | tail -n 5

显示终端输入历史: history
将文件转成HTML,支持格式包括Text,RTF,DOC: textutil -convert html file.extension
Nano是一个比vim弱的文本编辑器,但是很方便,其中ctrl+o来保存,ctrl+x为退出。
清除终端显示内容: clear

Mac使用技巧

control+command+space 可以输入emoji,图片字符,特殊符号(使用率较高)
输入不认识的字的各个部分,然后按shift+空格
把鼠标移到dock栏的一个图标上,然后在magic mouse上用一个手指轻触两下,就会显示这个程序正在运行的窗口~(全屏运行和最小化的除外)
去格式粘贴:cmd+option+shift+v
显示文件信息: MDLS+文件名 File+文件名
截屏:shift+cmd+3 截全屏 shift+cmd+4 截鼠标选择 shift+ctrl+cmd+3 shift+ctrl+cmd+4 保存到剪切板中
检查文件md5: md5 文件名
看网页或者文本的时候按一下方向键,指针就消失了。按 Tab 键也能变相实现。
“打印”选项(CMD+P)可以把网页、文本、图片等存储为 PDF 格式
『1/4进度调整音量和亮度』按F10/F11或者F1/F2的时候同时按住CMD+Shift
不想用第三方下载器下载东西,那就 CMD+C 链接,在 Safari 下载窗口里CMD+V
Option+点击Dock上的图标,可打开此程序或文件夹所在的目录。
想快速找到当前 Finder 窗口下的某个文件,直接键盘打它首字母即可,想更精确?快速打前几个字母,甚至是支持汉字的,用中文输入法的可以试下。
“移到废纸篓”的快捷键是 CMD+Del ,那在“废纸篓”里“放回原处”的快捷键是什么呢?还是 CMD+Del
光标在地址栏的前提下,CMD+Del 可直接清空地址栏,我之前一直用的 CMD+L ,再 Del 的。
OS X 的第二套剪切/粘贴的快捷键』Control+KControl+Y 。它其实是命令行快捷键,它不会改写剪切板中已经存在的内容,而且剪切走的内容只能粘贴出纯文本,不附加多余的样式。多用于 Markdown 编辑软件,比如Mou,VIM等,OS X内置的“文本编辑”和“终端”也可用这套快捷键,不支持 Pages,Word。
『移动文件』CMD+C 复制文件,在目标目录 CMD+Option+V,就把原文件移动过来了,相当于剪切粘贴。
不同磁盘间拖动文件,Finder 会默认复制一份过去,按住 CMD+拖动,可实现不复制直接移动。
按住 CMD+Option+拖到文件,可快速“制作替身”。
按住Option+拖到文件,可快速复制一份原文件。
在预览里选择导出格式时候,按 Option 点开会出现更多格式。
两个同名文件夹,按住 Option 拖动才会出现“合并”选项,否则只能“替换”。
『如何打出带声调的字母』在“美国英文”输入法下面,一直按下键盘上部分单个英文字母即可。
Option+双击文件夹,强制本窗口打开文件夹。
CMD+双击文件夹,强制新窗口打开文件夹。
Mac下的反向Tab:Option+Shift+Tab
CMD+Tab和CMD+`可正向反向切换后台,同时按 CMD+Q 或者 CMD+H 可配合关闭、隐藏应用程序。
预览中按“`”(1左边那个)可调出放大镜。
Option+右键文件可快速更改默认打开方式。
Photo Booth 自拍,按住Option不读秒。
Finder的“前往”菜单里,按住 Option 才会显示用户名的资源库。
iTunes下,按住 Option 点加号按钮是最大化,非全屏,重复操作,恢复大小。
Control+左键点击相当于右键。
在系统偏好设置-显示器的面板下,按住 Option 可出现“检测显示器”的选项。
一直按着 Option+CMD 启动系统偏好设置(如果之前已经启动,请关掉再试),然后进显示器面板,会多了“旋转”选项。
『把iMac当外界显示器』CMD+F2,进入/离开 iMac 的 Target Display 即外界显示器模式。实测 21、27均可,而不是官方宣称的只有27才支持。
在“桌面与屏幕保护程序”面板下,可以直接把当前壁纸拖出来。
Mac键盘没有Home、End、PgUp、PgDn等按钮,有时候要跳转到行开始或结尾一下下按很麻烦,可以使用command+左右上下方向键来实现,选取内容可以使用command+shift+左右上下方向键实现。
command+option+v 粘贴并移动复制的内容,按住command +delete 可以删除一整行。
optiion+F11打开声音设置,option+F1打开显示设置等等等…
通过Command+Tab键调出切换窗口,选中应用后不要松开Command,按Option,再松开所有键,即可将最小化的应用程序窗口也显示出来。
只显示当前窗口,隐藏其他窗口:command+option+H
在截屏的时候,按一下空格键,可以只截屏幕上的某一个窗口。
Mac下面观看图片的时候,不能像win下面一样选择下一张图片的时候,先command+A选择全部的图片,再按enter键就可以一张一张观看了。
按住Finder对话框顶部或者是Finder里任意的文件夹图标,拖动到Terminal终端命令行窗口,可以直接粘贴目录路径。
Terminal终端命令行窗口输入 open .,用Finder打开当前目录。
在终端里输入syslog | grep -i "Wake reason" 查看休眠时做了什么。
查看多个文件占用的容量 ctrl + command + i
把多个文件归类到一个文件夹中:选中你想要的文件 按control+command+n

Mac brew软件

brew install screenfetch

1

brew install screen

可以断线保持连接的ssh工具

brew install tmux
一样可以断线保持连接,相比较screen,tmux可以支持横屏纵屏划分shell屏幕

hdiutil convert -format UDRW -o xxx xxx.iso
转换iso文件为img

命令行更新软件
softwareupdate -i -a

或者安装小工具
brew install mas mas list mas help


osx下使用tmux+powerline

Tmux的安装配置:

osx下安装:

brew install tmux  

关于tmux的说明:

tumx能支持的功能非常强大,类似screen的保持连接功能,分割多个窗口使用多个shell等等,太复杂的我也搞不定,貌似这个配置不太难吧。

tmux的三个元素分别为:

  • Session 一组窗口的集合,通常用来概括同一个任务。session可以有自己的名字便于任务之间的切换。
  • Window 单个可见窗口。Windows有自己的编号,也可以认为和ITerm2中的Tab类似。
  • Pane 窗格,被划分成小块的窗口,类似于Vim中 C-w +v 后的效果。

tumx的前缀快捷键默认为ctrl+b,也就是说所有的快捷功能,都需要先按下ctrl+b,然后再按相应的键,好像翻译过来叫前置快捷键吧,英文是<prefix>

安装powerline::

安装之前有个提示,让我升级了pip,因为这玩意是python写的,所以起嘛升级python2到最新版本吧。

pip install --upgrade pip  
// 升级pip  

pip install --user powerline-status  

官方的powerline说明文档在这里

tmux的基本操作

Prefix-Command前置操作:所有下面介绍的快捷键,都必须以前置操作开始。tmux默认的前置操作是Ctrl+b。例如,想新建一个窗体,就需要先在键盘上按下Ctrl+b,松开后再按下n键。

下面所有的prefix均代表ctrl+b

Session相关操作

操作

Ctrl+b 激活控制台:此时以下按键生效
? 列出所有快捷键:按q返回
d 脱离当前会话:这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话
D 选择要脱离的会话;在同时开启了多个会话时使用
Ctrl+z 挂起当前会话
r 强制重绘未脱离的会话
s 选择并切换会话;在同时开启了多个会话时使用
: 进入命令行模式;此时可以输入支持的命令,例如kill-server可以关闭服务器
[ 进入复制模式;此时的操作与vi/emacs相同,按q/Esc退出
~ 列出提示信息缓存;其中包含了之前tmux返回的各种提示信息
c 创建新窗口
& 关闭当前窗口
数字键 切换至指定窗口
p 切换至上一窗口
n 切换至下一窗口
l 在前后两个窗口间互相切换
w 通过窗口列表切换窗口
, 重命名当前窗口;这样便于辨识
. 修改当前窗口编号;相当于窗口重新排序
f 在所有窗口中查找指定文本
将当前面板平分为上下两块
% 将当前面板平分为左右两块
x 关闭当前面板
! 将当前面板置于新窗口;即新建一个窗口,其中仅包含当前面板
Ctrl+方向键 以1个单元格为单位移动边缘以调整当前面板大小
Alt+方向键 以5个单元格为单位移动边缘以调整当前面板大小
Space 在预置的面板布局中循环切换;依次包括even-horizontal、even-vertical、main-horizontal、main-vertical、tiled
q 显示面板编号
o 在当前窗口中选择下一面板
方向键 移动光标以选择面板
{ 向前置换当前面板
} 向后置换当前面板
Alt+o 逆时针旋转当前窗口的面板
Ctrl+o 顺时针旋转当前窗口的面板

tmux的一些个性化定制

做一些美化和个性配置,可以使用gpakosz的tmux配置

	$ cd  
	$ rm -rf .tmux  
	$ git clone https://github.com/gpakosz/.tmux.git  
	$ ln -s .tmux/.tmux.conf  
	$ cp .tmux/.tmux.conf.local .    

安装完成以后的效果:

关于这个配置文件改变的东西:

	bind -r h select-pane -L  # move left
	bind -r j select-pane -D  # move down
	bind -r k select-pane -U  # move up
	bind -r l select-pane -R  # move right
	//窗口的左下上右绑定为hjkl  
	
	bind -r H resize-pane -L 2
	bind -r J resize-pane -D 2
	bind -r K resize-pane -U 2
	bind -r L resize-pane -R 2
	//窗口的移动左下上右绑定为大写的HJKL

为Bash配置powerline ===

通过pip show powerline-status命令,获得powerline的安装位置,比如我的:/Users/root/Library/Python/2.7/lib/python/site-packages/powerline/bindings/bash/powerline.sh

将以下配置保存到~/.bash_profile中:

	if [ -d "$HOME/Library/Python/2.7/bin" ]; then
    PATH="$HOME/Library/Python/2.7/bin:$PATH"
	fi  
	export PATH="$HOME/.local/bin:$PATH"
	export POWERLINE_COMMAND=powerline
	export POWERLINE_CONFIG_COMMAND=powerline-config
	powerline-daemon -q
	POWERLINE_BASH_CONTINUATION=1
	POWERLINE_BASH_SELECT=1
	. /Users/root/Library/Python/2.7/lib/python/site-packages/powerline/bindings/bash/powerline.sh 

为Mac OS X的ls弄上颜色,最简单的办法是在~/.bash_profile中添加一行代码:export CLICOLOR=1

以上配置我参考了很多网上的答案,因为我的机器默认情况下由于path问题无法正常运行,加上上面的配置就ok了,特此记录下来。

Teriminal字体配置

配置好以后在bash中中文会出现错误的符号,这时候需要安装字体:

	git clone https://github.com/powerline/fonts.git  
	cd fonts  
	./install.sh  

安装完成后可以在Terminal中的字体选项看到安装的字体了xxx for powerline

tmux基本配置

tmux动态载入配置

编辑根目录的 .tmux.conf文件,添加:

bind r source-file ~/.tmux.conf \; display-message "Config reloaded"  
//绑定prefix r为刷新tmux配置  

鼠标切换窗格 (暂时没成功)

setw -g mode-mouse on
set -g mouse-select-pane on
set -g mouse-resize-pane on
set -g mouse-select-window on

常用

tmux 开启tmux
tmux ls 列出会话 (tmux list-session)
tmux attach Tmux重新连接之前的窗口可使用
tmux attach -t session 进入某个会话
tmux -r 连接上次断开的session
tmux kill-session 关闭上次tmux打开的窗口
tmux kill-server 关闭所有tmux打开的窗口

tmux常用配置说明:

vi .tmux.conf

#此类配置可以在命令行模式中输入show-options -g查询
set-option -g base-index 1                        #窗口的初始序号;默认为0,这里设置为1
set-option -g display-time 5000                   #提示信息的持续时间;设置足够的时间以避免看不清提示,单位为毫秒
set-option -g repeat-time 1000                    #控制台激活后的持续时间;设置合适的时间以避免每次操作都要先激活控制台,单位为毫秒
set-option -g status-keys vi                      #操作状态栏时的默认键盘布局;可以设置为vi或emacs
set-option -g status-right "#(date +%H:%M' ')"    #状态栏右方的内容;这里的设置将得到类似23:59的显示
set-option -g status-right-length 10              #状态栏右方的内容长度;建议把更多的空间留给状态栏左方(用于列出当前窗口)
set-option -g status-utf8 on                      开启状态栏的UTF-8支持
 
#此类设置可以在命令行模式中输入show-window-options -g查询
set-window-option -g mode-keys vi    #复制模式中的默认键盘布局;可以设置为vi或emacs
set-window-option -g utf8 on         #开启窗口的UTF-8支持
 
#将激活控制台的快捷键由Ctrl+b修改为Ctrl+a
set-option -g prefix C-a
unbind-key C-b
bind-key C-a send-prefix
 
#添加自定义快捷键
bind-key z kill-session                     #按z结束当前会话;相当于进入命令行模式后输入kill-session
bind-key h select-layout even-horizontal    #按h将当前面板布局切换为even-horizontal;相当于进入命令行模式后输入select-layout even-horizontal
bind-key v select-layout even-vertical      #按v将当前面板布局切换为even-vertical;相当于进入命令行模式后输入select-layout even-vertical1

Ubuntu设置

###Ubuntu14/15配置:

新建用户:

adduser uuair
sudo vi /etc/sudoers

添加sudo权限

name ALL=(ALL:ALL) ALL  

升级系统

apt-get update & apt-get upgrade  

设置ssh
ssh需要设置两方面,修改默认端口以及keys登陆方式:

vi /etc/ssh/sshd_config  

修改一下几个地方:

Port 22  #这里可以修改成任意端口号  
PermitRootLogin yes 改为no  #禁止root登录  

ssh服务命令:

sudo /etc/init.d/ssh stop  
sudo /etc/init.d/ssh start  
sudo /etc/init.d/ssh restart  

设置证书登录:
在服务器上执行:

ssh-keygen  

一路回车后来到客户机上执行:

cd ~/.ssh  
scp id_rsa.pub name@xxx.xxx.xxx.xx~/.ssh/id_rsa.pub1  
cat id_rsa.pub1 >> authorized_keys  
chmod 700 authorized_keys  

后面再登录,就可以不用输入密码了。如果禁止密码登录,则修改/etc/ssh/sshd_config这里的:

PasswordAuthentication 更改为no   最后重启ssh。

设置防火墙

whereis iptables #查看系统是否安装了防火墙
apt-get install iptables 		#如果没有安装  
iptables -L 		#查看防火墙配置信息  
vi /etc/iptables.rules

添加以下内容:

*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]  
:OUTPUT ACCEPT [0:0]
:syn-flood - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -p icmp -m limit --limit 100/sec --limit-burst 100 -j ACCEPT
-A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j syn-flood
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A syn-flood -p tcp -m limit --limit 3/sec --limit-burst 6 -j RETURN
-A syn-flood -j REJECT --reject-with icmp-port-unreachable
COMMIT
iptables-restore < /etc/iptables.rules

#使防火墙规则生效

vi /etc/network/if-pre-up.d/iptables
*#创建文件,添加以下内容:  
#!bin/bash  
iptables-restore < /etc/iptables.rules  
chmod +x /etc/network/if-pre-up.d/iptables

*#添加执行权限

iptables -L -n 查看规则是否生效

关闭icmp请求:
临时关闭

sysctl -w net.ipv4.icmp_echo_ignore_all=1
sysctl -p  

临时开启:

sysctl -w net.ipv4.icmp_echo_ignore_all=0
sysctl -p  

永久保留:

vi /etc/sysctl.conf
net.ipv4.icmp_echo_ignore_all=1  

安装shadowsocks

apt-get install python-setuptools && easy_install pip
pip install shadowsocks  
vi /etc/shadowsocks.json

创建以下文件内容:

{ 
"server":"101.102.103.104",   
"server_port":3288,   
"local_address": "101.102.103.104",   
"local_port":3289,   
"password":"fuckthegfw",   
"timeout":600,   
"method":"aes-256-cfb",   
"fast_open": false,   
"pid-file":"/var/run/shadowsocks_s.pid"   
}

后台运行命令:

ssserver -c /etc/shadowsocks.json -d start #运行
ssserver -c /etc/shadowsocks.json -d stop #停止

或者直接运行:

ssserver -c /etc/shadowsocks.json

设置开机启动:

whereis ssserver  

我的显示文件在/usr/local/bin/ssserver这里,编辑/etc/rc.local文件

sudo vi /etc/rc.local   #编辑rc.local文件  
# 在exit前面加入下面一行  
# /usr/local/bin/ssserver -c /etc/shadowsocks.json -d start  

保存重启搞定!

搭建ghost博客

wget http://dl.ghostchina.com/Ghost-0.7.0-zh-full.zip    
unzip -uo Ghost-0.7.0-zh-full.zip -d ghost
sudo apt-get install curl -y  
curl -sL https://deb.nodesource.com/setup_0.12 | sudo -E bash -   
sudo apt-get install nodejs -y 
sudo apt-get install nodejs-legacy #如果出现path问题,比如/usr/bin/env找不到,就安装这个 
cd ghost  
npm install --production  

上面一系列的命令,安装了nodejs以及ghost。

sudo npm install forever -g  

通过forever让ghost在后台一直运行,其中forever的控制命令有:

NODE_ENV=production forever start index.js  
forever stop index.js  
forver list  

然后通过nginx发布网站:

sudo apt-get install nginx -y  

以下的配置跟centos不同
配置nginx:

sudo vi /etc/nginx/sites-available/ghost.conf  

server {
    listen 80;
    server_name example.com;

location / {
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   Host      $http_host;
    proxy_pass         http://127.0.0.1:2368;

修改server-name为自己的域名

软连接到sites-enabled目录下:

sudo ln -s /etc/nginx/sites-available/ghost.conf /etc/nginx/sites-enabled/ghost.conf  
sudo service nginx restart  
sudo systemctl enable nginx.service #ubuntu15
sudo systemctl restart nginx.service #ubuntu15

安装mysql

sudo apt-get install mysql-server mysql-client  
sudo mysql_secure_installation  
mysql -uroot -p -e 'create database ghost;'   

安装pptp

sudo apt-get update  
sudo apt-get install pptp   

编辑pptp.conf文件

 sudo vi /etc/pptpd.conf  

在当前文件写入以下配置:

 option /etc/ppp/options.pptpd
 logwtmp
 localip 192.168.2.1
 remoteip 192.168.2.10-100
 END

注:如果出现vpn连接错误Plugin /usr/lib/pptpd/pptpd-logwtmp.so is for pppd version 2.4.5, this is 2.4.6,可以注释掉logwtmp参数,就可以解决。
注2:如果无法访问网络,还可以尝试将localip这里的参数,写上外网的参数

编辑pptpd-option文件

name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
lock
nobsdcomp 
novj
novjccomp
nologfd
END

增加路由转发

vi /etc/sysctl.conf  
#添加如下参数:  
net.ipv4.ip_forward=1  
#退出保存后立即生效  
sysctl -p  

修改iptables NAT转发:

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE  

设置MTU:

iptables -I FORWARD -s 192.168.2.0/24 -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1300  

保存iptables的设置:

iptables-save > /etc/iptables/iptables.rules 

iptables设置开机加载到网卡配置中

vi /etc/network/interfaces    
pre-up iptables-restore < /etc/iptables.rules   

增加vpn用户名

vi /etc/ppp/chap-secrets  

test * password *  

中间用tab隔开,test是用户名,password是密码,中间两个*号。

systemctl restart pptpd  

设置完毕


—  原创作品许可 — 署名-非商业性使用-禁止演绎 3.0 未本地化版本 — CC BY-NC-ND 3.0   —