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

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

查询本机公网IP

1
2
curl ifconfig.me
curl ipinfo.io

压缩和解压文件

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. 初窥Linux 之 我最常用的20条命令,by ljianhui.
  2. Linux的五个查找命令,by 阮一峰.
  3. shell脚本中一些特殊符号, by 阿笨猫.
  4. vultr proxy
  5. proxychains配置,by Verne.