Linux常用命令用法总结

记录一些常用的linux命令用法,以备查询。

文件管理

校验文件

下载的文件最好校验完整性,防止被人篡改。以sha256sum为例:

1
2
3
4
5
6
7
8
9
# 以下命令将生成树莓派映像的sha256哈希码,从树莓派官网复制该映像sha256哈希码,以便校验。
# 当然通常应该会提供映像的哈希码校验文件。

sha256sum 2018-10-09-raspbian-stretch.zip >2018-10-09-raspbian-stretch.zip.sha256sum

# 使用下面校验文件的完整性,如果成功则映像与官方一致,未被篡改。
# 注意被校验文件与校验文件应放在同一个目录。

sha256sum -c 2018-10-09-raspbian-stretch.zip.sha256sum

转换和复制文件命令

Linux的dd命令用于复制文件并对原文件的内容进行转换和格式化处理。

1
2
3
4
5
6
7
8
9
10
11
读指定物理扇区:
dd if=<源设备> of=<输出设备或文件> skip=<指定扇区值> bs=512 count=1

写指定物理扇区:
dd if=<输入设备或文件> of=<输出设备> seek=<指定扇区值> bs=512 count=1

读取sd启动扇区示例:
dd if=/dev/mmcblk0 of=mbrsd.data bs=512 count=1

制作光盘iso镜像
dd if=/dev/cdrom of=/home/hch/drone.iso status=progress conv=fsync

查找文件

1
2
3
4
5
# find基本语法:find [PATH] [option] [action]

find /usr/lib -name libQt5Xml.so
# 使用通配符
find /usr/lib -name "*ssl*"

查找文件内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# grep基本用法:
grep "let's find something" file.[txt,json,js,md,etc]

# 大小写不敏感搜索
grep -i "REact" compiler/apps/playground/app/index.tsx
grep -i "Operation not supported on socket" system.log

# 多模式搜索
grep -e "error" -e "404" system.log

# 统计字符串匹配次数
grep -c "React" compiler/apps/playground/app/index.tsx

# 文件夹递归搜索,-o 仅输出匹配行,-r 递归搜索目录及其子目录
grep -o -r "fs" node_modules | wc -l

批量处理指定文件

1
2
3
4
5
6
7
8
# Find all .txt files and delete them
find . -name "*.txt" | xargs rm

# Creates each directory listed in the file.
cat dirs.txt | xargs mkdir

# Compresses all .log files in the current directory
ls *.log | xargs gzip

批量转换文件格式

1
2
3
4
5
6
7
# 将png格式图像转换为jpg
# -1 – 告诉 ls 每行列出一个图像名称的选项标识
# -n – 指定最多参数个数,例子中为 1
# -c – 指示 bash 运行给定的命令
# ${0%.png}.jpg – 设置新转换的图像文件的名字,% 符号用来删除源文件的扩展名

ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.png}.jpg"'

终端下载

1
2
3
4
5
6
7
8
9
10
11
12
# 逐条下载uri.txt文件中每一行uri
wget -i uri.txt

# 跳过前1000条再下载
awk 'NR>=1000' url.txt | wget -i -

# install proxy
wget --no-check-certificate https://raw.githubusercontent.com/jwchenzju/teddysunss/master/shadowsocks.sh

chmod +x shadowsocks.sh

./shadowsocks.sh 2>&1 | tee shadowsocks.log

终端中打开文件管理器

1
2
使用gnome文件管理器打开当前文件夹
nautilus ./

统计

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 统计文件行数
wc -l file

统计某文件夹下文件的个数
ls -l |grep "^-"|wc -l

统计某文件夹下目录的个数
ls -l |grep "^d"|wc -l

统计文件夹下文件的个数,包括子文件夹里的
ls -lR|grep "^-"|wc -l

# 统计文件或文件夹大小
du -a -h -d 1 ./

# 统计文件状态信息
stat file.txt

压缩和解压文件

1
2
3
4
5
6
7
# tar命令
tar zxvf FileName.tar #解压
tar czvf FileName.tar DirName #压缩

# zip命令
unzip FileName.zip #解压
zip -r FileName.zip DirName #压缩

SSH 连接、远程上传下载文件

1
2
3
4
5
6
7
8
9
10
11
# SSH 远程登入 Ubuntu 机 
ssh username@192.168.0.1

# 将 文件/文件夹 从远程 Ubuntu 机拷至本地(scp)
scp -r username@192.168.0.1:/home/username/remotefile.txt remotefile.txt

# 将 文件/文件夹 从本地拷至远程 Ubuntu 机(scp)
scp -r localfile.txt username@192.168.0.1:/home/username/

# rsync大文件断电续传,远程服务器需安装rsync
rsync -P --rsh=ssh root@192.168.0.1:/root/fgdata.tar fgdata.tar

系统管理

修改用户

1
2
# 将用户$USER添加到dialout用户组,以获取串口访问权限
sudo usermod -a -G dialout $USER

特殊符号用法

1
2
3
4
5
6
7
8
9
#| 管道 (pipeline),是 UNIX 系统,基础且重要的观念。连结上个指令的标准输出,做为下个指令的标准输入。
who | wc -l

#! 惊叹号(negate or reverse),通常它代表反逻辑的作用,譬如条件侦测中,用 != 来代表"不等于"
#下例代表显示除了a0, a1 .... a9 这几个文件的其他文件。
ls a[!0-9]

#& 后台工作,单一个& 符号,且放在完整指令列的最后端,即表示将该指令列放入后台中工作。
tar cvfz data.tar.gz data > /dev/null &

系统服务管理

1
2
3
4
5
# service命令用于对系统服务进行管理,比如启动(start)、停止(stop)、重启(restart)、查看状态(status)等。
# service命令本身是一个shell脚本,它在/etc/init.d/目录查找指定的服务脚本,然后调用该服务脚本来完成任务。

# 查看系统所有服务状态
service --status-all

查询本机公网IP

1
2
curl ifconfig.me
curl ipinfo.io

查看环境变量

1
export

查看端口占用情况

1
2
3
4
5
6
7
8
lsof -i:8080:查看8080端口占用

netstat -tunlp | grep 端口号
-t (tcp) 仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在Listen(监听)的服务状态
-p 显示建立相关链接的程序名

Vim使用方法

  • 正向搜索字符串

在普通模式下,按下 / 键,然后输入你要查找的字符串,最后按下 Enter 键。

1
/function
  • 反向搜索字符串

与正向查找相似,使用 ? 键进行反向查找。

1
?error
  • 替换字符串

在命令模式下,替换字符串。

1
:%s/apple/orange/gc

参考链接

  1. 初窥Linux 之 我最常用的20条命令,by ljianhui.
  2. Linux的五个查找命令,by 阮一峰.
  3. shell脚本中一些特殊符号, by 阿笨猫.
  4. vultr proxy
  5. proxychains配置,by Verne.
  6. 10 Essential Terminal Commands Every Developer Should Know,by Trevor I. Lasn.
  7. Vim 查找字符串(超详细),by quanxiaoha.