Linux 常用命令

[TOC]

快捷键

  • CTRL + K 光标处剪切文本至本行结束
  • CTRL + Y 粘贴文本
  • CTRL + E 将光标移动到本行的末尾
  • CTRL + A 将光标移动到本行的开头
  • ALT + F 跳转到下一个空格处
  • ALT + B 回到前一个空格处
  • ALT + Backspace 删除前一个词
  • CTRL + w 剪切光标前一个词

find

查找命令

  • Usage
1
find [path...] [expression]
  • path 制定查找的目录,默认是当前目录

  • expression 包含 operators, options, tests, and actions.

    • tests:

      • -name Pattern 指定文件名的模式
      • -mmin N 过去N分钟更新过的普通文件
    • actions:

      • -delete
      • -print 默认
      • -ls
  • example
1
find . -name "*.txt" -ls

locate

同样用来查找文件,是 find -name 的另一种说法,但是它搜索的是包含所有本地文件信息的数据库。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库

  • example
1
2
3
4
5
# 搜索用户目录下所有以 m 开头的文件
locate ~/m

# 忽略大小写,搜索用户目录下所有以 m 开头的文件
locate -i ~/m

whereis

只能用来搜索程序名,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

  • example
1
2
whereis grep
# 打印: grep: /bin/grep /usr/share/man/man1/grep.1.gz /usr/share/info/grep.info.gz

which

PATH 变量指定的路径中,搜索某个命令的位置,并返回第一个搜索结果。

  • example
1
2
which grep
# 打印: /bin/grep

type

用来区分某个命令是 shell 自带的,还是由外部的二进制文件提供的。如果是一个外部命令, -p 显示该命令的路径。

  • example
1
2
3
4
5
6
7
8
type cd
# cd is a shell builtin

type wget
# wget is /usr/bin/wget

type -p wget
/usr/bin/wget

wget

wget 是一个通过指定 URL 下载文件的工具,比如下载一些软件或者从远程服务器恢复备份到本地服务器。支持HTTP, HTTPS 和 FTP 协议,可以使用 HTTP 代理。可以在后台执行,支持断点下载

参数或使用范例

  • wget https://www.baidu.com

    下载整个页面

    -x 建立服务器上一样的目录

    -nd下载的所有内容会出现在本地当前目录

  • wget -r https://www.baidu.com

    递归下载。下载服务器上的所有目录和文件。

    -l number 指定下载的层次。

  • wget -c http://prefix/dir/file

    断点续传,服务器必须支持。

    -t 表示重试次数 -t 0 表示无穷次重试,直到连接成功。

    -T 表示超时等待时间,超过指定的时间就算超时。

  • wget -i download.txt

    批量下载。多个需要下载的文件的 URL 可以写在一个文件中,每行一个。(URL 指向文件就下载文件,指向网站就下载首页)

  • wget -m -reject=git http://prefix/dir

    选择性下载

    -reject=list 拒绝接受的文件类型

    -accept=list 接受的文件类型

  • wget -http-user=USER -http-passwd=PASS URL

    密码和认证。 只能处理利用用户名/密码方式限制访问的网站

  • wget -proxy-user=USER -proxy-passwd=PASS URL

    代理进行下载。需要创建 .wgetrc 文件设置代理服务器:

    http-proxy=11.11.11.11:8080

    ftp-proxy=11.11.11.11:8080

    -proxy=on/off 使用或关闭代理

  • wget -O rename.zip URL

    重命名下载的文件。wget默认会以最后一个符合”/”的后面的字符来命令。

  • wget –limit-rate=300k URL

    限速下载

  • wget -b URL

    后台下载。

1
2
# 查看正在下载的下载进度。
tail -f wget-log
  • wget -tries=40 URL

    增加重试次数,默认重试20次?

  • wget -mirror URL

    镜像下载。下载整个网站到本地。

    -p 下载所有为了html页面显示正常的文件
    –convert-links 下载后,转换成本地的链接
    -P ./LOCAL 保存所有文件和目录到本地指定目录

  • wget -o download.log URL

    保存下载日志到文件中。

  • wget -Q5m -i files.txt

    限制下载的文件大小,超出后推出下载。

  • wget -r -A.pdf URL

    只下载指定格式的文件。

  • wget FTP-URL

  • wget –ftp-user=USER –ftp-password=PASS URL

    wget FTP 下载。

下载jdk

1
2
3
# wget后需要加参数–no-cookies –header “Cookie: oraclelicense=accept-securebackup-cookie;”

wget --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie;" http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.rpm

tar

用于打包、拆包、压缩、解压

参数或使用范例

  • -c

    建立一个打包文件

  • -x

    解开一个打包文件

  • -t

    查看 tar 包里的文件

  • -z

    gzip 工具,用于压缩成或解压 .tar.gz 格式的文件 (格式的名字只是为了标记,以免解压时用了错误的压缩工具)

  • -j

    zip2 工具,用于压缩成或解压 .tar.bz2 格式的文件

  • -v

    显示打包、拆包、压缩或解压过程。

  • -f

    使用文件名,后面立即接文件名

  • -p

    保持原文件的属性

  • -P

    使用绝对路径来压缩。

  • -N 2001/03/11

1
tar -N 2017/01/23 -zcvf index.html hello.txt world.txt

设定日期,后面接的日期还要新的文件才会被打包。

  • –exclude file
1
tar --exclude hello.txt -zcvf b.tar.gz index.html hello.txt

剔除不需要进行打包的文件

可以作为命令行参数

1
2
3
tar -cvf - *.txt | tar -xf - -C dir/

# tar cvf - files/ | ssh user@example.com "tar xv -C Documents/"

虽然 tar 命令提供了排除 VCS 的选项, 但是使用起来却有点问题, 简单点, 可以直接使用排序选项, * 默认应该是排除了 . 开头的文件, 所以 .gitignore .git/ 都没有包含在最终的包中

1
tar  --exclude "target" --exclude "*.iml" -cvf spring-boot-demo-source.tar *

cat

cat 命令用于显示文件的内容

参数或使用范例

  • 显示整个文件
1
cat file
  • 从键盘创建一个文件
1
2
cat > file
Hello World!

只能创建新文件,不能编辑已有文件。 Ctrl + d 结束输入

  • 合并文件
1
2
3
4
5
# 合并文件输出到另一个文件中
cat file1 file2 > file

# 合并文件并输出到屏幕
cat file1 file2
  • -n 行编号
1
cat -n|number file
  • -b 行编号,空白行不编号
1
cat -b file

grep

Global Search Regular Expression(RE) and Print out the line

全局正则表达式搜索,用于文本搜索(支持正则表达式),并把匹配的行打印出来。

  • 常规用法
1
2
3
grep match_pattern file

grep "match_pattern" file
  • 多文件搜索
1
grep "match_pattern" file_1 file_2 file_3 ...
  • -v 反转查找

    即打印不匹配该模式的所有行

1
grep -v "match_pattern" file
  • -E 使用正则表达式
1
2
3
grep -E "[1-9]+" file

egrep "[1-9]+" file
  • -o 只输出文件中匹配到的部分
1
grep -o -E "[1-9]+" file
  • -c 文件中包含匹配模式的行数
1
grep -c "text" file
  • -n 输出包含匹配字符串所在的行号
1
grep -n "text" file
  • -b 匹配模式位于的字符或字节偏移
1
2
# 一般与 -o 一起使用,从第一个字符开始计算,起始值为 0 
grep -b -o "text" file
  • -l 搜索匹配模式出现在哪些文件中
1
2
grep -l "text" file1 file2 file3 ...
# 只输出文件名,不指定 -l, 输出文件名及相应的匹配行
  • -r 多级目录中对文本进行递归搜索
1
2
grep "text" . -r -n
# . 表示当前目录
  • -i 忽略匹配模式中字符的大小写
1
grep -i "text" file
  • -e 制定多个匹配模式
1
2
grep -e "text1" "text2" file
# 这个当然也可以直接用正则表达式写
  • 搜索结果中包括或者排除指定文件
1
2
3
4
5
6
7
8
# 此参数的格式为 Ubuntun 下的格式,搜索文件只包括 txt,html,php 文件 
grep --include=*.{txt,html,php} "text" file

# 搜索文件不包括 txt,html,php 文件
grep --exclude=*.{txt,html,php} "text" file

# 排除 fileList 文件列表里的文件
grep "text" . -r --exclude-from=fileList
  • -q 静默输出

  • 打印匹配某个结果之后或之前的 n 行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#显示匹配某个结果之后的3行,使用 -A 选项:
seq 10 | grep "5" -A 3
5
6
7
8


#显示匹配某个结果之前的3行,使用 -B 选项:
seq 10 | grep "5" -B 3
2
3
4
5

#显示匹配某个结果的前三行和后三行,使用 -C 选项:
seq 10 | grep "5" -C 3
2
3
4
5
6
7
8

#如果匹配结果有多个,会用“--”作为各匹配结果之间的分隔符:
echo -e "a\nb\nc\na\nb\nc" | grep a -A 1
a
b
--
a
b

stat

stat 命令用于显示文件的大小、所有者、用户组、索引节点号、权限、修改和访问时间等重要的统计信息。这是一个非常有用的命令,可以显示比 ls -l 更多的细节。

  • example
1
2
# -c 用于格式化输出, %n 表示文件的名称 %a 表示数字格式的权限
stat -c '%n %a' *
1
ls * ""

https://linux.cn/article-9601-1.html