记录一些常用的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 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 键。
与正向查找相似,使用 ? 键进行反向查找。
在命令模式下,替换字符串。
参考链接
- 初窥Linux 之 我最常用的20条命令,by ljianhui.
- Linux的五个查找命令,by 阮一峰.
- shell脚本中一些特殊符号, by 阿笨猫.
- vultr proxy
- proxychains配置,by Verne.
- 10 Essential Terminal Commands Every Developer Should Know,by Trevor I. Lasn.
- Vim 查找字符串(超详细),by quanxiaoha.