Linux Shell腳本中basename和dirname的詳細用法教程

在Linux Shell腳本中,basename和?dirname是兩個非常實用的命令,常用于處理文件路徑和名稱。本文將詳細介紹這兩個命令的用法,并提供豐富的示例代碼,以幫助您更好地理解和應用它們。

一、basename命令

1.1 基本用法

basename命令用于去除路徑信息,只保留文件名或目錄名。其基本語法如下:

basename [OPTION] NAME [SUFFIX]
  • NAME:要處理的路徑名。
  • SUFFIX:可選,用于去除文件名中的后綴。

1.2 示例

1.2.1 去除路徑信息
#!/bin/bashfile_path="/usr/local/bin/script.sh"
file_name=$(basename "$file_path")
echo "File name: $file_name"
?

輸出:

File name: script.sh
1.2.2 去除后綴
#!/bin/bashfile_path="/usr/local/bin/script.sh"
file_name=$(basename "$file_path" .sh)
echo "File name without suffix: $file_name"
?

輸出:

File name without suffix: script
1.2.3 批量處理文件名
#!/bin/bashfor file in /usr/local/bin/*.sh; dobase_name=$(basename "$file" .sh)echo "Base name: $base_name"
done
?

二、dirname命令

2.1 基本用法

dirname命令用于去除文件名,只保留路徑信息。其基本語法如下:

dirname NAME
  • NAME:要處理的路徑名。

2.2 示例

2.2.1 獲取路徑信息
#!/bin/bashfile_path="/usr/local/bin/script.sh"
dir_path=$(dirname "$file_path")
echo "Directory path: $dir_path"
?

輸出:

Directory path: /usr/local/bin
?
2.2.2 結合basename使用
#!/bin/bashfile_path="/usr/local/bin/script.sh"
dir_path=$(dirname "$file_path")
base_name=$(basename "$file_path")
echo "Directory path: $dir_path"
echo "File name: $base_name"
?

輸出:

Directory path: /usr/local/bin
File name: script.sh
?
2.2.3 批量處理文件路徑
#!/bin/bashfor file in /usr/local/bin/*.sh; dodir_path=$(dirname "$file")echo "Directory path: $dir_path"
done
?

三、實踐應用

3.1 文件備份腳本

一個簡單的文件備份腳本,使用?basename和?dirname處理文件名和路徑。

#!/bin/bashsrc_file="/usr/local/bin/script.sh"
backup_dir="/backup"# 獲取文件名和目錄路徑
file_name=$(basename "$src_file")
dir_path=$(dirname "$src_file")# 創建備份目錄結構
mkdir -p "$backup_dir/$dir_path"# 復制文件到備份目錄
cp "$src_file" "$backup_dir/$dir_path/$file_name"echo "File $src_file has been backed up to $backup_dir/$dir_path/$file_name"
?

3.2 日志文件分離

一個將日志文件按日期分離的腳本,使用?basename和?dirname處理文件路徑和名稱。

#!/bin/bashlog_file="/var/log/app.log"
archive_dir="/var/log/archive"# 獲取當前日期
current_date=$(date +%Y-%m-%d)# 獲取文件名和目錄路徑
file_name=$(basename "$log_file")
dir_path=$(dirname "$log_file")# 創建歸檔目錄
mkdir -p "$archive_dir/$current_date"# 復制并重命名日志文件
cp "$log_file" "$archive_dir/$current_date/${file_name}_$current_date"echo "Log file $log_file has been archived to $archive_dir/$current_date/${file_name}_$current_date"

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/911683.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/911683.shtml
英文地址,請注明出處:http://en.pswp.cn/news/911683.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

3D世界里的“盜夢空間”!在方塊里再造一個世界?高級特效get?

有沒有想過,游戲里的鏡子、傳送門、或者屏幕上播放的實時3D動畫是怎么實現的? 答案就是一項黑科技——渲染目標(Render Targets)。它允許我們不直接渲染到屏幕,而是“偷偷地”渲染到一張幕后的貼圖上,然后…

淺析一種基于深度學習算法的維吾爾文OCR技術的實現原理及其應用場景

維吾爾文OCR技術是一種基于人工智能和深度學習技術的維吾爾文光學字符識別工具,能夠快速、準確地將印刷體或手寫體維吾爾文轉換為可編輯、可搜索的數字化文本。該技術適用于政府、教育、出版、金融等多個行業,助力維吾爾文信息的高效處理與智能化管理。 …

如何使用MQTTX軟件來進行MQTT協議的測試

下載MQTTX軟件 下載地址及說明文檔開始使用 - MQTTX 文檔,比較詳細 為什么使用MQTTX 何時要使用MQTTX軟件呢?用來檢測物聯網模塊上云的數據就很方便,當然云上如果有日志系統的話也是可以用的。 物聯網模塊,以利爾達模塊為例 NT26-KCN系列…

ELK 和 OpenShift 中的 EFK

ELK 和 OpenShift 中的 EFK 確實是同類日志解決方案的不同實現,核心功能相似但組件略有差異。以下是詳細對比和解釋: 1. ELK vs EFK:核心區別 組件ELK 棧EFK 棧(OpenShift 默認)日志收集Logstash(Java 實現…

Python UDP Socket 實時在線刷卡掃碼POS消費機門禁控制服務端示例源碼

本示例使用的設備:https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.1d292c1bk8Qc9r&ftt&id17021194999 一、服務端綁定IP開啟UDP端口接收消費機提交的請求 import sys import os import socket import time import datetimeIpList[] if sys.pl…

對于高考邊界的理解以及未來就業層級的學習與思考

目錄 一、2024年高考全國多少考生,文化課,文科理科,分別總分多少分?清北得多少分能上?二、1342萬人里面,有多少人能上清北,多少能上985,多少能上211,多少能上二本&#x…

JVM調優實戰 Day 4:JVM類加載機制

【JVM調優實戰 Day 4】JVM類加載機制 文章內容 在Java虛擬機(JVM)的運行過程中,類加載機制是整個程序啟動和運行的基礎。它決定了Java類是如何被動態加載到JVM中,并為后續的字節碼執行做好準備。理解JVM類加載機制不僅有助于我們…

R 語言中的判斷語句

R 語言中的判斷語句 在R語言編程中,判斷語句是執行條件邏輯的基礎。它們允許程序根據特定的條件執行不同的代碼塊。本文將深入探討R語言中的幾種常見判斷語句,包括if語句、if-else語句和switch語句,并探討它們的用法和場景。 1. if語句 if…

從設備自動化到智能管控:MES如何賦能牛奶飲料行業高效生產?

萬界星空科技全新推出的:新一代智能化MES系統,深度融合AI大數據技術,實現生產全流程可視化、智能排產、實時質量追溯與設備互聯,助力企業降本增效30%。 現開放免費試用名額,體驗智能化生產管理的高效與便捷&#xff01…

TDengine 技術參數配置大全

1. 背景 TDengine 的 taos.cfg 中配置項及使用 SQL 命令 alter 修改的系統變量之間的關系如何,哪些是持久存儲項,哪些設置是臨時項,這章將詳細說明。 本文是技術參考資料,請收藏。 2.定義 1. 全局配置參數 全局配置參數&#…

無人機神經網絡模塊運行與技術難點

一、神經網絡模塊的運行方式 1. 分層處理架構 感知層 多模態數據融合:通過八元數卷積網絡(OCNN)統一處理LiDAR、攝像頭、IMU等異構傳感器數據,將點云坐標(x/y/z)、圖像RGB與光流信息編碼至8維虛部&#…

前端react框架實現打包時間動態加入配置展示在指定頁面

注意: 當前方法特定為 create-react-app 構建框架,其他的構建流程不同,不能直接照搬 react-scripts 的方式。 ? 目標: 在 React 打包(build)時,自動將當前時間寫入代碼中某個變量或 console…

原子操作(CAS)

原子操作 原子操作原理什么是原子操作?原子性原子變量相關接口內存序 shared_ptr的實現 原子操作原理 什么是原子操作? 原子操作其實就是指在多線程的環境下,確保對共享變量的操作不會被干擾,從而避免了競態條件。 我們都知道&…

馬克思主義基本原理期末復習下

二十、資本的原始積累 所謂資本原始積累,就是以暴力手段使生產者與生產資料分離資本快速集中于少數人手中,資本主義得以快速發展的歷史過程。具體過程其一,用暴力手段奪取農民的土地,如英國圈地運動在國外建立殖民地,…

體育數據api接口,足球api籃球api電競api,比賽賽事數據api

在體育行業,數據驅動一切,從內容分發到競猜預測,從用戶互動到商業變現,背后少不了一個關鍵詞:數據接口(API)。無論是實時比分、比賽事件、歷史統計,還是球員詳情、戰績排名&#xff…

Harmony 狀態監聽 @Monitor和@Computed

Monitor與Computed裝飾器在ArkUI狀態管理中的協同應用 一、裝飾器概述 1. Monitor裝飾器 Monitor是ArkUI狀態管理V2中的核心裝飾器,用于深度監聽狀態變量的修改: 支持監聽嵌套類屬性、多維數組項和對象數組中的指定項變化能夠獲取變化前后的值進行比…

同濟大學多模態感知具身導航全面綜述

作者: I-Tak Ieong, Hao Tang 單位:同濟大學計算機學院,北京大學計算機學院 論文標題: Multimodal Perception for Goal-oriented Navigation: A Survey 論文鏈接:https://arxiv.org/pdf/2504.15643 主要貢獻 基于…

2025年CCF先進音頻技術競賽

由中國計算機學會主辦、CCF語音對話與聽覺專委會承辦、語音之家協辦、華為終端有限公司贊助的CCF先進音頻技術大賽正式啟動。大賽旨在推動國內高等院校及科研院所在音頻技術領域的專業人才培養,支持學生科技創新,選拔優秀人才。 賽事官網:ht…

手撕線程池

線程池的目的: 1.復用線程,減少頻繁創建和銷毀的開銷 創建和銷毀線程是昂貴的系統操作,涉及內核調度、內存分配; 使用線程池預先創建一批線程,在多個任務間循環復用,避免資源浪費,提高性能。 …

3DTiles三維模型

1. 3DTiles 介紹? 2016 年,Cesium 團隊借鑒傳統 2DGIS 的地圖規范:WMTS,借鑒圖形學中的層次細節模型,打造出大規模的三維數據標準:3d-Tiles,中文譯名:三維瓦片。 它在模型上利用了 gltf 渲染…