0%

Linux常用命令

Linux常用的命令总结

1. du

查看文件大小

1
du -sh

dudisk usage 磁盘使用的缩写,-s 是查看总用量,-h 是以 M 为单位

du

2. tail

输出文件的最后若干行内容

1
ls -l / | tail -n2

表示查看根目录列表的最后两行信息

3. 管道

1
stdin | stdout

管道的表示是一条竖杠 |,将竖杠的左边的输出作为右边的输入,他们是两个程序

例如

1
curl --head www.baidu.com | grep -i content-length

就是将请求百度的 HTTP 报头,传送到 grep 程序中,计算字符个数,最终显示:

1
Content-Length: 277

再例如

1
curl --head www.baidu.com | grep -i content-length | cut --delimiter=' ' -f2

表示将上述结果以空格进行切分,输出第二个参数,显然最终应该输出

1
277

4. tee

1
echo "welcome ysyx" | tee ysyx.txt

从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
上述命令将字符串 welcome ysyx 输入到 ysyx.txt 文件中,并在命令行中输出该字符串

参数:
-a: append,not overwrite

5. xdg-open

1
xdg-open {file | URL}

用用户默认的程序打开对应的文件和链接,比如链接就用网页打开,txt文件就用文本编辑器打开等。

6. find

1
sudo find /sys -name capacity -exec cat {} \;

\表转义,在不同的脚本中 ; 有不同的含义,因此要转义

7. shell脚本

创建自定义的命令:

1
vim mcd.sh
1
2
3
4
mcd() {
mkdir -p "$1"
cd $1
}
1
2
source mcd.sh
mcd a/b/c
  • $0 - 脚本名
  • $1 到 $9 - 脚本的参数。$1 是第一个参数,依此类推
  • $@ - 所有参数
  • $# - 参数个数
  • $? - 前一个命令的返回值
  • $$ - 当前脚本的进程识别码
  • !! - 完整的上一条命令,包括参数。常见应用:当你因为权限不足执行命令失败时,可以使用 sudo !!再尝试一次。
  • $_ - 上一条命令的最后一个参数。如果你正在使用的是交互式shell,你可以通过按下 Esc 之后键入 . 来获取这个值。

命令通常使用 STDOUT来返回输出值,使用STDERR 来返回错误及错误码,便于脚本以更加友好的方式报告错误。 返回码或退出状态是脚本/命令之间交流执行状态的方式。返回值0表示正常执行,其他所有非0的返回值都表示有错误发生

使用 !! 表明复用上一个执行的命令

1
2
mkdir /sys/new
sudo !!

<(CMD)

进程替换(process substitution), <(CMD) 会执行 CMD 并将结果输出到一个临时文件中,并将 <(CMD) 替换成临时文件名。这在我们希望返回值通过文件而不是STDIN传递时很有用。例如, diff <(ls foo) <(ls bar) 会显示文件夹 foobar 中文件的区别。

bash脚本编写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash

echo "Starting program at $(date)" # date会被替换成日期和时间

echo "Running program $0 with $# arguments with pid $$"

for file in "$@"; do
grep foobar "$file" > /dev/null 2> /dev/null
# 如果模式没有找到,则grep退出状态为1
# 我们将标准输出流和标准错误流重定向到Null,因为我们并不关心这些信息
if [[ $? -ne 0 ]]; then
echo "File $file does not have any foobar, adding one"
echo "# foobar" >> "$file"
fi
done

shellcheck

shell脚本分析工具

htop

能够可视化查看 CPU 占用和内存占用情况,并显示所有进程信息

8. alias

1
alias ll="ls -alh"

该命令将 ll 映射为 ls -alh

注意后面的命令 = 前后没有空格,因为它只接收一个参数,加上空格便会解析成多个参数

但是,但是这样的映射在 shell 关闭之后将失效,要想让他们每次都生效,将命令写入 ~/.bashrc 中。

.bashrc:

1
2
3
alias ll="ls -alh"  //列表显示所有文件,大小以单位显示
alias mv="mv -i" //让 mv 操作有提示信息
PS1="> " //让 bash 命令行以 "> "开头

9. rsync

1
rsync -avP . name@ip:folder

rsync 支持断点下载,并保留原文件的权限,是一种比 scp 更有效的拷贝文件的方式