Shell 常用操作技巧
创建日期:2015-03-30 17:27 修改日期:2018-02-07 22:06:38

对输出文件进行各种排序

ls -ltr

按照字符序(default)

ls -l

按照修改时间排序

最近修改在最上面

ls -t

逆排序

ls -r

Linux下查看文件和文件夹大小

df可以查看一级文件夹大小、使用比例、档案系统及其挂入点,但对文件却无能为力。

du可以查看文件及文件夹的大小。

df 命令可以显示目前所有文件系统的可用空间及使用情形

df -h

du 查询文件或文件夹的磁盘使用空间

du -h --max-depth=1 work/testing

删除当前文件夹下所有 .DS_Store._.DS_Store

find ./ -name "*.DS_Store" -depth -exec rm {} \;

推荐方法

find ./ -name "*.DS_Store" -depth -delete

查看 Linux 版本系统信息

查看版本当前操作系统内核信息

uname a

查看当前操作系统版本信息

cat /proc/version

查看版本当前操作系统发行版信息

cat /etc/issue

cat /etc/redhat-release

查看 CPU 相关信息,包括型号、主频、内核信息等

cat /proc/cpuinfo

查看版本说明当前 CPU 运行在 32bit 模式下, 但不代表 CPU 不支持64bit

getconf LONG_BIT

查看现在使用的是哪一个 shell

echo $0

修改 login shell

chsh

快速返回到上一个目录

有时候移到一个目录, 想直接返回去

cd -

关于 export C

建议在脚本开始处加上 export C,且如果 man 手册乱码,也可以:

export C man xxx

查看本机最常用的 10 条命令

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

获取一个字符串的长度

三种方法:

len `expr length $str`

echo ${str} | wc -L

echo ${str} # 推荐

统计当前目录下(包括子目录)以 .py 结尾文件的个数及总代码行数

文件个数:

find . -name "*.py" | wc -l

单个文件代码行数及总行数:

find . -name "*.py" | xargs wc -l

输出错误重定向

ls 1>/dev/null 2>/dev/null
ls >/dev/null 2>&1

Show number of connections per remote IP

netstat -antu | awk '$5 ~ /[0-9]:/{split($5, a, ":"); ips[a[1]]++} END {for (ip in ips) print ips[ip], ip | "sort -k1 -nr"}'

以 root 身份执行上一条命令

sudo !!

开启一个 Web 服务器(传输)

python -m SimpleHTTPServer

vim 里强制保存

有时候, 一些文件编辑后, 才发现只有root可写

:w !sudo tee %

替换上条命令的关键字并执行

将上一条命令的 ping 换成 traceroute

^ping^traceroute^

复制一个备份文件

有时候, 为了测试, 为防止意外, 可能需要把 filename 在备份一个 filename.bak

cp filename{,.bak}

搜索最近一条符合关键字的命令

比如上面执行过命令是 ping example.com, 想再执行, 可以

!p

p是关键字, 也可以 pi, pin, ping都行

给远程机器添加公钥认证

ssh-copy-id user@host

ssh-copy-id 会自动把公钥添加到 ~/.ssh/authorized_keys 末尾。

如果 ssh-add -L 里面有内容,会优先使用里面的公钥; 其次,可以用 -i 指定要添加的公钥,最后会用默认的 ~/.ssh/id_rsa.pub

MacOS 默认没有 ssh-copy-id 命令, 使用 brew install ssh-copy-id 安装

快速清空 arp 缓存表

for a in `arp | grep "eth1" | cut -d " " -f1`; do arp -d $a; done

检查硬盘是 HDD 还是 SSD

cat /sys/block/sda/queue/rotational

输出 1 则是 HDD, 输出 0 则是 SSD

踢用户

pkill -kill -t pts/2

Linux 上对图片进行压缩

Linux上对图片进行压缩

Linux系统下批量压缩图片尺寸大小的方法