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

linux命令-文件目录操作-1

大纲

命令功能常用参数示例说明
ls列出目录ls -l(详情) ls -a(含隐藏文件)权限/时间/大小可视化
pwd显示当前目录pwd -P(显示物理路径) pwd -L(显示逻辑路径,默认)核心选项区分符号链接解析
cd切换目录cd ~(主目录) cd ..(上级目录)相对/绝对路径皆可
mkdir创建目录mkdir -p dir1/dir2(递归创建)避免目录不存在报错
rmdir删除空目录rmdir dir非空目录需用 rm -r
touch创建空文件touch file.txt文件不存在则新建
cp复制文件/目录cp -r src_dir dst/(递归复制)目录复制必须加 -r
rm删除文件/目录rm -rf dir/(强制递归删除)慎用!不可逆操作
clear清屏clear 直接清理屏幕
alias别名alias ls=‘ls -l’ 设置临时别名
echo输出文本echo “hello world”
history历史命令history
tree显示目录树tree -L 1
nohup后台运行服务nohup java /xx/xx.jar 2>&1 &
basename获取绝对路径的最后目录或文件
dirname去掉绝对路径的最后目录或文件

ls

  • 选项

    选项功能说明使用示例与注意事项
    ls -a显示所有文件(含隐藏文件)隐藏文件以 . 开头,如 .config 示例:ls -a ~
    ls -l显示文件详细信息(权限、所有者等)示例:ls -l /var(显示/var目录详情)
    ls -R递归显示目录及子目录内容示例:ls -R dir/(逐层列出dir下所有文件)
    ls -ld显示目录/符号链接本身信息(非内容)示例:ls -ld /tmp(查看/tmp目录属性而非内部文件)
    ls -1每行仅显示一个文件/目录名示例:ls -1(单列输出,适合脚本处理)
    ls -s显示文件占用块数示例:ls -s4 file.txt (表示占4个块)
    ls -S按文件大小降序排序示例:ls -lS(大文件在前)
    ls -t按修改时间(mtime)排序(新→旧)示例:ls -lt(最新修改文件排最前)
    ls -u配合 -t 时,按访问时间(atime)排序示例:ls -ltu(按最近访问时间排序)
    ls -U按目录原始存储顺序显示(不排序)示例:ls -U(保持文件系统原始顺序)
    ls -X按文件后缀名排序示例:ls -lX(.txt、.sh等同后缀文件归类)
  • 示例

    命令功能说明示例场景
    ls -lSh带单位(KB/MB)显示大小快速识别大文件
    ls -lSR递归显示子目录并按大小排序排查目录占用空间
    ls -lS --color彩色区分文件类型提升可读性

文件类型

文件类型标识符示例说明创建/查看命令示例
普通文件-文本文件、图片等(如 /etc/hoststouch example.txt
目录文件d文件夹(如 /home/user/Documentsmkdir new_directory
块设备文件B硬盘设备(如 /dev/sdals -l /dev/sda
字符设备文件C终端设备(如 /dev/tty1ls -l /dev/tty1
符号链接文件l软链接文件(如 /usr/bin/pythonpython3ln -s target link_name
管道文件p进程间通信管道(如 mypipemkfifo mypipe
套接字文件s网络通信套接字(如 /var/run/mysqld.socknc -U /tmp/socket.sock

pwd

假设 /home/docs 是指向 /data/documents 的符号链接

选项功能描述示例
无选项(默认)显示逻辑路径,保留符号链接当前位于 /home/docs 时,输出 /home/docs
pwd -L同默认行为,显式指定逻辑路径pwd -L 输出 /home/docs
pwd -P显示物理路径,解析符号链接pwd -P 输出 /data/documents

mkdir

参数作用示例命令效果说明
创建单个目录mkdir test在当前目录生成 test 空目录
-p递归创建多级目录mkdir -p a/b/c自动创建 aa/ba/b/c 三级目录
-m创建时设置权限mkdir -m 755 docs创建 docs 目录并赋予 rwxr-xr-x 权限
-v显示创建过程信息mkdir -v newdir输出 created directory 'newdir' 提示
多目录名同时创建多个并列目录mkdir dir1 dir2 dir3一次性生成 dir1dir2dir3

rmdir

参数作用示例命令效果
无参数删除单个空目录rmdir dir删除空目录 dir
-p递归删除多级空目录rmdir -p dir/dir1/dir2dir2dir1dir 均为空,依次删除这三级目录
-v显示详细执行过程rmdir -v dir输出 rmdir: 正在删除目录 'dir'
--ignore-fail-on-non-empty忽略非空目录删除失败的错误信息rmdir --ignore-fail-on-non-empty non_empty_dir尝试删除非空目录时不显示报错(但仍删除失败)

touch

功能命令格式说明
创建单个空文件touch filename若文件不存在,创建空文件;若存在,更新时间戳。
创建多个空文件touch file1 file2 file3空格分隔文件名,一次性创建多个文件。
避免创建新文件touch -c filename若文件不存在,不执行任何操作(防止误创建)。

cp

  • 选项

    选项功能说明简单示例
    -i覆盖前提示确认(交互模式)cp -i file1.txt dir/dir/file1.txt 存在,会提示 overwrite? (y/n)
    -n不覆盖已存在的文件(无提示)cp -n file1.txt dir/dir/file1.txt 存在,静默跳过不复制
    -r/-R递归复制目录及内部所有内容cp -r source_dir/ dest_dir/ 复制 source_dir 下所有子目录和文件到 dest_dir
    -a归档模式(保留所有属性) 等效于 -dR --preserve=allcp -a source/ dest/ 复制时保留权限、时间戳、符号链接等元数据
    -d保留符号链接(不复制原文件) 等效于 --no-dereference --preserve=linkscp -d symlink_file dest/ 复制符号链接本身而非链接指向的文件
  • 关键选项

    • 示例1- 目录归档备份

      cp -a /var/www/ /backups/www_archive/
      
    • 示例2 - 复制符号链接本身

      ~]# ln -sv /data/documents/ abc
      "abc" -> "/data/documents/"~]# cp -d abc /data/111  <-- 复制符号链接本身
      ~]# ll /data/
      lrwxrwxrwx 1 root root 16 1028 23:10 111 -> /data/documents/
      
    • 示例3 - 覆盖文件

      \cp -rf  /目录/upload/* /tmp/upload -R    		# 递归覆盖复制
      \cp -rf ${old_conf_path}/*.p* ${new_conf_path}/   # 覆盖配置文件
      

rm

  • 示例1

    # 这是直接不提示删,如果是直接/ , 那就是福报了, 等开除坐牢
    rm -rf /xxx
    
  • 示例2

    # 删除会给出提示,如果有一堆文件, 那敲y敲到吐.
    rm -r /xxx
    

alias

定义别名NAME,其相当于执行命令VALUE alias NAME='VALUE'

  • 临时生效

    docs]# alias ll="ls -l"
    docs]# ll
    docs]# unalias ll  <-- 撤销别名
    
  • 永久生效

    目录生效范围
    ~/.bashrc,等同于是 /root/.bashrc 或 /home/用户/.bashrc仅对当前用户生效
    /etc/bashrc全用户

echo

  • 选项

    选项说明
    -n不自动换行
    -e启用 \ 字符的解释功能
  • echo 单引号和双引号的核心区别

    特性单引号 ' '双引号 " "
    变量解析不解析变量,原样输出(如 $name 直接显示为 $name会解析变量值(如 $name 替换为变量实际内容)
    特殊字符所有字符均原样输出(包括转义字符如 \n可解析部分转义字符(如 \n 换行、\t 制表符)
  • 示例1

    ~]# varName='xiong'
    ~]# echo "${varName}"   # 变量会替换,弱引用
    xiong
    ~]# echo '${varName}'   # 单引号不会解析变量
    ${varName}
    
  • 示例2:命令行扩展:$( ) 或 ``

    ~]# echo "hello my name's $(hostname)"
    hello my name's do3    # 替换的只是系统命令, 而不是自定义的变量
    
  • 示例3: 括号扩展:{ }

    ~]# echo {1..10}1 2 3 4 5 6 7 8 9 10~]# echo file{1..2}file1 file2~]# echo {a..z}
    a b c d e f g h i j k l m n o p q r s t u v w x y z
    

history

登录shell时,会读取命令历史文件中记录下的命令~/.bash_history

选项功能描述简单示例
-c清空当前会话的命令历史记录history -c → 清空所有历史记录
n显示最近的 n 条命令历史history 5 → 显示最近5条命令
-r从历史文件中读取命令并附加到当前历史列表history -r → 加载历史文件内容
-w将当前历史列表保存到指定文件history -w ~/log.txt → 保存到文件
-n读取历史文件中未加载的新命令到当前列表history -n → 加载未读命令
-s伪造命令:将参数作为一行命令加入历史列表(不执行)history -s "ls -l" → 添加假记录
-p展开参数成多行显示(不保存到历史列表)history -p "ls -l" → 预览展开效果
-d offset删除历史中指定序号 offset 的命令history -d 100 → 删除第100条命令
-a将会话中新执行的命令追加到历史文件history -a → 实时保存新增命令

tree

需要先安装 yum -y install treeapt-get install tree

  • 选项

    选项说明简单示例命令
    无选项显示当前目录所有文件和子目录tree
    -d仅显示目录(不显示文件)tree -d
    -L level限制目录显示层级深度tree -L 2
    -P pattern仅显示匹配通配符的内容tree -P "*.txt"
  • 示例1: -P pattern:按通配符匹配

     ~]# tree -P "*.txt"
    .
    ├── aa
    ├── a.txt    # 仅列出当前目录全部以.txt后缀的文件
    ├── bb
    

nohup

场景命令示例输出位置
默认后台运行nohup /opt/phpfpm/bin/phphotel.php &当前目录 nohup.out 文件
自定义输出文件nohup command > myout.file 2>&1 &输出与错误均重定向到 myout.file

basename|dirname

  • basename

    • 语法格式: basename [OPTION] NAME [SUFFIX]

    • 核心功能: 提取文件名/目录名,可去后缀

    • 典型示例:

      [root@localhost bb]# ll
      drwxr-xr-x 2 root root 6 1029 20:37 cc
      [root@localhost bb]# basename /root/aa/bb/cc/
      cc[root@localhost cc]# ls -l
      -rw-r--r-- 1 root root 0 1029 20:47 aaa
      [root@localhost cc]# basename /root/aa/bb/cc/aaa 
      aaa
      
  • dirname

    • 语法格式: dirname NAME

    • 核心功能: 提取目录路径

    • 典型示例:

      # 不管是文件还是目录,都是去掉最后那级
      [root@localhost cc]# dirname /root/aa/bb/cc/aaa 
      /root/aa/bb/cc
      [root@localhost cc]# dirname /root/aa/bb/cc
      /root/aa/bb
      
  • 示例

    • 日志归档脚本

      # 按日期拆分日志文件,需先获取原路径和文件名:
      log_file=/var/log/app.log  
      current_date=$(date +%Y-%m-%d) 
      file_name=$(basename $log_file)  # 提取文件名:app.log  
      archive_dir=/var/log/archive/$current_date 
      cp $log_file $archive_dir/${file_name}_$current_date  # 归档为 app.log_2025-10-29  
      
    • 脚本中路径拆分

      # 结合使用可分离路径和文件名,例如备份文件时保留原目录结构:
      file_path=/usr/local/bin/script.sh  
      dir_path=$(dirname $file_path)    # 获取目录:/usr/local/bin 
      base_name=$(basename $file_path)  # 获取文件名:script.sh  
      
http://www.dtcms.com/a/545051.html

相关文章:

  • 【完整源码+数据集+部署教程】【制造业&传送带】几何形状检测系统源码&数据集全套:改进yolo11-DGCST
  • 面试的时候项目怎么聊,才能发挥最大的价值
  • PsTools 学习笔记(7.2):通用功能与远程操作基础
  • 做网站浏览器必须用xp系统吗张掖市作风建设年活动网站
  • 内江网站建设公司清华建设工程有限公司公司网站
  • VxWorks入门小白菜鸟教程4 —— 异步I/O库(AIO)的使用
  • 基于k8s部署wordpress博客系统并实现数据的持久化
  • SQL 查询语句的子句的执行顺序
  • sql 双游标循环
  • SQL 189 统计有未完成状态的试卷的未完成数和未完成率
  • 有哪些做微信小游戏的网站建设网站后期人员薪酬
  • 黑龙江交通基础设施建设网站怎么做推广网站
  • 企业微信AI SCRM推荐:从技术适配与场景功能实践进行评估
  • 从开源到落地:SimpleBGC 三轴稳像平台全栈技术解析(下)
  • 零基础新手小白快速了解掌握服务集群与自动化运维(十六)集群部署模块——Keepalived双机热备
  • 网站建设论坛做一个网站的流程
  • 金仓数据库平替MongoDB:银行存款系统国产化实践
  • 基于 Spring AI Alibaba 搭建 Text-To-SQL 智能系统(前置介绍)
  • 搞笑资讯网站源码数据库支持的网站怎么做
  • 友思特应用 | 基于高精度双目散斑 3D 相机的放射治疗视觉定位应用
  • MCU寄存器配置深度解析:从原理到实践
  • 论文学习_LLM4Decompile: Decompiling Binary Code with Large Language Models
  • 【日记】好耶!是新电脑!(3959 字)
  • Day73 嵌入式传感器技术全栈开发
  • 学历提升有几种方式长沙正规seo优化公司
  • 合肥网络公司 网站建设网站建设 预算
  • 23大数据 数据挖掘集合
  • Docker Compose曝路径遍历漏洞,可致任意覆写文件(CVE-2025-62725)
  • 网站可以分为哪些类型怎样优化自己的网站
  • Rust 模式匹配的穷尽性检查:从编译器证明到工程演进