当前位置: 首页 > article >正文

4、ubuntu系统 | 文本和目录操作函数

1、目录操作函数

ls(列出目录内容)

  • 用途:列出指定目录中的文件和子目录。
  • 语法ls [选项] [路径]
  • 常用选项
    • -l:以长格式显示文件详细信息(权限、所有者、大小、时间等)。
    • -a:显示隐藏文件(以.开头的文件)。
    • -R:递归列出子目录内容。
# 列出当前目录下的所有文件和子目录
ls# 列出当前目录的详细信息(包含隐藏文件)
ls -la   # 可简写成ll# 递归列出当前目录及其子目录的内容
ls -R

cd(切换目录)

  • 用途:更改当前工作目录。
  • 语法cd [路径]
  • 常用路径
    • ~:用户主目录(如 /home/username)。
    • /:根目录。
    • ..:上一级目录。
# 切换到用户主目录
cd ~# 切换到根目录
cd /# 切换到上一级目录
cd ..

mkdir(创建目录)

  • 用途:创建新目录。
  • 语法mkdir [选项] 目录名
  • 常用选项
    • -p:递归创建目录(自动创建父目录)。-p,--parents的缩写,表示自动创建路径中的父目录(如果它们不存在)
# 创建单个目录
mkdir new_folder# 递归创建多级目录(如 a/b/c)
mkdir -p a/b/c

rmdir(删除空目录)

  • 用途:删除空目录。
  • 语法rmdir [目录名]
  • 注意:目录必须为空,否则会报错。
# 删除空目录 example_dir
rmdir example_dir

rm(删除文件或目录)

  • 用途:删除文件或目录。
  • 语法rm [选项] 文件或目录
  • 常用选项
    • -r:递归删除目录及其内容,recursive。
    • -f:强制删除(不提示确认),force。
# 删除文件 file.txt
rm file.txt# 递归删除目录及其内容(强制删除)
rm -rf directory_name

cp(复制文件或目录)

  • 用途:复制文件或目录。
  • 语法cp [选项] 源路径 目标路径
  • 常用选项
    • -r:递归复制目录。
    • -i:交互式复制(覆盖前提示),interactive。
# 复制文件
cp source.txt destination.txt# 递归复制目录
cp -r source_dir/ destination_dir/

mv(移动或重命名文件/目录)

  • 用途:移动文件或目录,或重命名文件/目录。
  • 语法:mv  [选项]  源文件/目录  目标路径/新名称
  • 常用选项
    • -v:显示详细操作信息
    • -i:交互式操作(防止覆盖)
    • -n:禁止覆盖已存在的文件
    • -u:当源文件比目标文件新,或者目标文件不存在时,才执行移动操作
    • -b:覆盖前备份原文件

# 1. 创建测试文件和目录
mkdir -p test_dir1 test_dir2
touch test_dir1/file1.txt test_dir1/file2.txt test_dir1/file3.txt
echo "初始文件结构:"
ls -R test_dir1
# 输出:
# test_dir1:
# file1.txt  file2.txt  file3.txt# ----------------------------
# 2. 移动单个文件
# 将 file1.txt 移动到 test_dir2
mv test_dir1/file1.txt test_dir2/
echo "移动单个文件后:"
ls -R test_dir2
# 输出:
# test_dir2:
# file1.txt# ----------------------------
# 3. 重命名文件
# 将 file2.txt 重命名为 new_file.txt
mv test_dir1/file2.txt test_dir1/new_file.txt
echo "重命名文件后:"
ls test_dir1
# 输出:
# file3.txt  new_file.txt# ----------------------------
# 4. 移动多个文件
# 将多个文件移动到目标目录
mv test_dir1/file3.txt test_dir1/new_file.txt test_dir2/
echo "移动多个文件后:"
ls -R test_dir2
# 输出:
# test_dir2:
# file1.txt  file3.txt  new_file.txt# ----------------------------
# 5. 使用 -i 防止覆盖(交互式)
# 如果目标文件存在,会提示是否覆盖
# 示例:尝试覆盖 test_dir2 中的 file1.txt
mv -i test_dir1/file1.txt test_dir2/file1.txt
# 输出示例:
# mv: overwrite 'test_dir2/file1.txt'? y# ----------------------------
# 6. 使用 -v 显示详细操作
# 显示移动过程的详细信息
mv -v test_dir1/file1.txt test_dir2/
# 输出示例:
# 'test_dir1/file1.txt' -> 'test_dir2/file1.txt'# ----------------------------
# 7. 使用 -n 禁止覆盖
# 如果目标文件存在,跳过操作
mv -n test_dir1/file1.txt test_dir2/
# 输出:无(因为目标文件已存在)# ----------------------------
# 8. 使用通配符批量移动
# 移动所有 .txt 文件
touch test_dir1/a.txt test_dir1/b.txt
mv test_dir1/*.txt test_dir2/
echo "通配符批量移动后:"
ls -R test_dir2
# 输出示例:
# test_dir2:
# a.txt  b.txt  file1.txt  file3.txt  new_file.txt# ----------------------------
# 9. 使用 -b 覆盖前备份
# 覆盖前备份原文件(备份文件名加 ~)
mv -b test_dir2/file1.txt test_dir2/backup.txt
echo "覆盖前备份示例:"
ls -R test_dir2
# 输出示例:
# test_dir2:
# backup.txt  file1.txt~  a.txt  b.txt  file3.txt  new_file.txt# ----------------------------
# 10. 结合 find 移动特定文件
# 查找并移动所有 .log 文件
touch test_dir1/sample.log
find test_dir1 -name "*.log" -exec mv {} test_dir2/ \;
echo "find + mv 示例:"
ls -R test_dir2
# 输出示例:
# test_dir2:
# sample.log  backup.txt  file1.txt~  a.txt  b.txt  file3.txt  new_file.txt# ----------------------------
# 11. 移动目录
# 移动整个目录及其内容
mv test_dir1 test_dir2/
echo "移动目录后:"
ls -R test_dir2
# 输出示例:
# test_dir2:
# sample.log  backup.txt  file1.txt~  a.txt  b.txt  file3.txt  new_file.txt  test_dir1# test_dir2/test_dir1:
# (空目录,因为所有文件已被移动)

find(查找文件或目录)

  • 用途:在目录树中查找文件或目录。
  • 语法find [路径] [表达式]
  • 常用选项
    • -name:按名称查找。
    • -type:按类型查找(f表示文件,d表示目录)。
    • -exec:对查找到的文件执行命令。\; 表示-exec 命令的结束(; 必须用反斜杠转义,避免被 shell 提前解析)。{}:占位符,表示当前找到的文件名。
# 在当前目录下查找所有以 .txt 结尾的文件
find . -name "*.txt"# 查找当前目录下的所有目录
find . -type d# 查找当前目录下的所有文件
find . -type f# 查找并删除path路径下所有 .tmp 文件
find /path -name "*.tmp" -exec rm -f {} \;

2、文本处理函数

 cat(查看文件内容)

  • 用途catconcatenate and print),主要用于查看文件内容、创建文件、合并文件以及结合其他工具进行文本处理。
  • 语法cat [选项] 文件名
  • 常用选项
    • -n:显示行号,--number。
    • -b:显示非空行的行号,--number-nonblank。
    • -v :可显示文件中的特殊字符(如制表符、换行符等)
    • -E :可以在每行的行尾显示 $ 符号
# 查看文件内容
cat file.txt# 查看文件内容并显示行号
cat -n file.txt# 查看文件内容并显示特殊字符
cat -v example.txt# 输出文件内容,并在每行末尾显示 $
cat -E filename.txt# 通过重定向操作符 >,可以创建一个新文件并写入内容
cat > newfile.txt # 输入内容后,按 Ctrl+D 结束输入并保存
# 举例
cat > greeting.txt
Hello, World!
^D (按 Ctrl+D)# 使用 >> 重定向操作符,可以将内容追加到已有文件的末尾。
cat >> greeting.txt
Goodbye, World!
^D (按 Ctrl+D)# cat 可以将多个文件的内容合并,并输出到一个新文件或直接显示在终端。
cat file1.txt file2.txt > merged.txt

more(分页查看文件内容)

  • 用途:快速查看小型文件,功能简单直观。

  • 基本功能

    • 单向分页:只能向下翻页(more 的全称是 "more pages")。

    • 基础搜索:支持向前搜索(/),但无法回退。
    • 简单操作:适合快速查看小型文件或简单分页。
  • 常用操作

按键功能
空格键向下翻一页
Enter向下翻一行
q退出
/向前搜索(输入关键词)
=显示当前行号
  • 语法
    • more 文件名
# 分页查看文件内容
more large_file.txt

less(分页查看文件内容)

  • 用途:查看大文件(如日志文件)、需要搜索、跳转或实时跟踪的场景
  • 基本功能

    • 双向分页:支持上下翻页(less 的全称是 "less is more",功能比 more 更强大)。
    • 高级搜索:支持双向搜索(/ 向下,? 向上)。
    • 跳转功能:可直接跳转到文件开头(g)、结尾(G)或指定行号(如 50G)。
    • 实时跟踪:支持类似 tail -f 的实时跟踪(F 键)。
  • 常用操作

按键

功能

空格键

向下翻一页

b

向上翻一页

↑/↓

逐行滚动

/

向下搜索(高亮结果)

?

向上搜索

n

跳转到下一个匹配项

N

跳转到上一个匹配项

g

跳转到文件开头

G

跳转到文件结尾

F

实时跟踪文件(类似 tail -f

q

退出

less large_log_file.log  # 查看大文件
less +/error /var/log/syslog  # 直接搜索 "error"
less +F /var/log/syslog  # 实时跟踪日志(按 Ctrl+C 退出)

head / tail(查看文件头/尾)

  • 用途:查看文件的前几行或后几行。
  • 语法
    • head [选项] 文件名
    • tail [选项] 文件名
  • 常用选项
    • -n:指定行数。
    • -ftail):实时跟踪文件尾部内容。
# 查看文件的前10行
head -n 10 file.txt# 查看文件的最后5行
tail -n 5 file.txt# 实时跟踪日志文件
tail -f /var/log/syslog

grep(文本搜索)

  • 用途:文本搜索工具,支持 正则表达式,用于在文件中查找匹配特定模式的行
  • 语法:grep [选项] "搜索模式" 文件路径
  • 常用选项
    • -i:忽略大小写。
    • -r:递归搜索目录。
    • -v:反向匹配(显示不包含模式的行)。
    • -n:显示行号
    • -l:仅显示文件名
    • -c:统计匹配行数

选项功能示例
-i忽略大小写grep -i "hello" file.txt
-r递归搜索目录grep -r "pattern" /path/to/dir
-n显示行号grep -n "error" file.txt
-l仅显示文件名grep -l "keyword" *.txt
-v反向匹配grep -v "success" file.txt
-c统计匹配行数grep -c "error" file.txt
-w完整单词匹配grep -w "word" file.txt
-E使用扩展正则`grep -E "error
-o仅输出匹配部分grep -o "yes" file.txt
-A n显示匹配行后 n 行grep -A 3 "error" file.txt
-B n显示匹配行前 n 行grep -B 2 "error" file.txt
-C n显示匹配行前后 n 行grep -C 2 "error" file.txt
# 1. 创建测试文件和目录
mkdir -p test_dir
touch test_dir/file1.txt test_dir/file2.txt test_dir/file3.txt
echo "hello world" > test_dir/file1.txt
echo "Hello World" >> test_dir/file1.txt
echo "error occurred" >> test_dir/file2.txt
echo "ERROR: system failure" >> test_dir/file2.txt
echo "TODO: fix this" > test_dir/file3.txt
echo "FIXME: update code" >> test_dir/file3.txt
echo "Initial files created in test_dir/"# 2. 基础用法
echo -e "\n--- 基础用法 ---"
grep "hello" test_dir/file1.txt
# 输出:hello worldgrep -i "hello" test_dir/file1.txt
# 输出:
# hello world
# Hello Worldgrep -n "error" test_dir/file2.txt
# 输出:
# 1:error occurred
# 2:ERROR: system failure# 3. 递归搜索
echo -e "\n--- 递归搜索 ---"
grep -r "TODO" test_dir/
# 输出:
# test_dir/file3.txt:TODO: fix this# 4. 正则表达式
echo -e "\n--- 正则表达式 ---"
grep "^error" test_dir/file2.txt
# 输出:error occurredgrep -E "error|fail" test_dir/file2.txt
# 输出:
# error occurred
# ERROR: system failure# 5. 上下文显示
echo -e "\n--- 上下文显示 ---"
grep -C 1 "error" test_dir/file2.txt
# 输出:
# error occurred
# ERROR: system failure# 6. 统计与过滤
echo -e "\n--- 统计与过滤 ---"
grep -c "error" test_dir/file2.txt
# 输出:2grep -v "error" test_dir/file2.txt
# 输出:
# TODO: fix this
# FIXME: update code# 7. 高级用法
echo -e "\n--- 高级用法 ---"
grep -o "hello" test_dir/file1.txt
# 输出:
# hello
# Hellogrep -rl "TODO" test_dir/
# 输出:test_dir/file3.txt# 8. 结合 find 命令
echo -e "\n--- 结合 find ---"
find test_dir/ -name "*.txt" -exec grep -l "TODO" {} \;
# 输出:test_dir/file3.txt# 9. 处理压缩文件(需安装 zgrep)
# 示例(需预先压缩文件):
# gzip test_dir/file1.txt
# zgrep "hello" test_dir/file1.txt.gz# 10. 清理测试环境
echo -e "\n--- 清理测试数据 ---"
rm -rf test_dir
echo "All test data removed."

sed(流编辑器)

  • 用途:对文本进行流式编辑(替换、删除、插入等)。
    • 语法sed [选项] '命令' 文件名
    • 常用命令
      • s/原字符串/新字符串/:替换字符串。
      • d:删除行。
# 替换文件中的 "old" 为 "new"
sed 's/old/new/g' file.txt# 删除文件中的空行
sed '/^$/d' file.txt# 将替换结果保存到新文件
sed 's/old/new/g' file.txt > new_file.txt

awk(文本分析和处理)

  • 用途:按列处理文本数据(默认以空格或Tab分隔)。
  • 语法awk 'BEGIN{动作} {动作} END{动作}' 文件名
  • 常用操作
    • $1:第一列,$2:第二列,依此类推。
    • $0:整行内容。
# 打印文件的第1列和第3列
awk '{print $1, $3}' file.txt# 计算文件中第3列的总和
awk '{sum += $3} END {print sum}' file.txt# 按条件筛选行(第2列大于 100)
awk '$2 > 100' file.txt

sort(排序文本)

  • 用途:对文本行进行排序。
  • 语法sort [选项] 文件名
  • 常用选项
    • -n:按数字排序。
    • -r:逆序排序。
    • -k:指定排序列。
# 对文件内容按字母顺序排序
sort file.txt# 按第2列数字排序
sort -n -k 2 file.txt# 逆序排序
sort -r file.txt

uniq(去重)

  • 用途:去除重复行。
  • 语法uniq [选项] 文件名
  • 常用选项
    • -d:仅显示重复行。
    • -u:仅显示唯一行。
# 去除相邻重复行
uniq file.txt# 显示所有重复行
uniq -d file.txt

wc(统计行数、单词数、字节数)

  • 用途:统计文件的行数、单词数和字节数。
  • 语法wc [选项] 文件名
  • 常用选项
    • -l:统计行数。
    • -w:统计单词数。
    • -c:统计字节数。
# 统计文件的行数
wc -l file.txt# 统计单词数
wc -w file.txt# 统计字节数
wc -c file.txt

3、其他实用函数

echo(输出内容)

用途

echo 是 Linux/Unix 系统中最基础的命令之一,主要用于:

  1. 输出文本:将指定的字符串或变量值输出到终端或文件。
  2. 调试脚本:在 Shell 脚本中打印变量值或调试信息。
  3. 格式化输出:通过转义字符控制输出格式(如换行、制表符等)。
  4. 重定向输出:将输出内容写入文件或追加到文件末尾。

语法

echo  [选项]  [字符串]

  • 选项:控制输出行为(如是否换行、是否解析转义字符)。
  • 字符串:要输出的内容,可以是普通文本、变量或转义字符组合。

常用选项

选项功能示例
-n禁止换行echo -n "Hello"<br>输出后光标不换行。
-e启用转义字符echo -e "Hello\nWorld"<br>\n 表示换行。
-E禁用转义字符echo -E "Hello\nWorld"<br>\n 被当作普通字符输出。

场景命令功能
简单输出echo "text"输出文本并换行
禁止换行echo -n "text"输出文本后不换行
格式化输出echo -e "text\nwith\nformat"使用转义字符控制格式
输出变量echo "Value: $VAR"显示变量值
写入文件echo "text" > file.txt覆盖文件内容
追加文件echo "text" >> file.txt追加到文件末尾
# 1. 创建测试目录和文件
mkdir -p test_echo
echo "Initial test directory created."
# 输出:Initial test directory created.# 2. 基础用法
(llm) wangqiang@wangqiang:~$ echo -e "\n--- 基础用法 ---"
echo "Hello, Ubuntu!" # 默认情况下,echo 会在输出末尾添加换行符
echo "Hello, Ubuntu!"--- 基础用法 ---
Hello, Ubuntu!
Hello, Ubuntu!# 3. 禁止换行(-n 选项)
(llm) wangqiang@wangqiang:~$ echo -n "No newline: "
echo "This is on the same line."
No newline: This is on the same line.# 4. 转义字符(-e 选项)
(llm) wangqiang@wangqiang:~$ echo -e "\n--- 转义字符 ---"
echo -e "This is a new line.\nAnd this is another line."--- 转义字符 ---
This is a new line.
And this is another line.(llm) wangqiang@wangqiang:~$ echo -e "Tab\tseparated\ttext"
Tab     separated       text# 5. 反斜杠转义
(llm) wangqiang@wangqiang:~$ echo -e "\n--- 反斜杠处理 ---"
echo "This is a backslash: \\"--- 反斜杠处理 ---
This is a backslash: \# 6. 输出到文件(重定向)
(llm) wangqiang@wangqiang:~$ echo -e "\n--- 输出到文件 ---"
echo "Sample text" > test_echo/sample.txt
cat test_echo/sample.txt--- 输出到文件 ---
Sample text(llm) wangqiang@wangqiang:~$ echo "Append text" >> test_echo/sample.txt
cat test_echo/sample.txt
Sample text
Append text# 7. 变量输出
(llm) wangqiang@wangqiang:~$ echo -e "\n--- 变量输出 ---"
NAME="Ubuntu"
echo "Operating System: $NAME"--- 变量输出 ---
Operating System: Ubuntu# 8. 换行控制(-e 与 \c)
(llm) wangqiang@wangqiang:~$ echo -e "\n--- 换行控制 ---"
echo -e "This is line 1.\c" # \c 表示 禁止后续输出,并且 不换行
echo "This is line 2."--- 换行控制 ---
This is line 1.This is line 2.# 9. 特殊字符处理(-e)
(llm) wangqiang@wangqiang:~$ echo -e "\n--- 特殊字符处理 ---"
echo -e "This is a bell: \a"--- 特殊字符处理 ---
This is a bell: (llm) wangqiang@wangqiang:~$ echo -e "This is a backspace: \b\b\b"
This is a backspace: # 10. 格式化输出(转义字符组合)
(llm) wangqiang@wangqiang:~$ echo -e "\n--- 格式化输出 ---"
echo -e "Vertical tab:\vline"  --- 格式化输出 ---
Vertical tab:line(llm) wangqiang@wangqiang:~$ echo -e "Carriage return:\rWorld" 
Worldage return:# 11. 结合其他命令
(llm) wangqiang@wangqiang:~$ echo -e "\n--- 结合其他命令 ---"
DATE=$(date)
echo "Current date and time: $DATE"--- 结合其他命令 ---
Current date and time: 2025年 06月 03日 星期二 12:13:20 CST# 12. 清理测试环境
(llm) wangqiang@wangqiang:~$ echo -e "\n--- 清理测试数据 ---"
rm -rf test_echo
echo "All test data removed."--- 清理测试数据 ---
All test data removed.

touch(创建空文件)

  • 用途:创建一个空文件或更新文件的时间戳。
  • 语法touch 文件名

选项功能示例
-a仅更新访问时间(atime)touch -a file.txt
-m仅更新修改时间(mtime)touch -m file.txt
-c如果文件不存在,则不创建新文件touch -c file.txt
-t设置特定的时间戳(格式:[[CC]YY]MMDDhhmm[.ss]touch -t 202506031749 file.txt
-r使用参考文件的时间戳更新目标文件touch -r reference.txt target.txt
# 创建空文件
touch new_file.txt# 更新文件的时间戳
touch existing_file.txt# 批量创建多个文件
touch file1.txt file2.txt file3.txt# 设置特定时间戳
touch -t 202501010000 file.txt# 使用参考文件的时间戳
touch -r reference.txt target.txt# 仅更新时间戳	不创建文件,无操作
touch -c file.txt

tee(标准输出与文件保存)

  • 用途用于同时将数据输出到标准输出(通常是终端屏幕)并保存到文件中
  • 语法command | tee [选项] 文件
  • 常用选项
选项功能说明
-a / --append追加模式将内容追加到文件末尾,而非覆盖原文件。
-i / --ignore-interrupts忽略中断忽略 Ctrl+C 等中断信号,确保命令继续运行。
-p / --output-error错误处理默认模式为 warn-nopipe(向非管道文件写入出错时提示)。
--output-error=模式自定义错误行为模式可选:warn(提示)、exit(退出)、warn-nopipe(仅提示非管道错误)、exit-nopipe(非管道错误时退出)。
-u / --unbuffered无缓冲输出立即输出数据,不进行缓冲(实时显示)。
# =============== 基本用法:覆盖写入文件 =================
echo "=== 1. 覆盖写入文件 ==="
echo "Hello, World!" | tee output.txt
# 输出:
# Hello, World! (显示在终端)
# 文件 output.txt 内容: Hello, World!# =============== 追加模式:保留原文件内容 =================
echo "=== 2. 追加模式 ==="
echo "Appending this line." | tee -a output.txt
# 输出:
# Appending this line. (显示在终端)
# 文件 output.txt 内容:
# Hello, World!
# Appending this line.# =============== 同时写入多个文件 =================
echo "=== 3. 写入多个文件 ==="
echo "This goes to multiple files." | tee file1.txt file2.txt
# 输出:
# This goes to multiple files. (显示在终端)
# 文件 file1.txt 和 file2.txt 内容均为: This goes to multiple files.# =============== 捕获错误输出 =================
echo "=== 4. 捕获错误输出 ==="
ls /nonexistent_directory 2>&1 | tee error.log
# 输出:
# ls: cannot access '/nonexistent_directory': No such file or directory (显示在终端)
# 文件 error.log 内容: 同上错误信息# =============== 结合 sudo 写入受保护文件 =================
echo "=== 5. 使用 sudo 写入文件 ==="
echo "data" | sudo tee /tmp/protected_file.txt
# 输出:
# data (显示在终端)
# 文件 /tmp/protected_file.txt 内容: data
# 注意: 需管理员权限,实际运行时需输入密码# =============== 多行文本写入 =================
echo "=== 6. 多行文本写入 ==="
sudo tee /tmp/mytest.aa <<EOF
Line 1
Line 2
Line 3
EOF
# 输出:
# Line 1
# Line 2
# Line 3 (显示在终端)
# 文件 /tmp/mytest.aa 内容: 三行文本# =============== 结合管道链式操作 =================
echo "=== 7. 管道链式操作 ==="
find . -name "*.sh" -exec cat {} \; | tee all_scripts.txt | grep "function"
# 输出:
# 所有 .sh 文件内容 (显示在终端)
# 文件 all_scripts.txt: 所有 .sh 文件内容
# 终端还会显示包含 "function" 的行# =============== 实时监控与持久化 =================
echo "=== 8. 实时监控日志 ==="
tail -f /var/log/syslog | tee -i log_copy.txt
# 输出:
# 实时显示 syslog 内容 (按 Ctrl+C 停止)
# 文件 log_copy.txt: 实时保存相同内容# =============== 忽略中断信号 =================
echo "=== 9. 忽略中断信号 ==="
tail -f /var/log/auth.log | tee -i auth_monitor.log
# 输出:
# 即使按下 Ctrl+C,tee 仍会继续运行直到 tail 结束

chmod(修改文件权限)

  • 用途:更改文件或目录的权限。
  • 语法chmod [权限模式] 文件或目录
  • 权限模式
    • u(用户)、g(组)、o(其他)、a(所有)。
    • +(添加权限)、-(移除权限)、=(设置权限)。
    • 权限:r(读)、w(写)、x(执行)。
# 给文件所有者添加执行权限
chmod u+x script.sh# 设置文件权限为 755(用户可读写执行,其他用户可读执行)
chmod 755 file.txt

chown(修改文件所有者)

  • 用途:更改文件或目录的所有者和所属组。
  • 语法chown [用户:组] 文件或目录
# 更改文件所有者为 user1
chown user1 file.txt# 更改文件所有者为 user1,所属组为 group1
chown user1:group1 file.txt

tar(打包和解包)

  • 用途:创建或提取 .tar 或 .tar.gz 文件。
  • 语法
    • 打包:tar -cvf 压缩包名 路径
    • 解包:tar -xvf 压缩包名
  • 常用选项
    • z:支持 .gz 压缩。
    • j:支持 .bz2 压缩。
# 打包文件夹
tar -cvf archive.tar folder/# 解包 .tar.gz 文件
tar -xzvf archive.tar.gz

gzip / gunzip(压缩和解压)

  • 用途:压缩或解压 .gz 文件。
  • 语法
    • 压缩:gzip 文件名
    • 解压:gunzip 文件名.gz
# 压缩文件
gzip file.txt# 解压文件
gunzip file.txt.gz

相关文章:

4、ubuntu系统 | 文本和目录操作函数

1、目录操作函数 ls&#xff08;列出目录内容&#xff09; 用途&#xff1a;列出指定目录中的文件和子目录。语法&#xff1a;ls [选项] [路径]常用选项&#xff1a; -l&#xff1a;以长格式显示文件详细信息&#xff08;权限、所有者、大小、时间等&#xff09;。-a&#xff…...

docker部署ELK,ES开启安全认证

ES启动命令 docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 elasticsearch:8.17.0 es启动之后需要进入es容器&#xff0c;重置密码 elasticsearch-reset-password -u elastic -i 重置后的密码配置到kibana.yml中&#xff0c;启动kibana docker run …...

ASP.NET MVC添加视图示例

ASP.NET MVC高效构建Web应用- 商品搜索 - 京东 视图&#xff08;V&#xff09;是一个动态生成HTML页面的模板&#xff0c;它负责通过用户界面展示内容。本节将修改HelloWorldController类&#xff0c;并使用视图模板文件&#xff0c;以干净地封装生成对客户端的HTML响应的过程…...

自动驾驶中的路径跟踪:Python实现与技术解析

自动驾驶中的路径跟踪:Python实现与技术解析 一、路径跟踪是什么?为什么它至关重要? 路径跟踪(Path Tracking)是自动驾驶系统的关键部分之一,它负责确保车辆能够沿着预定义的轨迹行驶,同时稳定控制转向角度和速度。一个好的路径跟踪算法需要具备以下特点: 精准度:能…...

前端面试题目-高频问题集合

1.CSS里面水平垂直居中的方法 1.CSS里面水平垂直居中的方法弹性布局display: flex; /*先开启flex布局*/justify-content: center; /*实现水平居中*/jalign-items: center; /*实现垂直居中*/网格布局display: grid; /*先开启grid布局*/plac…...

MyBatis源码解析:从 Mapper 接口到 SQL 执行的完整链路

MyBatis源码解析&#xff1a;从 Mapper 接口到 SQL 执行的完整链路 一、Mapper 代理对象的创建&#xff1a;sqlSession.getMapper(UserMapper.class)二、接口方法的执行&#xff1a;mapper.selectUser("coderzpw", 18)2.1 四大核心组件解析2.1.1 Executor&#xff08…...

50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | Form Wave(表单label波动效果)

&#x1f4c5; 我们继续 50 个小项目挑战&#xff01;—— FormWave组件 仓库地址&#xff1a;https://github.com/SunACong/50-vue-projects 项目预览地址&#xff1a;https://50-vue-projects.vercel.app/ &#x1f3af; 组件目标 构建一个美观、动态的登录表单&#xff0…...

双目相机深度的误差分析(基线长度和相机焦距的选择)

全文基于针孔模型和基线水平放置来讨论 影响双目计算深度的因素&#xff1a; 1、基线长度&#xff1a;两台相机光心之间距离2、相机焦距&#xff08;像素&#xff09;&#xff1a; f x f_x fx​&#xff08;或 f y f_y fy​&#xff09;为焦距 f f f和一个缩放比例的乘积。在…...

Pytorch Geometric官方例程pytorch_geometric/examples/link_pred.py环境安装教程及图数据集制作

最近需要训练图卷积神经网络&#xff08;Graph Convolution Neural Network, GCNN&#xff09;&#xff0c;在配置GCNN环境上总结了一些经验。 我觉得对于初学者而言&#xff0c;图神经网络的训练会有2个难点&#xff1a; ①环境配置 ②数据集制作 一、环境配置 我最初光想…...

React---day6、7

6、组件之间进行数据传递 **6.1 父传子&#xff1a;**props传递属性 父组件&#xff1a; <div><ChildCpn name"蒋乙菥" age"18" height"1,88" /> </div>子组件&#xff1a; export class ChildCpn extends React.Component…...

hook组件-useEffect、useRef

hook组件-useEffect、useRef useEffect 用法及执行机制 WillMount -> render -> DidMount ShouldUpdate -> WillUpdate -> render -> DidUpdate WillUnmount(只有这个安全) WillReceiveProps useEffect(callback) 默认所有依赖都更新useEffect(callback, [])&am…...

功能结构整理

C# Sxer Sxer.Base&#xff1a;基础子功能 Sxer.Base.Debug&#xff1a;打印 Sxer.Utility&#xff1a;工具类 Sxer.CustomFunction&#xff1a;独立功能点开发 Unity...

企业级开发中的 maven-mvnd 应用实践

1. 引言:Maven 在企业级开发中的挑战 1.1 Maven 构建的常见痛点 在大型 Java 项目中,Maven 是主流的构建工具,但随着项目的复杂度增加,其性能瓶颈逐渐显现: 构建速度慢:每次执行 mvn clean install 都需要重新加载插件和依赖。重复构建浪费资源:即使未修改源码,仍会触…...

yolov12毕设前置知识准备 1

1 什么是目标检测呢&#xff1f; 目标检测&#xff08;Object Detection&#xff09;主要用于识别图像或视频中特定类型物体的位置&#xff0c;并标注其类别。 简单来说&#xff0c;就是让计算机像人类一样 “看懂” 图像内容&#xff0c;不仅能识别出物体&#xff08;如人、…...

随机游动算法解决kSAT问题

input&#xff1a;n个变量的k-CNF公式 ouput&#xff1a;该公式的一组满足赋值或宣布没有满足赋值 算法步骤&#xff1a; 随机均匀地初始化赋值 a ∈ { 0 , 1 } n a\in\{0,1\}^n a∈{0,1}n.重复t次&#xff08;后面会估计这个t&#xff09;&#xff1a; a. 如果在当前赋值下…...

《Discuz! X3.5开发从入门到生态共建》第1章 Discuz! 的前世今生-优雅草卓伊凡

《Discuz! X3.5开发从入门到生态共建》第1章 Discuz! 的前世今生-优雅草卓伊凡 第一节 从康盛创想到腾讯收购&#xff1a;PC时代的辉煌 1.1 Discuz! 的诞生&#xff1a;康盛创想的开源梦想 2001年&#xff0c;中国互联网正处于萌芽阶段&#xff0c;个人网站和论坛开始兴起。…...

azure web app创建分步指南系列之一

什么是 Azure Web 应用? Azure Web 应用是 Azure 应用服务的一部分,是一个完全托管的平台,用于开发、部署和扩展 Web 应用程序。它支持各种编程语言和框架,例如 .NET、Java、Python、PHP 和 Node.js,使开发人员能够构建强大的 Web 应用程序,而无需担心底层基础架构。借助…...

PyTorch实战——基于生成对抗网络生成服饰图像

PyTorch实战——基于生成对抗网络生成服饰图像 0. 前言1. 模型分析与数据准备2. 判别器3. 生成器4. 模型训练5. 模型保存与加载相关链接0. 前言 我们已经学习了生成对抗网络 (Generative Adversarial Network, GAN) 的工作原理,接下来,将学习如何将其应用于生成其他形式的内…...

笔试强训:Day6

一、小红的口罩&#xff08;贪心优先级队列&#xff09; 登录—专业IT笔试面试备考平台_牛客网 #include<iostream> #include<queue> #include<vector> using namespace std; int n,k; int main(){//用一个小根堆 每次使用不舒适度最小的cin>>n>&…...

【Hexo】4.Hexo 博客文章进行加密

安装 npm install --save hexo-blog-encrypt1-快速使用 将“ password”添加到您的文章信息头就像这样&#xff1a; password: 123456 ---2-按标签加密 1.修改文章信息头如下&#xff1a; title: Hello World tags: - 加密文章tag date: 2020-03-13 21:12:21 password: muyiio…...

Android --- ObjectAnimator 和 TranslateAnimation有什么区别

文章目录 2. 作用范围和功能2. 动画表现3. 是否修改 View 的属性4. 适用场景5. 性能总结&#xff1a; ObjectAnimator 和 TranslateAnimation 都是 Android 中常用的动画类型&#xff0c;但它们有以下几个关键的区别&#xff1a; 2. 作用范围和功能 ObjectAnimator&#xff1a…...

小白的进阶之路系列之四----人工智能从初步到精通pytorch自定义数据集下

本篇涵盖的内容 在之前的文章中,我们已经讨论了如何获取数据,转换数据以及如何准备自定义数据集,本篇文章将涵盖更加深入的问题,希望通过详细的代码示例,帮助大家了解PyTorch自定义数据集是如何应对各种复杂实际情况中,数据处理的。 更加详细的,我们将讨论下面一些内容…...

安卓添加设备节点权限和selinux访问权限

# 1 修改设备节点权限及配置属性设置节点值 ## 1.1 修改设备节点权限 ### 1.1.1 不会手动卸载的节点 在system/core/rootdir/init.rc中添加节点权限 在on boot下面添加 chown system system /sys/kernel/usb/host chmod 0664 /sys/kernel/usb/host ### 1.1.2 支持热插拔的…...

谷歌Stitch:AI赋能UI设计,免费高效新利器

在AI技术日新月异的今天&#xff0c;各大科技巨头都在不断刷新我们对智能工具的认知。最近&#xff0c;谷歌在其年度I/O开发者大会期间&#xff0c;除了那些聚光灯下的重磅发布&#xff0c;还悄然上线了一款令人惊喜的AI工具——Stitch。这是一款全新的、完全免费的AI驱动UI&am…...

运营商地址和ip属地一样吗?怎么样更改ip属地地址

‌在互联网时代&#xff0c;IP属地和运营商地址是两个经常被提及的概念&#xff0c;但它们是否相同&#xff1f;如何更改IP属地地址&#xff1f;这些问题困扰着许多网民。本文将深入探讨这两个概念的区别&#xff0c;并详细介绍更改IP属地地址的方法。 一、运营商地址和IP属地一…...

在QT中,利用charts库绘制FFT图形

第1章 添加charts库 1.1 .pro工程添加chart库 1.1.1 在.pro工程里面添加charts库 1.1.2 在需要使用的地方添加这两个库函数&#xff0c;顺序一点不要搞错&#xff0c;先添加.pro&#xff0c;否则编译器会找不到这两个.h文件。 第2章 Charts关键绘图函数 2.1 QChart 类 QChart 是…...

ChatGPT + 知网 + 知乎,如何高效整合信息写出一篇专业内容?

——写作&#xff0c;不是闭门造车&#xff0c;而是高效聚合 &#x1f9e0; 为什么“信息整合力”才是AI时代的核心写作能力&#xff1f; 现在的写作&#xff0c;不缺工具&#xff0c;也不缺资料&#xff0c;缺的是&#xff1a; 把 scattered info 变成 structured idea 的能力…...

流媒体协议分析:流媒体传输的基石

在流媒体传输过程中&#xff0c;协议的选择至关重要&#xff0c;它决定了数据如何封装、传输和解析&#xff0c;直接影响着视频的播放质量和用户体验。本文将深入分析几种常见的流媒体传输协议&#xff0c;探讨它们的特点、应用场景及优缺点。 协议分类概述 流媒体传输协议根据…...

vscode中让文件夹一直保持展开不折叠

vscode中让文件夹一直保持展开不折叠 问题 很多小伙伴使用vscode发现空文件夹会折叠显示, 让人看起来非常难受, 如下图 解决办法 首先打开设置->setting, 搜索compact Folders, 去掉勾选即可, 如下图所示 效果如下 看起来非常爽 ! ! !...

JAVA-springboot整合Mybatis

SpringBoot从入门到精通-第15章 MyBatis框架 学习MyBatis心路历程 2022年学习java基础时候&#xff0c;想着怎么使用java代码操作数据库&#xff0c;咨询了项目上开发W同事&#xff0c;没有引用框架&#xff0c;操作数据库很麻烦&#xff0c;就帮我写好多行代码&#xff0c;就…...