https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.mdnode
详见emacs 内置教程python
cat < in.txt
echo "123" > out.txt
cmd 2>error.txt
cmd 1>out.txt 2>err.txt
cmd >out_err.txt 2>&1
$ command > /dev/null 2>&1
密码登陆 ssh -p port username@webserverip
密钥登陆 ssh -i ~/.ssh/id_rsa_1 username@webserverip
利用ssh-keygen 生成密钥对,公密: ../.ssh/id_rsa.pub 私密:../.ssh/id_rsa 将公密放到服务器linux
ssh 配置文件 etc/ssh/sshd_config 设置端口,设置是否容许密码登陆、是否须要进行密钥验证等ios
Port 32200 RSAAuthentication yes PubkeyAuthentication yes
less、 head、tail、 tail -f、 ln 和 ln -s 、chown、 chmod、 du 、df 、fdisk 、mkfs、 lsblk ,inode
ln 硬链接
ln -s 软链接git
ifconfig 查看网络内容,启动或者关掉网卡,修改网络ip,修改mac地址功能github
使用 netstat -lntp
或ss -plat
检查哪些进程在监听端口(默认是检查 TCP 端口; 添加参数 -u 则检查 UDP 端口)
或者 lsof -iTCP -sTCP:LISTEN -P -n
web
netstst部分参数正则表达式
查看结果以下:shell
# netstst -lntp | grep 32200 tcp 0 0 0.0.0.0:32200 0.0.0.0:* LISTEN 492/sshd
字段 | 含义 |
---|---|
COMMAND | 进程名称 |
PID | 进程标识符 |
USER | 进程全部者 |
FD | 文件描述符 |
TYPE | 文件类型 |
DEVICE | 指定磁盘名称 |
SIZE | 文件大小 |
NODE | 索引节点(文件在磁盘的标识) |
NAME | 打开文件的确切名称 |
lsof -i:8080 #查看8080端口占用 lsof abc.txt #显示开启文件abc.txt的进程 lsof -c abc #显示abc进程如今打开的文件 lsof -c -p 1234 #列出进程号为1234的进程所打开的文件 lsof -g gid #显示归属gid的进程状况 lsof +d /usr/local/ #显示目录下被进程开启的文件 lsof +D /usr/local/ #同上,可是会搜索目录下的目录,时间较长 lsof -d 4 #显示使用fd为4的进程 lsof -i -U #显示全部打开的端口和UNIX domain文件
# do something in current dir (cd /some/other/dir && other-command) # continue in original dir
mv foo.{txt,pdf} some-dir #同时移动两个文件 cp somefile{,.bak} #会被扩展成 cp somefile somefile.bak# mkdir -p test-{a,b,c}/subtest-{1,2,3} #会被扩展成全部可能的组合,并建立一个目录树
python -m SimpleHTTPServer 7777 (使用端口 7777 和 Python 2) python -m http.server 7777 (使用端口 7777 和 Python 3)
在当前路径下查找 find . -name '*something*'
在全部路径下经过文件名查找文件,使用locate something
`缓存
- -b 忽略每行前面开始出的空格字符。 - -c 检查文件是否已经按照顺序排序。 - -d 排序时,处理英文字母、数字及空格字符外,忽略其余的字符。 - -f 排序时,将小写字母视为大写字母。 - -i 排序时,除了040至176之间的ASCII字符外,忽略其余的字符。 - -m 将几个排序好的文件进行合并。 - -M 将前面3个字母依照月份的缩写进行排序。 - -n 依照数值的大小排序。 - -u 意味着是惟一的(unique),输出的结果是去完重了的。 - -o<输出文件> 将排序后的结果存入指定的文件。 - -r 以相反的顺序来排序。 - -t<分隔字符> 指定排序时所用的栏位分隔字符。 - +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。 - --help 显示帮助。 - --version 显示版本信息。
- -c或--count 在每列旁边显示该行重复出现的次数。 - -d或--repeated 仅显示重复出现的行列。 - -f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。 - -s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。 - -u或--unique 仅显示出一次的行列。 - -w<字符位置>或--check-chars=<字符位置> 指定要比较的字符。 - --help 显示帮助。 - --version 显示版本信息。 - [输入文件] 指定已排序好的文本文件。若是不指定此项,则从标准读取数据; - [输出文件] 指定输出的文件。若是不指定此选项,则将内容显示到标准输出设备(显示终端)
awk -F ':' {pattern + action}' {filenames}
其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令,-F 指定划分的分隔符,默认是空格
变量 | 含义 |
---|---|
ARGC | 命令行参数个数 |
ARGV | 命令行参数排列 |
ENVIRON | 支持队列中系统环境变量的使用 |
FILENAME | awk浏览的文件名 |
FNR | 浏览文件的记录数 |
FS | 设置输入域分隔符,等价于命令行 -F选项 |
NF | 浏览记录的域的个数,列数 |
NR | 已读的记录数,行数 |
OFS | 输出域分隔符 |
ORS | 输出记录分隔符 |
RS | 控制记录分隔符 |
变量$0表示整条记录,$1表示当前行的第一个域 $2表示当前行的第二个域 一次类推
cat /etc/passwd | awk -F ':' '{print $1}' #显示分割后的第一列
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明:
-e 以选项中指定的script来处理输入的文本文件。
-f 以选项中指定的script文件来处理输入的文本文件。
-h或--help 显示帮助。
-n或--quiet或--silent 仅显示script处理后的结果。
-V或--version 显示版本信息。
动做说明:
a :新增, a 的后面能够接字串,而这些字串会在新的一行出现(目前的下一行)
c :取代, c 的后面能够接字串,这些字串能够取代 n1,n2 之间的行
d :删除,由于是删除啊,因此 d 后面一般不接任何咚咚
i :插入, i 的后面能够接字串,而这些字串会在新的一行出现(目前的上一行)
p :打印,亦即将某个选择的数据印出。一般 p 会与参数 sed -n 一块儿运行
s :取代,能够直接进行取代的工做哩!一般这个 s 的动做能够搭配正规表示法
# 将文件、目录和内容所有重命名 foo -> bar: repren --full --preserve-case --from foo --to bar . # 还原全部备份文件 whatever.bak -> whatever: repren --renames --from '(.*)\.bak' --to '\1' *.bak # 用 rename 实现上述功能(若可用): rename 's/\.bak$//' *.bak
例如: getfacl -R /some/path > permissions.txt setfacl --restore=permissions.txt
sort a b | uniq > c # c 是 a 并 b sort a b | uniq -d > c # c 是 a 交 b sort a b b | uniq -u > c # c 是 a - b
$ ls hosts out.txt| head -100 * ==> hosts <== 192.168.15.1 192.168.15.1 awdd my name is mike hello i am a teacher what a stupid gay,fuck! ==> out.txt <== out.txt hosts
find . -type f -ls
awk '{ x += $3 } END { print x }' myfile