基本配置
CMD 登录 ssh
- 默认 22 端口:
ssh root@45.77.123.77 - 指定 2222 端口:
ssh -p 2222 root@45.77.123.77
~/.bashrc 配置文件
~/.bashrc 配置只影响用户自己,修改 /etc/profile 可以作用全局用户
# 提示符信息和颜色
PS1='[\[\033[01;35m\]\t\[\033[00m\] \[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w\[\033[00m\]] \$ '
# 修改历史记录的条数和大小,以及添加历史的详细信息
export HISTSIZE=5000
export HISTFILESIZE=10000
export HISTCONTROL=ignoredups:erasedups
export HISTIGNORE="ls:cd:pwd:exit"
export HISTTIMEFORMAT="%F %T `whoami` "
# 给ls命令下的文件名着色
export LS_OPTIONS='--color=auto'
eval "$(dircolors)"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -alhA'
alias l='ls $LS_OPTIONS -aA'
# 快捷安装包别名
alias i='sudo apt install'
# 快捷使用docker命令
alias sd='sudo docker'
# 快捷查看docker镜像,容器,卷,网络
alias sdls='sudo docker images;echo;sudo docker ps -a;echo;sudo docker volume ls;echo;sudo docker network ls'
# 快捷删除所有容器
alias sdrm='sudo docker rm -f `sudo docker ps -aq`'
# cl函数直接切换目录并列出目录
cl() {
if [ -n "$1" ]; then
cd "$1" && ls -aA
else
cd && ls -aA
fi
}命令格式
COMMAND [OPTIONS...选项] [ARGUMENTS...参数]
- unix 风格: 横线带字母
ls -a /rootfree -h - GUN 风格: 横线带全拼
ls --all /rootfree --human - 伯克利风格: 带字母
ps aps aux
常用命令
硬件信息
| 参数 | 说明 |
|---|---|
top htop | 查看 CPU 占用 |
lscpu | 查看 CPU 架构信息 |
free -h | 查看内存占用 |
lsblk | 查看硬盘信息 |
df -h | 查看磁盘占用 |
-h: (human) 参数会以人类易读的格式显示(比如 GB 或 MB)
系统信息
| 参数 | 说明 |
|---|---|
uname -a | 打印所有系统的信息 |
uname -r | Linux 内核版本 |
cat /etc/os-release | 发行系统版本 |
uptime | 显示系统运行时间和负载 |
pstree | 将所有进程以树状图显示 |
jobs | 查看和管理后台任务, fg %<id>恢复前台 |
hostname | 查看本机名 |
hostname -I | 查看本机 ip |
hostname NAME | 临时设置主机名(改的内存) |
nano /etc/hostname | 永久设置主机名,需要重启才能生效 |
hostnamectl set-hostname NAME | 永久设置主机名,推荐使用 |
env | 显示和临时修改环境变量 |
- 查看公网 ip:bash
echo `curl -s https://ifconfig.me`
其他
| 常用命令 | 说明 |
|---|---|
who 或 w | 显示所有登录用户 |
whoami | 显示当前用户名 |
whatis | 显示命令的简要描述 |
which | 查找命令路径 |
whereis | 查找命令、帮助文件或源代码的路径 |
sudo -i | 以超级用户身份切换到交互式 shell(sudo 用于提权) |
pwd | 显示当前工作目录路径 |
nano /etc/issue | 编辑登录前的提示信息 |
nano /etc/motd | 编辑登录后的提示信息 |
runlevel | 查看当前的运行级别 |
reboot | 重启系统 |
logout 或 exit 或 Ctrl+D | 注销当前会话 |
shutdown | 计划性关机,允许延迟并通知用户 参考 |
poweroff | 立即关闭电源 |
type | 判断是否为 bash 内部命令(内部命令不显示路径,优先级:别名 > 内部命令 > 外部命令) |
source 或 . | 执行当前 shell 脚本,使修改的配置文件立即生效 |
alias | 设置别名,取消别名:unalias |
hash | 显示命令路径缓存及其使用次数 |
sleep | 延迟执行(单位:秒) |
clear 或 Ctrl+L | 清屏 |
man 或 info | 查看程序手册(info 比 man 更详细) |
stat | 显示文件或文件系统的状态 |
hexdump | 以十六进制、十进制、八进制或 ASCII 显示文件内容 |
| 包相关命令 | 说明 |
|---|---|
apt update | 列出所有可更新的软件清单命令 |
apt upgrade | 升级软件包 |
dpkg -s <软件包名称> | 返回关于软件包的详细状态信息。如果未安装,会提示找不到软件包。 |
apt list --installed <软件包名称> | 如果软件包已安装,输出结果会显示 [installed] 标记 |
scp <本地文件路径> <用户名>@<服务器 IP 或域名>:<远程目录路径> | 上传文件夹需要加 -r 参数 |
sftp username@remote_ip get put | sftp 文件传输协议 |
- 自定义提示符:
nano ~/.bashrcPS1='\[\033[01;35m\]\t\[\033[00m\] \[\033[01;32m\]\u@\h\[\033[00m\] \[\033[01;34m\]\w\[\033[00m\] \$ '
**\[\033[01;31m\]**:
`\033` 是转义字符,表示开始颜色设置。
`[01;35m` 设置了颜色样式:
`01`:加粗
`35`:紫色(35 是 ANSI 颜色代码中的紫色)
所以,这段代码会将后面显示的内容变为红色并加粗。
**\t**: 这是一个格式化指令,表示“当前时间”(24 小时制),显示时间格式为 `hh:mm:ss`。
**\[\033[00m\]**: 这个部分用于重置颜色或样式,恢复到默认样式。
**\[\033[01;32m\]**: [01;32m` 设置绿色(32 是绿色的 ANSI 代码),并加粗。
**\u**: 这是一个格式化指令,表示当前的用户名。
**@**: 这是简单的字符,表示用户名和主机名之间的分隔符。
**\h**: 这是一个格式化指令,表示主机名的短版本(例如,如果主机名是 `myserver.local`,它将显示为 `myserver`)。
**\[\033[00m\]**: 再次重置颜色。
**\[\033[01;34m\]**: [01;34m` 设置蓝色并加粗。
**\w**: 这是一个格式化指令,表示当前工作目录的路径。
**\[\033[00m\]**: 这一部分再次重置颜色,确保后面的字符不受前面样式的影响。
**\$**:这是一个格式化指令,表示:如果是普通用户,则显示 `$`。如果是超级用户(root),则显示 `#`。常识
- 提示符中的
$指的是普通用户,#指的是超级用户 - 多个命令之间使用
;隔开,每个命令都会执行,增加echo可以让输出换行 &&(逻辑与): 只有当前一个命令成功执行后,才会执行下一个命令。||(逻辑或): 只有当前一个命令失败后,才会执行下一个命令。- 命令+
&可以后台执行 \可以给命令换行,同时也是转义符- 命令前面加
\表示强制使用原始命令,不使用别名 ~: 指当前用户文件夹.开头文件是隐藏文件.+ 文件 可以使配置立即生效,相当于source>用于覆盖文件>>用于追加文件|管道符,将一个命令的标准输出作为另一个命令的标准输入ps aux | grep ssh
bash 快捷键
| 快捷键 | 说明 |
|---|---|
^+l(^指 ctrl) | 清屏,等于 clear |
^+o | 执行当前命令,并重新显示当前命令 |
^+s | 阻止屏幕输出,锁定,使用 ^+q 解锁 |
^+c | 终止命令 |
^+z | 挂起命令,后台运行 |
alt+. | 将前一条命令的最后一个参数作为这个命令的参数 |
alt+r | 删除整行 |
^+u | 删除光标之前的所有字符串 |
^+k | 删除光标之后的所有字符串 |
^+d | 退出命令行 |
获得帮助
| 命令 | 说明 |
|---|---|
help | 获取内部命令的帮助信息, help echo , help history,man bash查看全部内部命令 |
whatis | 显示命令的简短说明, 等于man -f |
--help或-h | 获取外部命令的帮助信息,date --help,有些不支持 -h |
man | 用于查看各种命令、函数和配置文件的手册页面,手册存放在 /usr/share/man |
info | 比man更详细,包含教程和示例 |
/usr/share/doc/ |
man命令有不同的章节,常见的节号包括:(参考)
- 1:用户命令
- 2:系统调用
- 3:C 库函数
- 4:设备和特殊文件
- 5:文件格式和约定
- 6:游戏和演示
- 7:杂项
- 8:系统管理命令
16:13:47 root@aliyun001 ~ # whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz // 这里显示ls命令的程序和说明所在路径
16:48:10 root@aliyun001 ~ # whatis ls
ls (1) - list directory contents // 这里显示ls的手册章节是在1章节,就是指ls.1.gz文件
16:48:19 root@aliyun001 ~ # man 1 ls
// 这里查看ls手册的1章节,实际就是打开了ls.1.gz文件,命令不加数字默认最后一个章节一些常见的选项包括:
-f:显示与指定关键字相关的手册页面。-k:搜索手册页中与关键字匹配的条目。-a:显示所有匹配的手册页面。-w:仅显示手册页的位置,而不显示其内容。
init 命令
临时修改,使用runlevel查看
- 0 | 关机 | 系统关机状态
- 1 | 单用户模式 | 系统维护/root 权限
- 2 | 多用户模式(无 NFS) | 基本多用户模式
- 3 | 完整多用户模式 | 标准命令行界面
- 4 | 保留 | 用户自定义
- 5 | 图形界面模式 | 带 GUI 的多用户模式
- 6 | 重启 | 系统重启
bash shell
显示当前使用的 shell: echo ${SHELL} 显示当前系统使用的所有 shell: cat /etc/shells
时间
- 显示时间:
date - 显示日历:
cal, 有些系统不支持 - 显示时区列表:
timedatectl list-timezones - 设置时区(上海):
timedatectl set-timezone Asia/Shanghai
会话管理
- screen 使用较少,了解即可
- Tmux 是一个终端复用器(terminal multiplexer) 阮一峰-Tmux 使用教程
会话(Session)管理
| 操作 | 命令/快捷键 |
|---|---|
| 新建会话 | tmux new -s <会话名> |
| 断开当前会话,依旧后台运行 | Ctrl+B → d |
| 重新连接会话 | tmux attach -t <会话名> |
| 列出所有会话 | tmux ls |
| 重命名当前会话 | Ctrl+B → $ |
| 切换会话 | Ctrl+B → ( 或 ) |
| 关闭会话 | tmux kill-session -t <会话名> |
窗口(Window)管理
| 操作 | 快捷键 |
|---|---|
| 新建窗口 | Ctrl+B → c |
| 关闭当前窗口 | Ctrl+B → & Ctrl+D |
| 重命名当前窗口 | Ctrl+B → , |
| 切换窗口 | Ctrl+B → 0-9(数字键) |
| 下一个窗口 | Ctrl+B → n |
| 上一个窗口 | Ctrl+B → p |
| 窗口列表 | Ctrl+B → w(可视化选择) |
窗格(Pane)操作
| 操作 | 快捷键 | |
|---|---|---|
| 水平分割窗格 | Ctrl+B → " | |
| 垂直分割窗格 | Ctrl+B → % | |
| 切换窗格 | Ctrl+B → 方向键 | |
| 关闭当前窗格 | Ctrl+B → x | |
| 全屏切换当前窗格 | Ctrl+B → z | |
| 调整窗格大小 | Ctrl+B → Alt+方向键 | |
| 同步输入所有窗格 | Ctrl+B → :setw synchronize-panes |
复制模式与滚动
| 操作 | 快捷键 |
|---|---|
| 进入复制模式 | Ctrl+B → [ |
| 退出复制模式 | Esc 或 Enter |
| 搜索文本 | Ctrl+B → [ → ?(反向搜索)或 /(正向搜索) |
| 快速翻页 | Ctrl+B → [ → PgUp/PgDn |
其他实用操作
| 操作 | 命令/快捷键 |
|---|---|
| 重新加载配置 | Ctrl+B → :source-file ~/.tmux.conf |
| 显示时间 | Ctrl+B → t |
| 列出所有快捷键 | Ctrl+B → ? |
| 启用鼠标支持 | 在 ~/.tmux.conf 中添加 set -g mouse on |
输出信息 echo
echo 命令是 Linux 中最基本和常用的命令之一,用于在终端中显示文本或变量的值。 echo 是 Linux/Unix 系统中的内置命令,主要用于:
- 在终端显示文本信息
- 输出变量的值
- 生成格式化的字符串
- 向文件追加内容
基本语法: echo [选项][字符串]
常用选项:
- -n 不输出换行符
- -e 启用转义字符解释
- -E 禁用转义字符解释(默认)
转义字符(需要 -e 选项):
- \n - 换行
- \t - 制表符
- \r - 回车
- \b - 退格
- \ - 反斜杠
- " - 双引号
- \a - 响铃
引号问题:
- 双引号:弱引用,会解释变量和特殊字符
- 单引号:强引用,原样输出所有内容,屏蔽特殊含义
- 无引号:多个空格会被压缩为一个
编码和字符集
- 查看语言和编码:
echo $LANG - 切换中文语言:
LANG=zh_CN.UTF-8(有些改了也不显示中文提示) - 切换英文语言:
LANG=en_US.UTF-8
反引号``和$(), 大括号
反引号: 命令转换,等于$(),变量和命令都执行,并且将反引号的内容当成命令执行后,交给调用反引号的命令继续执行
11:43:29 root@aliyun001 ~ # echo "My hostname is `hostname`"
My hostname is aliyun001
touch `hostname`-`date +%F`.txt // 生成主机名+年月日的txt空文件
ls -l $(echo `hostname`-`date +%F`.txt) // 使用$()嵌套使用命令,反引号可直接替换为$(),如下:
ls -l $(echo $(hostname)-$(date +%F).txt)大括号:可快速批量生成特定字符串
12:18:56 root@aliyun001 ~ # echo file{1,2,3}.txt
file1.txt file2.txt file3.txt // 批量输出
12:20:51 root@aliyun001 ~ # echo {1..5}
1 2 3 4 5 // 使用..省略中间连续的数字,字母也可以
12:23:31 root@aliyun001 ~ # echo {20..10..2}
20 18 16 14 12 10 // 20开始到10,步长2Table 键
- 按单击: 如果唯一,直接补全命令/路径
- 双击: 给出所有符合条件的命令/路径列表
命令行历史
history 是 Linux 系统中一个极其有用的内置命令,它记录了用户在终端中执行过的所有命令历史
当你在终端输入命令时,Bash 会将这些命令保存在内存中,并在正常退出时写入到 ~/.bash_history 文件中(默认配置下)。
常用选项参数详解
| 选项 | 说明 | 示例 |
|---|---|---|
-c | clear 清除所有历史记录 | history -c |
-d | delete 删除指定位置的历史记录 | history -d 1005 |
-a | append 立即将内存中的历史写入历史文件 | history -a |
-n | 从历史文件中读取未读的历史记录 | history -n |
-r | read 读取历史文件内容到当前会话 | history -r |
-w | write 将当前历史记录写入历史文件 | history -w |
-s | 将命令添加到历史记录中,不执行命令 | history -s |
快速执行历史命令
| 选项 | 说明 |
|---|---|
!n | 执行历史记录中第 n 条命令 !2:执行第 2 条命令,!-2:执行倒数第二条 |
!! | 执行上一条命令 |
!string | 执行最近一条以 string 开头的命令 |
!?at | 最近包含 at 的命令 |
!* | 将前一条命令的所有参数作为这个命令的参数 cat !* |
!:n | 将前一条命令的第 n 个参数作为这个命令的参数 cat !:2 |
alt+. | 快捷键,将前一条命令的最后一个参数作为这个命令的参数 |
环境变量配置
通过环境变量可以自定义 history 命令的行为:
| 变量 | 说明 | 推荐值 |
|---|---|---|
HISTSIZE | 内存中保存的历史命令数量 | 5000 |
HISTFILESIZE | 历史文件中保存的命令数量 | 10000 |
HISTCONTROL | 控制历史记录方式 | ignoredups:erasedups |
HISTIGNORE | 指定不记录的命令 | "ls:cd:pwd:exit" |
配置示例(添加到 ~/.bashrc文件(用户级配置)或/etc/profile文件(系统级配置)才能永久保存):
export HISTSIZE=5000
export HISTFILESIZE=10000
export HISTCONTROL=ignoredups:erasedups
export HISTIGNORE="ls:cd:pwd:exit"
export HISTTIMEFORMAT="%F %T `whoami` "加 export:设置一个环境变量,影响当前 shell 及其子进程。 不加 export:仅在当前 shell 会话有效,不影响子进程。
文件管理
基础知识
绝对路径:以/开头,从根目录开始,完整的文件路径
相对路径: 任何不以/和~开头的路径,相对于当前工作目录的位置或特殊场景下某个目录的位置
目录名:
dirname, 文件的路径,不包含自己的文件名, /etc/a/b 中/etc/a 为 dirname基名:
basename, 文件自己的名字,/etc/a/b 中 b 为 basename,目录也是文件文件列表中的
.指当前目录,..指父目录(上级目录)文件的三个时间,使用
ls --time=mtime filename或stat filename命令读取:mtime: modify time 内容的修改时间ctime: change time 文件属性的修改时间(大小,时间,权限)atime: access time 被读取的时间
Linux 中文件后缀没有 windows 严格
Linux 中只有换行\n 没有回车\r
常用通配符(常用于匹配文件,只知道一部分信息剩下用通配符表示: abc*, a??, a[a-c])
*: 匹配零个或多个字符,rm -rf *ls -a bash*, 无法删除或匹配隐藏的文件?: 匹配任何单个字符~: 当前用户家目录~mage: 用户 mage 的家目录~+和.: 当前工作目录~-: 前一个工作目录[0-9]: 匹配数字范围[a-z]: 匹配字母范围[wang]: 匹配列表中的任何的一个字符[^wang]: 匹配列表中的所有字符以外的字符
/根目录,也是文件名分隔符,~当前用户目录简写以
.开头的是隐藏文件文件名称大小写敏感
bin -> usr/bin: 箭头这种形式指的链接文件,相当于快捷方式,可用lh命令创建蓝色-->目录; 绿色-->可执行文件; 红色-->压缩文件; 浅蓝色-->链接文件; 灰色-->其他文件
启用颜色库和自动显示颜色的
~/.bashrc配置bashexport LS_OPTIONS='--color=auto' eval "$(dircolors)" alias ls='ls $LS_OPTIONS' alias ll='ls $LS_OPTIONS -alh'
文件目录结构
| 目录 | 说明 |
|---|---|
/ | 文件系统的起始位置,称为根 |
/bin | bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 |
/boot | 这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。 |
/dev | dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。 |
/etc | etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。 |
/home | 用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。 |
/lib | lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。 |
/lost+found | 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。 |
/media | linux 系统会自动识别一些设备,例如 U 盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。 |
/mnt | 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了 |
/opt | opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个 ORACLE 数据库则就可以放到这个目录下。默认是空的 |
/proc | proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的 ping 命令,使别人无法 ping 你的机器:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all |
/root | 该目录为系统管理员,也称作超级权限者的用户主目录。 |
/sbin | s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。 |
/selinux | 这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放 selinux 相关的文件的。 |
/srv | 该目录存放一些服务启动之后需要提取的数据。 |
/sys | 这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。 sysfs 文件系统集成了下面 3 种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。该文件系统是内核设备树的一个直观反映。 当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。 |
/tmp | tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。 |
/usr | usr 是 unix system resources(unix 系统资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。 |
/usr/bin | 系统用户使用的应用程序。 |
/usr/sbin | 超级用户使用的比较高级的管理程序和系统守护程序。 |
usr/scr | 内核源代码默认的放置目录。 |
/var | var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。 |
/run | 是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。 |
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin,/sbin,/usr/bin,/usr/sbin: 这是系统预设的执行文件的放置目录,比如ls就是在/bin/ls目录下的。值得提出的是
/bin、/usr/bin是给系统用户使用的指令(除 root 外的通用用户),而/sbin,/usr/sbin则是给 root 使用的指令。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。
文件类型
drwxr-xr-x 2 root root 4.0K Apr 15 11:26 .pip
-rw-r--r-- 1 root root 161 Jul 9 2019 .profile
crw-rw---- 1 root tty 7, 70 Oct 7 23:28 vcsu6
brw-rw---- 1 root disk 254, 0 Oct 7 23:28 vda
lrwxrwxrwx 1 root root 7 Apr 15 11:19 bin -> usr/bin| 参数 | 说明 |
|---|---|
- | 普通文件; |
d | directory, 目录; |
l | link, 链接文档(link file); |
b | block, 装置文件里面的可供储存的接口设备(可随机存取装置); |
c | character, 装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置); |
p | pipe, 管道文件; |
s | socket, 套接字文件; |
接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。
文件操作大杂烩
pwd:显示当前工作文件夹$OLDPWD: 用于记录上次工作目录的变量,cd -命令就是访问了这个变量stat: 查看文件的状态,stat a.txtfile: 查看文件的类型,file a.txttouch: 不存在就创建文件,存在就刷新 mtime ctime atime 的时间,touch filename
切换cd
cd: 切换到当前用户主目录,等同于cd ~, cd 的作用是改变 shell 的工作目录
cd ..: 切换到父目录cd -: 切换到上次的工作目录
复制 cp
cp: 实现文件或目录的复制 参考, 如果目标文件夹不存在就创建,存在就会复制为目标文件夹的子目录
语法:
cp [options] source destcp [options] source... directorycp [options] -t directory source
选项(常用-av选项)
-r或-R: 递归复制目录及其内容(用于复制目录)-p: 保留文件的原始属性(如权限、所有者、时间戳等)-d: --no-dereference --preserve=links 不复制原文件,只复制链接名-a:归档模式,等同于-dpR,保留所有文件属性和递归复制目录,常用于备份-v:显示详细的复制过程(verbose)-b: 目标存在,覆盖前先备份,形式为filename~,只保留最近的一个备份
移动+重命名mv
mv: 移动或重命名文件
语法:
mv [options] source destmv [options] source... directory
选项:
-i: 交互, 如果目标存在会询问-f: 强制, 如果目标存在直接覆盖-b: 备份, 如果目标存在,先备份后覆盖
reaname: 批量重命名文件 参考
语法:
rename [选项] '表达式' 文件...表达式:指定文件名转换规则的正则表达式或替换字符串文件:要重命名的目标文件,支持通配符(如*.txt)
示例:
rename 'conf' 'conf.bak' f*: 将所有 f 开头文件中的 conf 改为 conf.bakrename '.bak' '' *.bak: 将所有有.bak 后缀的文件删除.bak 后缀
删除rm
rm: 删除一个文件或者目录
语法: rm [options] name...
| 参数 | 说明 |
|---|---|
-i | 交互, 删除前逐一询问 |
-f | 即使原档案属性设为唯读,亦直接删除,无需逐一确认 |
-r | 递归, 将目录及以下之档案亦逐一删除 |
| 命令 | 说明 |
|---|---|
rm -rf / | 删根操作, 目前有保护, 需要加--no-preserve-root参数, rm -rf --no-preserve-root / |
rm -rf /* | 可以直接执行,效果和删根一样 |
rm -rf * .[^.]* | 保留当前文件夹, 删除当前文件夹内所有文件,包括隐藏文件, .[^.]*代表点开头的第二个不是点的(排除.和..)所有文件,即隐藏文件 |
rm -- -f | 使用--可以删除-开头的文件,或者使用绝对或相对路径删 |
shred : 安全删除文件(覆盖后删除)
语法: shred [选项]... 文件...
| 参数 | 说明 |
|---|---|
-n N | 覆写次数(默认为 3 次) |
-z | 最后用零覆写以隐藏 shred 操作 |
-u | 覆写后截断并删除文件 |
-v | 显示详细操作过程 |
-f | 必要时强制更改权限以允许写入 |
-x | 不要处理超过文件大小的块 |
shred -zvnu 5 filename: 对文件进行反复 5 次复写后删除
目录tree mkdir rmdir
tree以树状图显示目录
刚开始没有需要自己安装apt install tree 参考
语法: tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式>][目录...]
| 参数 | 说明 |
|---|---|
-d | 只显示目录 |
-L | level, 指定显示 ide 层级 |
p | pattern, <范本样式> 只显示符合范本样式的文件或目录名称 |
mkdir创建目录
语法: mkdir [-p] dirName
| 参数 | 说明 |
|---|---|
-p | 确保目录名称存在,不存在的就建一个 |
-v | 显示详细信息 |
-m | MODE, 创建目录时直接指定权限 |
rmdir删除空的目录
语法: rmdir [-p] dirName
| 参数 | 说明 |
|---|---|
-p | 当子目录被删除后使它也成为空目录的话,则顺便一并删除 |
-v | 显示 i 详细信息 |
