ls
ls 命令用于在类 Unix 操作系统(如 Linux、macOS)中列出目录内容。它有许多参数,用以控制其输出的格式和信息。下面是一些常用的 ls 命令参数:
基本参数
-l:以长格式列出文件信息(包括权限、链接数、所有者、文件大小和时间戳)。
-a:列出所有文件,包括隐藏文件(以.开头的文件)。
-A:列出几乎所有文件,隐文件除了. 和 ..(当前目录和父目录)。
-d:显示目录本身,而不是其内容。
-h:以人类可读的格式显示文件大小(例如,1K,234M,2G 等)。
-R:递归列出目录下所有内容,包括子目录中的内容。
-t:按修改时间排序,从最新到最旧。
-r:颠倒排序顺序。
-i:显示文件的 inode 信息。
-s:显示每个文件的块大小。
-S:按文件大小排序,从大到小。
-F:在每个名字后面加上文件类型符号,比如目录/,可执行文件*等。
颜色和符号
--color:根据文件类型显示不同颜色。
-p:在目录名后面加上斜杠 / 以示区别。
组合参数
-lh:以长格式和人类可读格式显示。
-la 或 -al:以长格式和包括所有隐藏文件。
其它有用的参数
--full-time:显示完整的时间戳,包括年月日和时分秒。
--group-directories-first:先显示目录,然后显示文件。
具体的 ls 命令参数帮助,可以使用 man ls 命令查看更详细的解释和使用方法。
tail
tail 指令是用于从文件的末尾开始输出其内容的一个命令行工具。它通常用于查看日志文件的最近一部分内容。tail 是 Unix/Linux 系统上常见的工具。
基本用法如下:
tail [选项] [文件]
常用选项包括:
-n, --lines=[+][数目]:输出文件末尾的数目行。默认是 10 行。例如,tail -n 20 filename 会显示文件的最后 20 行。
-f, --follow:实时查看文件追加的内容。通常用于查看正在增长的日志文件。例如,tail -f filename 会实时显示文件末尾新增的行。
-c, --bytes=[+][数目]:以字节为单位输出文件末尾的内容。例如,tail -c 100 filename 会显示文件末尾的最后 100 个字节。
--pid=PID:与 -f 一起使用,表示在指定的进程终止时停止跟踪文件内容。tail -f --pid=1234 filename 当 PID 为 1234 的进程终止时,tail 也会停止跟踪文件。
-q, --quiet, --silent:为多文件输入时,去掉文件名的输出。
-v, --verbose:总是输出文件名。
举个例子,如果要查看一个名为 example.log 文件的最后 10 行,可以使用:
tail example.log
如果希望实时查看 example.log 文件新增的内容,可以使用:
tail -f example.log
这些选项可以组合使用以达到不同的效果。了解 tail 的这些基本用法可以帮助你更方便地处理和查看文件内容
less
ess 是一个Linux/Unix系统中的文本查看工具,它允许你在终端中分页浏览文件内容,与 more 命令类似,但功能更强大。你可以使用方向键、页面键、以及各种命令在文件中自由滚动,查看内容。
以下是一些常用的 less 命令和操作:
打开文件
less filename
基本导航
j 或 下箭头 (↓): 向下滚动一行
k 或 上箭头 (↑): 向上滚动一行
空格键: 向下滚动一页
b: 向上滚动一页
G: 跳转到文件末尾
g: 跳转到文件开头
p 或 N%: 跳转到文件的第 N% 处
搜索
/pattern: 向下搜索 pattern
?pattern: 向上搜索 pattern
n: 在相同方向上跳转到下一个匹配项
N: 在相反方向上跳转到下一个匹配项
显示行号
-N 或 --LINE-NUMBERS: 在每行之前显示行号
退出
q: 退出 less
其他有用命令
&pattern: 只显示匹配 pattern 的行
F: 进入类似 tail -f 的模式,实时查看文件的新内容
Ctrl+G: 显示当前文件名、行号、百分比等信息
v: 在默认编辑器(通常是 vi 或 vim)中编辑当前文件
快速跳转
N或-N 或 :N: 跳转到文件的第 N 行
在使用 less 命令时,可以结合其他命令进行文件操作,比如:
dmesg | less
ps aux | less
tail -f /var/log/syslog | less
通过这些命令,less 可以在终端中非常方便地查看和管理文本文件的内容,特别是在处理大文件时非常有用
cat
cat 命令是 Unix 和类 Unix 操作系统(如 Linux)中常用的一个命令,主要用于连接文件并在标准输出上显示其内容。cat 是 “concatenate”(连接)的缩写,使用这个命令你可以做各种关于文件内容显示和处理的操作。以下是一些常见的用法:
基本用法
显示单个文件的内容:
cat filename.txt
```
显示多个文件的内容:
cat file1.txt file2.txt
```
将多个文件的内容合并输出到一个新文件:
cat file1.txt file2.txt > newfile.txt
```
这里使用了重定向符 `>` 将输出保存到一个新的文件 `newfile.txt`。
4. 追加内容到现有文件:
cat file1.txt >> existingfile.txt
```
这里使用了重定向符 `>>` 追加输出到现有文件 `existingfile.txt` 的末尾。
常用选项
显示行号:
cat -n filename.txt
```
压缩空行(将连续的多个空行合并为一个空行):
cat -s filename.txt
```
显示不可打印字符:
cat -v filename.txt
```
显示行尾字符(加上 \$ 号):
cat -E filename.txt
```
其他实用技巧
创建新文件并向其中写入内容:
cat > newfile.txt
```
运行该命令后,你可以输入多行内容,并在所有内容输入完毕后按 `Ctrl + D` 结束输入。
用于快速查看命令输出:
some_command | cat
```
拼接多行输入:
echo -e "first line\nsecond line" | cat
```
cat 是一个非常强大的命令,但在处理大型文件或进行复杂文本操作时,可能会选择更适合的命令,如 less、more、head、tail 等
grep
grep 是一个强大的命令行工具,用于在文件中搜索文本模式。它的全称是“global regular expression print”,主要用于搜索文本且支持正则表达式。以下是一些常用的 grep 选项和示例:
基本用法
grep [选项] 模式 [文件...]
常用选项
-i:忽略大小写。
-v:反转匹配,显示不包含匹配模式的行。
-r 或 -R:递归搜索目录。
-n:显示匹配行的行号。
-c:只输出匹配行的数量。
-l:显示包含匹配模式的文件名。
-w:只匹配整个单词。
-o:只输出匹配到的部分。
示例
直接在文件中搜索模式:
grep "pattern" filename
忽略大小写搜索:
grep -i "pattern" filename
递归搜索目录:
grep -r "pattern" /path/to/directory
显示包含匹配模式的文件名:
grep -l "pattern" *
搜索并打印行号:
grep -n "pattern" filename
反向搜索,显示不包含匹配模式的行:
grep -v "pattern" filename
只匹配整个单词:
grep -w "pattern" filename
只输出匹配的部分:
grep -o "pattern" filename
统计匹配的行数:
grep -c "pattern" filename
使用正则表达式
grep 默认支持基本正则表达式,使用 -E 选项可以支持扩展正则表达式:
grep -E "pattern" filename
例如,匹配文件中所有以“abc”开头、后面跟一个或多个数字的行:
grep -E "^abc[0-9]+" filename
使用管道符
grep 还可以结合其他命令使用管道符 |:
cat filename | grep "pattern"
或者:
dmesg | grep "error"
通过 grep 结合正则表达式和各种选项,能够很方便地处理文本文件及其内容
重定向
2>&1这个符号组合在 Unix/Linux shell 中主要用于输出重定向,尤其是在将标准错误输出和标准输出合并时。
在计算机中,标准输出(stdout)和标准错误输出(stderr)是两种不同的输出流:
标准输出(stdout):正常的输出流,通常以文件描述符1表示。
标准错误输出(stderr):表示错误消息的输出流,通常以文件描述符2表示。
两者分开有助于区分正常的信息和错误信息。使用重定向操作可以控制这两个流的输出位置。
2>&1的具体含义是:
2>:表示将文件描述符2(即标准错误输出)的输出重定向。
&1:表示重定向目标是文件描述符1(即标准输出)。
所以,2>&1的总体效果就是将标准错误输出(stderr)重定向到标准输出(stdout)。这意味着原本会输出到标准错误流的内容现在也会输出到标准输出流中。
简言之就是,错误信息和正常输出信息都放在一起了,将错误输出也用标准输出打印出来了。
#!/bin/bash
echo "This is standard output"
ls non_existent_file
正常终端输出是
This is standard output
ls: cannot access 'non_existent_file': No such file or directory
使用重定向
./script.sh output.txt 2>&1
txt中的内容就是
This is standard output
ls: cannot access 'non_existent_file': No such file or directory
ps
ps process status
ps -ef作用基本相同 所有进程+全格式输出
ps aux
curl
基础用法
curl http://example.com
curl -o output.html http://example.com 保存到文件output.html
HTTP方法
POST请求 d是data 后面是发送的数据 指定http头部,使用的是json还是其他的数据等等
curl -X POST -d "key=value" http://example.com/api
curl -X POST -H "Content-Type: application/json" -d '{"key": "value"}' http://example.com/api
curl -X POST -H "Content-Type: text/plain" -d 'Just some text' http://example.com/api
HEAD请求 只获取头数据 不下载实际内容
curl -I http://example.com
PUT请求
curl -X PUT -d "new content" http://example.com/resource
下载文件 上传文件
curl -O http://example.com/downloads/file.zip
curl -T localfile.txt http://example.com/upload