Linux 常用命令备忘
Summary of Common Linux commands
1 linux 和 unix 的区别
2 musl 和 glibc 的区别
musl 和 glibc 都是 Linux 的标准库,区别是 musl 是一个 mini 版本,或是叫做基于 glibc 的库,而 glibc 是一个完整版本。
3 ubuntu
3.1 获取系统代号
lsb_release -cs
3.2 内核版本信息
uname -a
# 或者
cat /proc/version
4 lsb_release
LSB 是 Linux 标准库的缩写, lsb_release
命令 用来与具体 Linux 发行版相关的 Linux 标准库信息。
CentOS 最小化安装时默认没有这个命令,需要安装 lsb_release 使用命令,👇以下是常见系统的安装 lsb_release 命令。
4.1 Ubuntu, Debian
sudo apt-get update && sudo apt-get install lsb-core
4.2 CentOS
sudo yum update && sudo yum install redhat-lsb-core
4.3 Fedora
sudo dnf update && sudo dnf install redhat-lsb-core
4.4 参数
-v
:显示与你 Linux 发行版相对应的 Linux 版本库描述信息。Linux 版本库模块描述使用冒号:
分分隔-i
:显示该 Linux 系统的发行商-d
:显示 Linux 发行版描述信息-r
:显示当前 Linux 发行版版本号-c
:显示当前 Linux 发行版代号-a
:显示全部信息,包括 LSB、版本号、代号、版本描述信息
5 常用命令
以下命令都是笔者在工作中用到过的,因为不是专业的 shell 工程师,所以便通过笔记记录下来防止忘记。
5.1 cut
cut
命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
-d
:自定义分隔符,默认为制表符。-f
:与-d
一起使用,指定显示哪个区域。
5.2 grep
grep -v name # 表示查看除了含有name之外的行内容
5.3 curl
curl -o /dev/null -s -w %{http_code} https://www.baidu.com
-o
:输出文件,默认为标准输出。-s
:屏蔽掉输出,不显示任何内容。-w
:输出http状态码。-k
: 忽略证书-v
参数输出通信的整个过程,用于调试- 添加请求 cookie
--cookie "TOKEN1=Yes;TOKEN2=no"
可以设置请求 cookie,多个 cookie 用;
分隔。
比如:
curl -v --cookie 'LG=1cabdaad-e522-417c-8ee4-6d5c53daa043;U=2f2f01d2-4fb3-462b-8e38-1b1e11e7bc53' 'http://example.com:42225/api/projects/819c4030-184f-42d2-924a-53184e903acd/jobs/3/artifacts/switch_app_test.tar?token=MYTOKEN' -o testsssss.tar
5.4 sed
-e
多重编辑
tail /etc/services | sed -e '1,2d' -e 's/blp5/test/'
1,2d
:删除第一行和第二行s/blp5/test/
:将blp5
替换为test
可以用;
分隔多个命令👇效果一样:
tail /etc/services | sed '1,2d;s/blp5/test/'
- 读取下一行
n
读取下一行到模式空间
seq 6 | sed -n 'n;p'
sed 先读取第一行 1,执行 n 命令,获取下一行 2,此时模式空间是 2,执行 p 命令,打印模式空间。现在模式空间是 2, sed 再读取 3,执行 n 命令,获取下一行 4,此时模式空间为 4,执行 p 命令,以此类推。
5.5 tar
- 不解压读取tar里面的某个文件,
tar xf tar包 路径 -O
- 目录压缩成
.tgz
参数 | 说明 |
---|---|
-c |
create 建立压缩档案的参数 |
-x |
解压缩压缩档案的参数 |
-z |
是否需要用gzip压缩 |
-v |
压缩的过程中显示档案 |
-f |
置顶文档名,在f后面立即接文件名,不能再加参数 |
tar czvf xxxx.tgz 目录
#比如
tar czvf node-test.tgz package
5.6 md5sum
5.7 mktemp
-d
创建一个目录而非文件
5.8 du
du -sh
查看当前目录的总大小du -sh *
查看当前目录所有子目录的大小du -ach *
查看当前目录和所有子目录大小,最后一行会显示当前目录的总大小,不包括隐藏文件du -sh /* --exclude="proc"
,du -sh /* --exclude="*proc*"
排除名字中包含 proc 的文件或目录
6 数组操作
#!/bin/bash
let a=0
for i in $(seq 1 10);do
array[a]=$i
let a++
done
echo "一个添加多个元素:e f g"
array+=(e f g)
echo "数组所有元素 ${array[*]}"
# shellcheck disable=SC2145
echo "数组所有下标: ${!array[@]}"
echo "数组长度为:${#array[*]}"
echo "数组第一个元素为:${array[0]}"
echo "删除数组第二个元素"
# shellcheck disable=SC2184
unset array[1]
echo "再次数组所有元素 ${array[*]}"
7 cloc
cloc,是一款使用 Perl 语言开发的开源代码统计工具,支持多平台使用、多语言识别。从名字就能够直观地知道它的功能:可以帮助计算文件中的有效代码数量,而且会自动排除注释和空格。
cloc git 地址 https://github.com/AlDanial/cloc,官网地址 https://cloc.sourceforge.net/。
cloc 还可以通过 npm 安装。
在执行完cloc
命令以后它会计算不一样编程语言的文件数(files)、空行(blank)、注释(comment)和代码行数(code),而且最后返回 SUM 总数。
7.1 常用命令
命令 | 说明 |
---|---|
--ignore-whitespace |
在使用–diff比较文件时忽略水平空格 |
--max-file-size=<MB> |
若是要跳过大于给定大小MB的文件 |
--exclude-dir=<dir1>,<dir2> |
排除给定的逗号分隔目录 |
--exclude-ext=<ext1>,<ext2> |
排除给定的文件扩展名 |
--out=<file> |
将结果保存到<file> |
--quiet |
禁止全部信息消息并仅显示最终报告 |
--diff<set1> <set2> |
计算set1和set2的源文件之间的代码差别。 输入能够是文件和目录的混合 |