用Shell脚本生成XML文件实例详解

今天把这段时间学习完shell后完成工作上的一个小案件整理了一下,分享给大家!

说来也巧了,作为一个刚刚毕业半年的菜鸟,进入公司后,听公司的大牛推荐学习linux–”鸟哥的私房菜“,基本上是从去年8月份开始到了今年的1月份,基本上是把基础篇看完了,开始了解shell脚本的相关知识。刚好公司有了一个shell脚本的案件给我了,时间上也没有多紧。然后就一边学习一边开始做,虽然中途客户反映先前的业务逻辑有问题耽搁了两周,但总算是到最后完成了,自己学习的东西能用到很开心,今天闲了,把代码整理了一下,分享给大家

具体是这样:

要求是写一个shell脚本,安装要求查询数据,将符合条件的数据按照客户给定的xml样式进行组装,然后加入到crontab中,定时执行通过scp或者ftp放到客户服务器上。

具体实现步骤:

一、编写生成xml文档的代码

#! /bin/bash# filename: create_xml.sh# create_wangxb_20150123## 从外部传入的第一个参数作为xml的文件名outfile=$1# xml中的缩进位tabs=0# ++++++++++++++++++++++++++++# 组装一个节点,输出到文件# 说一说传参数时的这几个区别:假如有下面这个脚本执行的命令# /path/to/scriptname  opt1  opt2  opt3  opt4 # $0: 的值是默认是脚本的名字,从$1-$4 开始就是参数的值# $# :代表后接的参数『个数』# $@ :代表『 "$1" "$2" "$3" "$4" 』之意,每个变量是独立的(用双引号括起来); # $* :代表『 "$1c$2c$3c$4" 』,其中 c 为分隔字节,默认为空白键, 所以本例中代表『 "$1 $2 $3 $4" 』之意。# 在shell中我们可以也可以使用${}包含变量名,来调用变量# ++++++++++++++++++++++++++++put(){    echo '' >> $outfile}# 这里也是输出一个xml的节点,只是比上面的节点有更多的设置# ${@:2} 的意思:它的值就是由第二个参数开始到最后一个参数,为什么要这样?有时可能你的第二个参数中有空格,shell接受参数是以空格计算的put_tag() {    echo ''${@:2}'' >> $outfile}# 同样是一个输出节点函数,但是添加了CDATA,防止特殊字符造成xml解析失败put_tag_cdata() {    echo '' >> $outfile}put_head(){    put '?'${1}'?'}# 这是一个缩进的算法,自行理解out_tabs(){    tmp=0    tabsstr=""    while [ $tmp -lt $((tabs)) ]    do        tabsstr=${tabsstr}''        tmp=$((tmp+1))    done    echo -e -n $tabsstr >> $outfile}tag_start(){    out_tabs    put $1    tabs=$((tabs+1))}tag() {    out_tabs    if [ "$1" == 0 ]    then        put_tag $2 $(echo ${@:3})    elif [ "$1" == 1 ]    then        put_tag_cdata $2 $(echo ${@:3})    fi}tag_end(){    tabs=$((tabs-1))    out_tabs    put '/'${1}}

这里有一些基础知识:

关于参数:

假如有下面这个脚本执行的命令
/path/to/scriptname opt1 opt2 opt3 opt4

 $0: 的值是默认是脚本的名字,从$1-$4 开始就是参数的值 $# :代表后接的参数『个数』 $@ :代表『 "$1" "$2" "$3" "$4" 』之意,每个变量是独立的(用双引号括起来);  $* :代表『 "$1c$2c$3c$4" 』,其中 c 为分隔字节,默认为空白键, 所以本例中代表『 "$1 $2 $3 $4" 』之意。 在shell中我们可以也可以使用${}包含变量名,来调用变量

二、从数据库查数据利用上面的函数,制作xml文件

#!/bin/bash# filename: ts_xml.sh# create_wangxb_20150126#PATH=/u01/app/oracle/product/10.2.0/db_1/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/opt/dell/srvadmin/bin:/home/p3s_batch/tools:/home/p3s_batch/binexport PATH# Database account information filesource ~/.p3src#++++++++++++++++++++++++++++++++++++++++++++++++++++++++# set some variable # XMLSCRIPT: 脚本的绝对路径# MATCHING_RESULT_XML: xml_1的文件名 # XML_FUNC_FILE: 生成xml函数文件路径# MATCHING_RESULT_QUERY_DATA: sqlplus 查出数据保存的零时文件# MATCHING_RESULT_QUERY_SQL: sqlplus 查询的sql语句#++++++++++++++++++++++++++++++++++++++++++++++++++++++++# 下面是一些基础的设置export XMLSCRIPT=/usr/p3s/batch/jaaa_match/tmp_xa_wangxbXML_DIR="$XMLSCRIPT/xmldata"XML_FUNC_FILE="xml_func.sh"MATCHING_RESULT_XML="matching_result_"$(date '+%Y%m%d_%H%M%S')".xml"MATCHING_RESULT_QUERY_DATA="matching_result_query_data.tmp"MATCHING_RESULT_QUERY_SQL="matching_result_query.sql"CLIENT_LIST_XML="client_list_"$(date '+%Y%m%d_%H%M%S')".xml"CLIENT_LIST_QUERY_DATA="client_list_query_data.tmp"CLIENT_LIST_QUERY_SQL="client_list_query.sql"# add_wangxb_20150225if [ ! -d "$XML_DIR" ];then    mkdir $XML_DIRfi#+++++++++++++++++++++++++++# modify_wangxb_20150224# check for temporary file #+++++++++++++++++++++++++++if [ -e "$XML_DIR/$MATCHING_RESULT_XML" ];then    rm -f $XML_DIR/$MATCHING_RESULT_XMLfiif [ -e "$XMLSCRIPT/$MATCHING_RESULT_QUERY_DATA" ];then    MATCHING_RESULT_QUERY_DATA="matching_result_query_data_"$(date '+%Y%m%d%H%M%S')".tmp"fi#+++++++++++++++++++++++++++++++++++++++++++++++++# add_wangxb_20150225# check system time,  choice query time period# 这是是根据crontab每天执行的时间,取得我们查询数据库时的where条件的时间区间#+++++++++++++++++++++++++++++++++++++++++++++++++sys_datetime=$(date '+%Y%m%d%H')first_chk_datetime="$(date '+%Y%m%d')04"second_chk_datetime="$(date '+%Y%m%d')12"third_chk_datetime="$(date '+%Y%m%d')20"# 由于服务器crontab是上面的时间,但是执行的shell比较多,在调用我这个shell的时候,不一定就是04:30 ,12:30, 20:30所以,这里的根据系统的时间判断时 范围给的比较宽case $sys_datetime in    "$first_chk_datetime"|"$(date '+%Y%m%d')05"|"$(date '+%Y%m%d')06"|"$(date '+%Y%m%d')07")        chk_start=$(date '+%Y-%m-%d 21:00:00' -d '-1 day')        chk_end=$(date '+%Y-%m-%d 04:29:59')    ;;    "$second_chk_datetime"|"$(date '+%Y%m%d')13"|"$(date '+%Y%m%d')14"|"$(date '+%Y%m%d')15")        chk_start=$(date '+%Y-%m-%d 04:30:00')        chk_end=$(date '+%Y-%m-%d 12:29:59')    ;;    "$third_chk_datetime"|"$(date '+%Y%m%d')21"|"$(date '+%Y%m%d')22"|"$(date '+%Y%m%d')23")        chk_start=$(date '+%Y-%m-%d 12:30:00')        chk_end=$(date '+%Y-%m-%d 20:59:59')    ;;    *)        chk_start=$(date '+%Y-%m-%d 00:00:00')        chk_end=$(date '+%Y-%m-%d 23:59:59')    ;;esac# modify_wangxb_20150310# 下面的是做一个oracle数据库连接的测试,如果连接失败,后续代码不再执行,并且写入错误日志$ORACLE_HOME/bin/sqlplus -s $ORAUSER_WEB_PASDB < 输出到指定文件$ORACLE_HOME/bin/sqlplus -s $ORAUSER_WEB_PASDB @$XMLSCRIPT/$MATCHING_RESULT_QUERY_SQL "$chk_start" "$chk_end" > $XMLSCRIPT/$MATCHING_RESULT_QUERY_DATA# create matching result's xml file# add_wangxb_20150227# 下面的算法就是将查出的数据进行分析,调用xml函数生成xml文件source "$XMLSCRIPT/$XML_FUNC_FILE" "$XML_DIR/$MATCHING_RESULT_XML"put_head 'xml version="1.0" encoding="utf-8"'tag_start 'ROOT'if [ -s "$XMLSCRIPT/$MATCHING_RESULT_QUERY_DATA" ];then    datas=${XMLSCRIPT}/${MATCHING_RESULT_QUERY_DATA}    #for res in $datas    while read res;    do        stock_id=$(echo $res | awk 'BEGIN {FS="^*^"} {print $1}')        seirino=$(echo $res | awk 'BEGIN {FS="^*^"} {print $2}')        match_flg=$(echo $res | awk 'BEGIN {FS="^*^"} {print $3}')        unmatch_riyuu=$(echo $res | awk 'BEGIN {FS="^*^"} {print $4}')        up_date_tmp=$(echo $res | awk 'BEGIN {FS="^*^"} {print $5}')        up_date=$(echo $up_date_tmp | awk 'BEGIN {FS="@"} {print $1 " " $2}')        tag_start 'MATCHING'        tag 0 'STOCKID' ${stock_id:-""}        tag 0 'SEIRINO' ${seirino:-""}        tag 0 'RESULT' ${match_flg:-""}        tag 1 'REASON' ${unmatch_riyuu:-""}        tag 0 'UPDATE_DATE' ${up_date:-""}        tag_end 'MATCHING'    done  $XMLSCRIPT/$CLIENT_LIST_QUERY_DATAsource "$XMLSCRIPT/$XML_FUNC_FILE" "$XML_DIR/$CLIENT_LIST_XML"put_head 'xml version="1.0" encoding="utf-8"'tag_start 'ROOT'if [ -s "$XMLSCRIPT/$CLIENT_LIST_QUERY_DATA" ];then    datas=${XMLSCRIPT}/${CLIENT_LIST_QUERY_DATA}    #for res in $datas    while read res;    do        corporation_id=$(echo $res | awk 'BEGIN {FS="^*^"} {print $1}')        corporation_name=$(echo $res | awk 'BEGIN {FS="^*^"} {print $2}')        client_id=$(echo $res | awk 'BEGIN {FS="^*^"} {print $3}')        client_print_name=$(echo $res | awk 'BEGIN {FS="^*^"} {print $4}')        tag_start 'CLIENT'        tag 0 'CORPORATION_ID' ${corporation_id:-""}        tag 1 'CORPORATION_NAME' ${corporation_name:-""}        tag 0 'CLIENT_ID' ${client_id:-""}        tag 1 'CLIENT_PRINT_NAME' ${client_print_name:-""}        tag_end 'CLIENT'    done < $datasfitag_end 'ROOT'rm $XMLSCRIPT/$CLIENT_LIST_QUERY_DATA# add_wangxb_20150304# Convert xml file encoding# 这是将xml文件进行转码,命令是iconvif [ -e "$XML_DIR/$MATCHING_RESULT_XML" ];then    echo "********** matching_result.xmlファイルコ〖ドを啪垂し、**********"    iconv -f euc-jp -t utf-8 $XML_DIR/$MATCHING_RESULT_XML  -o $XML_DIR/$MATCHING_RESULT_XML.utf-8    mv $XML_DIR/$MATCHING_RESULT_XML.utf-8 $XML_DIR/$MATCHING_RESULT_XMLfiif [ -e "$XML_DIR/$CLIENT_LIST_XML" ];then    echo "********** client_list.xmlフィルコ〖ドを啪垂し、**********"    iconv -f euc-jp -t utf-8 $XML_DIR/$CLIENT_LIST_XML  -o $XML_DIR/$CLIENT_LIST_XML.utf-8    mv $XML_DIR/$CLIENT_LIST_XML.utf-8 $XML_DIR/$CLIENT_LIST_XMLfi# add_wangxb_20150304# Send the xml file to the destination server by ftp#ftp_host="222.***.***.***"#USER="***"#PASS="***"#ftp -i -n $ftp_host << EOF#user $USER $PASS#cd /#lcd $XML_DIR/#put $MATCHING_RESULT_XML#put $CLIENT_LIST_XML#quit#EOF# test ftp# 通过ftp将xml文件放到客户服务器上,ftp_host:客户服务器地址,user登录名,pass密码ftp_host="***.***.***.***"USER="***"PASS="***"dir="/upload"ftp -i -n $ftp_host << EOFuser $USER $PASScd /upload/lcd $XML_DIR/put $MATCHING_RESULT_XMLput $CLIENT_LIST_XMLquitEOF# Save the program log fileYYMM=$(date +'%Y%m%d%H%M')cp /tmp/create_xml.log /usr/p3s/batch/jaaa_match/tmp_xa_wangxb/logs/create_xml.log.$YYMM# Send error log files into the Admin mailboxinfo_to_mail_1="**@**.co.jp"info_to_mail_2="***@**.co.jp"# nkf 日文转码的一个命令title=$(echo "test" | nkf -j)nkf -j < /tmp/create_xml.log | mail -s $title $info_to_mail_1 $info_to_mail_2#exit

本来是用scp传送的,但是后面修改了,这里把自己为scp传送找到的一个,不用密码可立即登入的 ssh 用户

下面是执行的两个sql文件

SET PAGESIZE 0SET FEEDBACK OFFSET VERIFY OFFSET ECHO OFFSET HEADING OFFSET TIMI OFFSET LINESIZE 1000SET WRAP OFFSELECT s.STOCKID|| '^*^' ||a.SERI_NO|| '^*^' ||a.MATCH_FLG|| '^*^' ||a.UNMATCH_RIYUU|| '^*^' ||to_char(a.UP_DATE,[email protected]:MI:SS') UP_DATE FROM aaa_stock_db a LEFT JOIN SENDDATAAPPRAISALPROTO s ON a.SERI_NO=s.SEIRINO WHERE a.UP_DATE BETWEEN to_date('&1','yyyy-mm-dd hh24:mi:ss') AND to_date('&2','yyyy-mm-dd hh24:mi:ss') AND a.DEL_FLG=0 ORDER BY a.UP_DATE DESC;exit
SET PAGESIZE 0SET FEEDBACK OFFSET VERIFY OFFSET ECHO OFFSET HEADING OFFSET TIMI OFFSET LINESIZE 1000SET WRAP OFFSELECT a.CORPORATION_ID|| '^*^' ||a.CORPORATION_NAME|| '^*^' ||b.CLIENT_ID|| '^*^' ||(select CLIENT_PRINT_NAME from CLIENT_MASTER where CLIENT_ID = b.CLIENT_ID) as CLIENT_PRINT_NAME FROM M_CORPORATION_MASTER a LEFT JOIN M_CORPORATION_GROUP b ON (a.CORPORATION_ID = b.CORPORATION_ID) WHERE a.DEL_FLG=0 AND b.DEL_FLG=0;exit

三、来看看效果

当然中间出现了许多bug,不过慢慢修改吗,兵来将挡,水来土掩,bug来了自己调么

用Shell脚本生成XML文件实例详解

就这样简单的整理一下,可能光这么写不够完整,但是,中间设计的知识也很多,不能展开了说,做个分享,大家有用到的时候也是个思路,具体的某些知识点可以用到了再去找资料了。

以上就是用Shell脚本生成XML文件实例详解的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1429007.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
把SQL Server中的数据导出为XML和Json的方法解析
上一篇 2025年12月17日 02:06:49
下一篇 2025年12月17日 02:07:09

相关推荐

  • VSCode连接Modelsim仿真工具(调试技巧分享,波形分析指南)

    首先确保Modelsim路径加入系统PATH,安装VSCode的HDL扩展,配置tasks.json定义编译、仿真任务,并编写Tcl脚本自动化add wave、run等操作,通过问题匹配器解析错误,利用Tcl实现参数化仿真与自动化测试,结合Makefile或脚本提升大型项目管理效率。 将VSCode…

    2026年9月22日
    400
  • MySQL数据备份自动化实施_MySQL定时任务与脚本管理

    MySQL数据备份自动化实施_MySQL定时任务与脚本管理MySQL数据备份自动化实施_MySQL定时任务与脚本管理MySQL数据备份自动化实施_MySQL定时任务与脚本管理MySQL数据备份自动化实施_MySQL定时任务与脚本管理

    mysql数据备份的自动化实施核心在于结合mysqldump等工具与操作系统的定时任务(如linux的cron或windows的task scheduler),通过编写和管理脚本实现定期执行备份。1. 使用mysqldump作为基础工具,编写包含数据库连接信息、时间戳文件名、日志记录、压缩清理等功能…

    2026年9月21日 用户投稿
    200
  • Linux如何设置目录的执行权限

    目录的执行权限是访问其内容的“钥匙”,使用chmod命令可通过符号或八进制模式设置,常见权限为755(所有者rwx,组和其他用户rx),递归设置时推荐结合find命令分别处理文件和目录,避免误加执行权限。 在Linux中,设置目录的执行权限( x )并非意味着你可以“运行”这个目录,而是赋予了你进入…

    2026年9月21日
    100
  • VSCode怎么运行全部代码_VSCode批量执行代码教程

    在VSCode里“运行全部代码”或“批量执行代码”,其实很少是一个单一的、所有语言通用的按钮。它更多的是指根据你项目的具体需求,通过配置任务(Tasks)、使用集成终端(Integrated Terminal)配合脚本,或者利用特定语言的运行/调试配置(Launch Configurations)来…

    2026年9月21日
    300
  • 控制台命令(Console Command)开发

    控制台命令是程序员日常工作中不可或缺的工具,它提高了开发效率并帮助理解和控制程序运行。1) 通过简单的文本输入,完成复杂任务,如文件管理和系统监控。2) 控制台命令可用于快速调试、测试代码和自动化重复工作。3) 开发控制台命令时需注意安全性和兼容性问题。4) 控制台命令可实现有趣功能,如监控服务器资…

    2026年9月21日
    200
  • Linux文件和目录管理常见命令

    Linux文件和目录管理依赖于ls、cd、mkdir、rm、cp、mv等核心命令,用于浏览、创建、删除、复制和移动文件与目录;通过find、du、grep等命令可查找文件、定位大文件并清理磁盘空间;使用rename、mmv或脚本可实现批量重命名;为安全起见,应谨慎使用rm命令,推荐结合-i选项或使用…

    2026年9月21日
    100
  • VSCode怎么生成项目模板_VSCode使用自定义代码片段创建项目模板教程

    答案:VSCode可通过自定义代码片段高效生成文件模板,结合工作区设置与脚手架工具实现项目初始化。利用用户代码片段(User Snippets)定义常用代码结构,如React组件或HTML骨架,通过prefix触发,支持制表位快速编辑;推荐将团队共享片段设为工作区级并提交至Git,确保规范统一;配合…

    2026年9月21日
    700
  • Linux如何查看命令别名alias使用方法

    直接输入 alias 命令可列出当前会话所有别名,如需查看特定命令是否为别名可用 type 命令;别名通过简化常用命令提升效率并减少错误,临时别名在当前会话生效,永久别名需写入 ~/.bashrc 或 ~/.zshrc 文件,删除则用 unalias 命令;别名适用于简单命令替换,函数支持参数与逻辑…

    2026年9月21日
    100
  • Linux怎么监控特定进程的运行状态

    Linux怎么监控特定进程的运行状态Linux怎么监控特定进程的运行状态Linux怎么监控特定进程的运行状态Linux怎么监控特定进程的运行状态

    监控Linux进程需综合使用ps、top、htop、pgrep和systemctl等工具,结合资源占用、进程状态、日志输出和进程数量判断是否异常,并通过systemd的Restart机制或看门狗脚本实现自动重启,同时利用journalctl、sar、atop及Prometheus+Grafana等方…

    2026年9月21日 用户投稿
    100
  • 如何在Linux中命令分组 Linux括号与花括号区别

    括号()在子shell执行,不影响当前环境;花括号{}在当前shell执行,共享环境变量。示例显示括号内变量修改不生效,花括号内修改生效。选择依据:需隔离用括号,需共享用花括号。常见错误:花括号缺分号、混淆两者作用域。 在Linux中,命令分组主要使用括号和花括号来实现,它们在功能和执行方式上有所不…

    2026年9月21日
    200
  • windows怎么批量重命名文件_Windows文件批量重命名方法

    可通过资源管理器选中法、CMD命令、PowerShell脚本或第三方工具实现批量重命名。首先选中多个文件后右键“重命名”可自动添加编号;其次在地址栏输入cmd使用ren命令匹配模式重命名;再者通过PowerShell脚本按顺序为文件重命名;最后可借助Bulk Rename Utility等工具进行更…

    2026年9月20日
    000
  • Linux文件权限修改命令chmod讲解

    chmod命令用于修改文件和目录的权限,核心是通过数字模式(如755、644)或符号模式(如u+x、go-w)设置用户、组和其他人的读(r)、写(w)、执行(x)权限。数字模式适合初始权限设置,简洁高效;符号模式适合增量调整,安全灵活。正确使用chmod遵循最小权限原则,避免777等高风险权限,防止…

    2026年9月20日
    000
  • windows怎么更改时区_Windows系统时区修改方法

    首先关闭自动设置时区,再通过设置应用、控制面板、命令提示符或PowerShell选择正确时区,如(UTC+08:00)北京,确保系统时间准确。 如果您发现Windows系统显示的时间与您所在地区的实际时间不符,可能是由于时区设置错误导致的。调整时区可以确保系统时间准确,避免影响日程安排或网络通信。 …

    2026年9月12日
    100
  • Linux文件权限rwx含义详解

    Linux文件权限rwx含义详解Linux文件权限rwx含义详解Linux文件权限rwx含义详解Linux文件权限rwx含义详解

    rwx权限是Linux系统安全的核心,分别代表读、写、执行三种操作,针对文件和目录有不同的作用:文件的r权限允许查看内容,w权限允许修改内容,x权限允许作为程序运行;目录的r权限允许列出其中文件,w权限允许在其中创建或删除文件,x权限允许进入该目录并访问其内部文件。权限分为所有者、所属组和其他用户三…

    2026年9月12日 用户投稿
    100
  • Linux如何查看目录和文件权限信息

    使用ls -l查看文件权限,stat获取详细元数据,rwx分别代表读、写、执行权限,目录的x权限表示可进入,getfacl用于查看ACL扩展权限。 在Linux系统里,想查看目录和文件的权限信息,最直接、最常用的方式就是使用 ls -l 命令,它能快速给你一个概览。如果需要更深入、更详细的元数据,比…

    2026年9月11日
    100
  • Workerman如何记录日志?Workerman日志文件位置?

    Workerman日志通过Worker::$logFile配置,建议明确指定路径并确保写入权限,避免默认/tmp目录;应用日志应使用error_log或Monolog等专业库分离记录;需通过logrotate实现日志轮转,防止文件过大,生产环境推荐结合Monolog与集中式日志系统提升管理效率。 W…

    2026年9月11日
    200
  • 如何在mysql中备份配置文件

    MySQL配置文件需定期备份以确保服务稳定。首先通过命令mysql –help | grep “Default options” -A 10确认配置文件路径,常见为/etc/my.cnf或C:ProgramDataMySQLMySQL Server X.Xmy.i…

    2026年9月10日
    300
  • LINUX怎么给shell脚本传递参数_LinuxShell脚本传参方法

    Shell脚本可通过命令行参数、环境变量或用户输入动态传值。1. 位置参数$1、$2等获取传入值,$0为脚本名;2. $@和$*遍历所有参数,前者保留独立性,后者合并为字符串;3. getopts解析带选项参数如-u、-p;4. 环境变量在执行前导出,脚本中直接引用;5. read命令实现运行时交互…

    2026年9月10日
    200
  • VSCode任务配置:编译与部署自动化

    tasks.json是VSCode中用于定义自动化任务的配置文件,位于项目根目录的.vscode文件夹下。通过配置task,可实现代码编译、打包和部署等操作的自动化。例如,使用gcc或g++编译C/C++程序,并通过problemMatcher捕获编译错误;结合scp或rsync命令将构建产物上传至…

    2026年9月10日
    200
  • Linux文件系统以点开头文件处理技巧

    以点开头的文件是Linux中用于存储配置的隐藏文件,需用ls -a或ls -A查看,可用touch、nano等命令创建编辑,删除时需谨慎避免误操作,脚本中应使用~/.*或find处理隐藏文件,合理管理可提升系统控制力。 在Linux系统中,以点(.)开头的文件和目录被称为隐藏文件或隐藏目录。这类文件…

    2026年9月9日
    100

发表回复

登录后才能评论
关注微信