alias

alias 命令用于为命令创建别名,以便简化输入和提高效率。

用法示例

1
alias ll='ls -la'

这个命令会创建一个别名 ll,用于执行 ls -la 命令。

常见用法

  • 创建简单别名:
1
alias gs='git status'

这个命令会创建一个别名 gs,用于快速查看 Git 状态。

  • 创建带参数的别名:
1
alias rm='rm -i'

这个命令会创建一个别名 rm,在删除文件时提示确认。

  • 查看当前所有别名:
1
alias

这个命令会列出当前会话中所有已定义的别名。

  • 删除别名:
1
unalias ll

这个命令会删除别名 ll

  • 将别名永久保存:
    可以将别名添加到用户的 ~/.bashrc~/.bash_aliases 文件中,以便在每次登录时自动加载。
1
2
echo "alias ll='ls -la'" >> ~/.bashrc
source ~/.bashrc
  • 创建复杂的别名(使用函数):
1
alias mygrep='grep --color=auto'

这个命令会创建一个别名 mygrep,在使用 grep 时自动启用颜色高亮。

  • 使用别名时显示帮助信息:
1
alias h='history'

这个命令会创建一个别名 h,用于快速查看命令历史。

awk

awk 是一个强大的文本处理工具,主要用于模式扫描和处理。它可以从文本文件中提取和处理数据。

用法示例

1
awk '{print $1}' filename.txt

这个命令会打印 filename.txt 文件中每一行的第一个字段。

常见用法

  • 统计文件中的行数:
1
awk 'END {print NR}' filename.txt
  • 计算某一列的总和:
1
awk '{sum += $1} END {print sum}' filename.txt
  • 过滤特定模式的行:
1
awk '/pattern/' filename.txt

cat

cat 命令用于连接文件并打印到标准输出,常用于查看文件内容。

用法示例

1
cat filename.txt

这个命令会打印 filename.txt 文件的所有内容。

常见用法

  • 查看多个文件的内容:
1
cat file1.txt file2.txt
  • 将文件内容输出到另一个文件:
1
cat filename.txt > newfile.txt
  • 追加文件内容到另一个文件:
1
cat filename.txt >> existingfile.txt
  • 显示行号:
1
cat -n filename.txt

cd

cd 命令用于更改当前工作目录。

用法示例

1
cd /path/to/directory

这个命令会将当前工作目录更改为指定的目录。

常见用法

  • 返回上一级目录:
1
cd ..
  • 返回用户主目录:
1
cd ~
  • 切换到上一次访问的目录:
1
cd -
  • 使用相对路径切换目录:
1
cd subdirectory/

这个命令会切换到当前目录下的 subdirectory 目录。

  • 切换到多个目录(使用 pushdpopd):
1
2
3
pushd /path/to/directory
# ... 在新目录中工作 ...
popd

这个命令会将当前目录推入目录栈并切换到指定目录,popd 则会返回到之前的目录。

chmod

chmod 命令用于更改文件或目录的权限。

用法示例

1
chmod 755 filename.txt

这个命令会将 filename.txt 的权限更改为可读、可写和可执行(所有者),可读和可执行(组和其他用户)。

常见用法

  • 递归更改目录及其内容的权限:
1
chmod -R 755 directory_name
  • 仅添加执行权限:
1
chmod +x filename.sh
  • 仅移除写权限:
1
chmod -w filename.txt
  • 设置特定权限(如只读):
1
chmod 444 filename.txt
  • 使用符号模式更改权限:
1
2
3
chmod u+x filename.txt  # 为文件所有者添加执行权限
chmod g-w filename.txt # 从组中移除写权限
chmod o=r filename.txt # 设置其他用户为只读权限

chown

chown 命令用于更改文件或目录的所有者和所属组。

用法示例

1
chown user:group filename.txt

这个命令会将 filename.txt 的所有者更改为 user,所属组更改为 group

常见用法

  • 仅更改文件的所有者:
1
chown user filename.txt
  • 仅更改文件的所属组:
1
chown :group filename.txt
  • 递归更改目录及其内容的所有者和所属组:
1
chown -R user:group directory_name
  • 显示当前文件的所有者和所属组:
1
ls -l filename.txt
  • 更改多个文件的所有者:
1
chown user1:usergroup file1.txt file2.txt

cp

cp 命令用于复制文件和目录。

用法示例

1
cp source.txt destination.txt

这个命令会将 source.txt 文件复制到 destination.txt

常见用法

  • 复制文件到另一个目录:
1
cp filename.txt /path/to/directory/
  • 复制目录及其内容(使用 -r 选项):
1
cp -r sourcedir/ targetdir/
  • 复制并重命名文件:
1
cp filename.txt newname.txt
  • 交互式复制(在覆盖文件前提示确认):
1
cp -i filename.txt destination.txt
  • 复制文件并保留文件属性:
1
cp -p filename.txt destination.txt

curl

curl 是一个用于在命令行中进行数据传输的工具,支持多种协议,包括 HTTP、HTTPS、FTP 等。

用法示例

1
curl http://example.com

这个命令会从 http://example.com 下载内容并打印到标准输出。

常见用法

  • 下载文件:
1
curl -O http://example.com/file.txt
  • 发送 POST 请求:
1
curl -X POST -d "param1=value1&param2=value2" http://example.com/api
  • 添加请求头:
1
curl -H "Authorization: Bearer TOKEN" http://example.com/api
  • 显示请求和响应的详细信息:
1
curl -v http://example.com
  • 保存输出到文件:
1
curl -o output.txt http://example.com

df

df 命令用于显示文件系统的磁盘空间使用情况。

用法示例

1
df

这个命令会显示所有挂载的文件系统的磁盘使用情况。

常见用法

  • 以人类可读的格式显示(例如,KB、MB、GB):
1
df -h
  • 显示特定文件系统的信息:
1
df /path/to/directory
  • 显示所有文件系统,包括虚拟文件系统:
1
df -a
  • 显示 inode 使用情况:
1
df -i

这个命令会显示每个文件系统的 inode 使用情况。

du

du 命令用于显示目录或文件的磁盘使用情况。

用法示例

1
du /path/to/directory

这个命令会显示指定目录及其子目录的磁盘使用情况。

常见用法

  • 显示指定目录的总大小:
1
du -sh /path/to/directory

这个命令会以人类可读的格式(如 KB、MB、GB)显示指定目录的总大小。

  • 显示每个子目录的大小:
1
du -h /path/to/directory

这个命令会以人类可读的格式显示指定目录下每个子目录的大小。

  • 递归显示所有子目录的大小:
1
du -ah /path/to/directory

这个命令会显示指定目录及其所有子目录和文件的大小。

  • 按大小排序显示:
1
du -sh /path/to/directory/* | sort -h

这个命令会显示指定目录下每个文件和子目录的大小,并按大小排序。

  • 显示特定深度的目录大小:
1
du -h --max-depth=1 /path/to/directory

这个命令会显示指定目录下的每个子目录的大小,但只显示到第一层深度。

  • 显示文件系统的使用情况:
1
du -x /path/to/directory

这个命令会限制 du 只计算指定目录所在的文件系统的大小。

echo

echo 命令用于在终端输出文本或变量的值。

用法示例

1
echo "Hello, World!"

这个命令会在终端打印 Hello, World!

常见用法

  • 输出变量的值:
1
2
name="Alice"
echo "Hello, $name!"
  • 输出带有换行符的文本:
1
echo -e "Line 1\nLine 2"
  • 不输出换行符:
1
echo -n "This is on the same line."
  • 输出带有特殊字符的文本:
1
echo "This is a dollar sign: \$"

find

find 命令用于在目录中查找文件和目录,支持多种搜索条件。

用法示例

1
find /path/to/directory -name "filename.txt"

这个命令会在指定目录中查找名为 filename.txt 的文件。

常见用法

  • 查找特定类型的文件:
1
find /path/to/directory -type f -name "*.txt"

这个命令会查找所有以 .txt 结尾的文件。

  • 按文件大小查找:
1
find /path/to/directory -size +10M

这个命令会查找大于 10MB 的文件。

  • 按修改时间查找:
1
find /path/to/directory -mtime -7

这个命令会查找最近 7 天内修改过的文件。

  • 查找并执行命令:
1
find /path/to/directory -name "*.log" -exec rm {} \;

这个命令会查找所有 .log 文件并删除它们。

  • 查找并显示详细信息:
1
find /path/to/directory -name "*.txt" -print

这个命令会查找所有 .txt 文件并打印其路径。

  • 查找空文件:
1
find /path/to/directory -type f -empty

这个命令会查找所有空文件。

  • 查找特定用户的文件:
1
find /path/to/directory -user username

这个命令会查找属于指定用户的文件。

grep

grep 命令用于在文件中搜索指定的模式,并打印匹配的行。

用法示例

1
grep "pattern" filename.txt

这个命令会在 filename.txt 文件中搜索包含 pattern 的行并打印出来。

常见用法

  • 忽略大小写搜索:
1
grep -i "pattern" filename.txt
  • 显示行号:
1
grep -n "pattern" filename.txt
  • 递归搜索目录中的文件:
1
grep -r "pattern" /path/to/directory/
  • 只显示匹配的部分:
1
grep -o "pattern" filename.txt
  • 反向匹配(显示不包含模式的行):
1
grep -v "pattern" filename.txt

head 命令用于显示文件的开头部分,默认情况下显示前 10 行。

用法示例

1
head filename.txt

这个命令会打印 filename.txt 文件的前 10 行。

常见用法

  • 显示指定行数的开头部分:
1
head -n 5 filename.txt

这个命令会打印 filename.txt 文件的前 5 行。

  • 显示多个文件的开头部分:
1
head file1.txt file2.txt
  • 显示文件的字节数:
1
head -c 20 filename.txt

这个命令会打印 filename.txt 文件的前 20 个字节。

history

history 命令用于显示用户在当前会话中输入的命令历史记录。

用法示例

1
history

这个命令会列出当前用户在终端中输入的所有命令。

常见用法

  • 显示最近的命令数量:
1
history 10

这个命令会显示最近输入的 10 条命令。

  • 重新执行某条命令:
1
!n

其中 n 是命令在历史记录中的编号。例如,!5 会重新执行历史记录中编号为 5 的命令。

  • 清空命令历史:
1
history -c

这个命令会清空当前会话的命令历史记录。

  • 将历史记录保存到文件:
1
history > history.txt

这个命令会将当前会话的命令历史保存到 history.txt 文件中。

  • 使用 grep 搜索历史记录:
1
history | grep "pattern"

这个命令会在历史记录中搜索包含 pattern 的命令。

  • 在命令行中使用上一个命令:
1
!!

这个命令会重新执行上一个输入的命令。

kill/killall

kill 命令用于向进程发送信号,通常用于终止进程。

用法示例

1
kill PID

这个命令会向指定的进程 ID(PID)发送终止信号。

常见用法

  • 强制终止进程:
1
kill -9 PID

这个命令会强制终止指定的进程。

  • 发送其他信号(如停止进程):
1
kill -STOP PID
  • 查看所有进程并找到 PID:
1
ps aux | grep process_name
  • 终止所有匹配的进程:
1
killall process_name

ls

ls 命令用于列出目录中的文件和子目录。

用法示例

1
ls

这个命令会列出当前目录中的所有文件和子目录。

常见用法

  • 列出详细信息(包括权限、所有者、大小等):
1
ls -l
  • 列出所有文件,包括隐藏文件(以点开头的文件):
1
ls -a
  • 以人类可读的格式显示文件大小:
1
ls -lh
  • 按时间排序列出文件:
1
ls -lt
  • 递归列出所有子目录中的文件:
1
ls -R
  • 列出特定类型的文件(例如,只列出目录):
1
ls -d */

man

man 命令用于查看其他命令的手册页,提供命令的详细信息和用法。

用法示例

1
man command_name

这个命令会显示 command_name 的手册页。

常见用法

  • 查看特定命令的手册页:
1
man ls
  • 搜索手册页中的关键字:
1
man -k keyword

这个命令会列出所有包含 keyword 的手册页。

  • 查看手册页的特定部分(例如,用户命令、系统调用等):
1
2
3
man 1 command_name  # 用户命令
man 2 command_name # 系统调用
man 3 command_name # 库函数
  • 在手册页中向上或向下滚动:
    使用 键进行滚动,使用 q 键退出手册页。

  • 查看手册页的帮助信息:

1
man man

这个命令会显示 man 命令本身的手册页。

mv

mv 命令用于移动或重命名文件和目录。

用法示例

1
mv oldname.txt newname.txt

这个命令会将 oldname.txt 文件重命名为 newname.txt

常见用法

  • 移动文件到另一个目录:
1
mv filename.txt /path/to/directory/
  • 移动并重命名文件:
1
mv filename.txt /path/to/directory/newname.txt
  • 交互式移动(在覆盖文件前提示确认):
1
mv -i filename.txt /path/to/directory/
  • 强制移动(不提示确认):
1
mv -f filename.txt /path/to/directory/

ps

ps 命令用于显示当前运行的进程信息。

用法示例

1
ps

这个命令会列出当前用户的所有进程。

常见用法

  • 显示所有进程,包括其他用户的进程:
1
ps -e
  • 显示详细信息:
1
ps -f
  • 显示进程树:
1
ps -ejH
  • 显示特定用户的进程:
1
ps -u username
  • 显示与特定命令相关的进程:
1
ps -C command_name

pwd

pwd 命令用于显示当前工作目录的完整路径。

用法示例

1
pwd

这个命令会打印当前工作目录的绝对路径。

常见用法

  • 在脚本中使用 pwd 获取当前目录:
1
2
current_dir=$(pwd)
echo "当前目录是: $current_dir"
  • 与其他命令结合使用:
1
cd /path/to/directory && pwd

这个命令会切换到指定目录并显示该目录的路径。

rm

rm 命令用于删除文件和目录。

用法示例

1
rm filename.txt

这个命令会删除 filename.txt 文件。

常见用法

  • 删除多个文件:
1
rm file1.txt file2.txt
  • 递归删除目录及其内容(使用 -r 选项):
1
rm -r directory_name
  • 强制删除文件(不提示确认):
1
rm -f filename.txt
  • 交互式删除(在删除前提示确认):
1
rm -i filename.txt
  • 删除空目录:
1
rmdir directory_name

scp

scp 命令用于在本地和远程主机之间安全地复制文件。

用法示例

1
scp localfile.txt user@remotehost:/path/to/destination

这个命令会将本地的 localfile.txt 文件复制到远程主机的指定路径。

常见用法

  • 从远程主机复制文件到本地:
1
scp user@remotehost:/path/to/remotefile.txt /local/path
  • 递归复制整个目录:
1
scp -r localdir user@remotehost:/path/to/destination
  • 使用特定端口进行连接:
1
scp -P 2222 localfile.txt user@remotehost:/path/to/destination
  • 复制文件并保留文件属性:
1
scp -p localfile.txt user@remotehost:/path/to/destination
  • 显示详细的传输过程:
1
scp -v localfile.txt user@remotehost:/path/to/destination

sed

sed 是一个流编辑器,用于对文本进行基本的转换和处理。

用法示例

1
sed 's/old/new/' filename.txt

这个命令会将 filename.txt 文件中每一行的第一个 old 替换为 new

常见用法

  • 替换文件中的所有匹配项:
1
sed 's/old/new/g' filename.txt
  • 在特定行进行替换:
1
sed '2s/old/new/' filename.txt

这个命令会在第二行中将 old 替换为 new

  • 删除特定行:
1
sed '3d' filename.txt

这个命令会删除 filename.txt 文件的第三行。

  • 直接修改文件(使用 -i 选项):
1
sed -i 's/old/new/g' filename.txt
  • 显示行号:
1
sed = filename.txt | sed 'N;s/\n/ /'

ssh

ssh 命令用于安全地远程登录到另一台计算机。

用法示例

1
ssh user@remotehost

这个命令会以 user 用户身份登录到 remotehost

常见用法

  • 使用特定端口进行连接:
1
ssh -p 2222 user@remotehost
  • 在登录时执行命令:
1
ssh user@remotehost 'command_to_run'
  • 使用密钥文件进行身份验证:
1
ssh -i /path/to/private_key user@remotehost
  • 进行端口转发:
1
ssh -L local_port:remotehost:remote_port user@remotehost
  • 复制文件到远程主机(使用 scp):
1
scp localfile.txt user@remotehost:/path/to/destination

tail

tail 命令用于显示文件的结尾部分,默认情况下显示最后 10 行。

用法示例

1
tail filename.txt

这个命令会打印 filename.txt 文件的最后 10 行。

常见用法

  • 显示指定行数的结尾部分:
1
tail -n 5 filename.txt

这个命令会打印 filename.txt 文件的最后 5 行。

  • 实时查看文件的新增内容(类似于日志文件):
1
tail -f filename.txt
  • 显示多个文件的结尾部分:
1
tail file1.txt file2.txt
  • 显示文件的字节数:
1
tail -c 20 filename.txt

这个命令会打印 filename.txt 文件的最后 20 个字节。

tar

tar 命令用于打包和压缩文件,常用于备份和传输文件。

用法示例

  • 创建一个 tar 包:
1
tar -cvf archive.tar /path/to/directory

这个命令会将指定目录打包成 archive.tar 文件。

常见用法

  • 创建一个压缩的 tar.gz 包:
1
tar -czvf archive.tar.gz /path/to/directory

这个命令会将指定目录打包并压缩成 archive.tar.gz 文件。

  • 解压 tar 包:
1
tar -xvf archive.tar

这个命令会解压 archive.tar 文件。

  • 解压 tar.gz 包:
1
tar -xzvf archive.tar.gz

这个命令会解压 archive.tar.gz 文件。

  • 查看 tar 包内容:
1
tar -tvf archive.tar

这个命令会列出 archive.tar 文件中的内容。

top

top 命令用于实时显示系统中正在运行的进程和系统资源的使用情况。

用法示例

1
top

这个命令会打开一个动态更新的界面,显示当前系统的进程信息和资源使用情况。

常见用法

  • 显示进程的详细信息:
    top 界面中,可以按 Shift + M 按内存使用量排序,按 Shift + P 按 CPU 使用量排序。

  • 结束进程:
    top 界面中,按 k 键,然后输入要结束的进程 ID(PID),最后按 Enter

  • 刷新间隔:
    top 界面中,按 d 键可以设置刷新间隔(以秒为单位)。

  • 显示帮助信息:
    top 界面中,按 h 键可以查看帮助信息。

  • 退出 top
    top 界面中,按 q 键可以退出。

touch

touch 命令用于创建空文件或更新文件的时间戳。

用法示例

1
touch filename.txt

这个命令会创建一个名为 filename.txt 的空文件,如果文件已存在,则更新其最后修改时间。

常见用法

  • 创建多个空文件:
1
touch file1.txt file2.txt file3.txt
  • 更新文件的时间戳:
1
touch existingfile.txt
  • 创建带有特定时间戳的文件:
1
touch -t 202301010101 filename.txt

这个命令会将 filename.txt 的时间戳设置为 2023 年 1 月 1 日 01:01。

  • 使用当前时间戳创建文件:
1
touch -a filename.txt

这个命令会更新 filename.txt 的访问时间为当前时间。

vi

vi 是一个强大的文本编辑器,广泛用于 Unix 和 Linux 系统中。

用法示例

打开文件:

1
vi filename.txt

这个命令会打开 filename.txt 文件进行编辑。

常见用法

  • 进入插入模式:
    在命令模式下,按 i 进入插入模式,可以开始编辑文本。

  • 保存并退出:
    在命令模式下,输入 :wq 保存文件并退出 vi

  • 仅保存:
    在命令模式下,输入 :w 仅保存文件而不退出。

  • 退出不保存:
    在命令模式下,输入 :q! 强制退出而不保存更改。

  • 删除行:
    在命令模式下,输入 dd 删除当前行。

  • 撤销操作:
    在命令模式下,输入 u 撤销上一步操作。

  • 查找文本:
    在命令模式下,输入 /pattern 查找指定的 pattern

  • 替换文本:
    在命令模式下,输入 :%s/old/new/g 将文件中的所有 old 替换为 new

vim

vimvi 的增强版,提供了更多功能和更好的用户体验。

用法示例

打开文件:

1
vim filename.txt

这个命令会打开 filename.txt 文件进行编辑。

常见用法

  • 进入插入模式:
    在命令模式下,按 i 进入插入模式,可以开始编辑文本。

  • 保存并退出:
    在命令模式下,输入 :wq 保存文件并退出 vim

  • 仅保存:
    在命令模式下,输入 :w 仅保存文件而不退出。

  • 退出不保存:
    在命令模式下,输入 :q! 强制退出而不保存更改。

  • 删除行:
    在命令模式下,输入 dd 删除当前行。

  • 撤销操作:
    在命令模式下,输入 u 撤销上一步操作。

  • 查找文本:
    在命令模式下,输入 /pattern 查找指定的 pattern

  • 替换文本:
    在命令模式下,输入 :%s/old/new/g 将文件中的所有 old 替换为 new

  • 显示行号:
    在命令模式下,输入 :set number 显示行号。

  • 语法高亮:
    在命令模式下,输入 :syntax on 启用语法高亮。

wget

wget 是一个用于从网络下载文件的命令行工具,支持 HTTP、HTTPS 和 FTP 协议。

用法示例

1
wget http://example.com/file.txt

这个命令会从指定的 URL 下载 file.txt 文件。

常见用法

  • 下载文件并指定输出文件名:
1
wget -O newname.txt http://example.com/file.txt
  • 递归下载整个网站:
1
wget -r http://example.com
  • 限制下载速度:
1
wget --limit-rate=200k http://example.com/file.txt
  • 继续未完成的下载:
1
wget -c http://example.com/file.txt
  • 下载时不显示进度条:
1
wget -q http://example.com/file.txt
  • 下载多个文件:
1
wget -i filelist.txt

这个命令会从 filelist.txt 文件中读取 URL 并下载。

xargs

xargs 命令用于将标准输入的数据转换为命令行参数,常用于处理大量数据。

用法示例

1
echo "file1.txt file2.txt file3.txt" | xargs rm

这个命令会删除 file1.txtfile2.txtfile3.txt 文件。

常见用法

  • 从文件中读取参数:
1
xargs -a filelist.txt rm

这个命令会从 filelist.txt 文件中读取文件名并删除它们。

  • 限制每次执行的命令参数数量:
1
find . -name "*.txt" | xargs -n 2 rm

这个命令会每次删除两个 .txt 文件。

  • 使用自定义分隔符:
1
echo "file1.txt,file2.txt,file3.txt" | xargs -d ',' rm

这个命令会使用逗号作为分隔符来删除文件。

  • 与其他命令结合使用:
1
find . -name "*.log" | xargs grep "error"

这个命令会在所有 .log 文件中搜索包含 “error” 的行。