【Linux】一切皆文件

Linux 下一切皆為文件,

文件包括頭文件,庫文件(靜態庫和共享庫),可執行文件,目錄文件,軟鏈接文件,配置文件等。

每個文件都依據權限分為用戶、用戶組和其他人三個身份,權限分為 read,write 和execute。

Linux 的目錄配置是目錄樹,可以使用絕對路徑和相對路徑在系統中確定文件。

Linux 中是沒有擴展名的概念的,可以使用 file 命令查看文件類型,使用 pwd 查看當前工作目錄,cd 更換當前工作目錄,mkdir 創建目錄。

今天通過 protoc 這個命令來理解一下,一切皆文件,這句話的意思。

首先,什么是命令?

ls 命令可能是

(1) 可執行文件

(2) 鏈接到其他可執行文件的軟鏈接文件

(3) 鏈接到其他腳本的軟鏈接文件。

為什么在終端執行 ls 這個命令會打印當前目錄的文件列表

先了解 Ubuntu 系統中各種文件顏色的含義

藍 色:表示文件夾 ,ls -l或ll時可以看到權限部分的第1個字母是d
被綠色陰影框住的,是獲得了最高權限(777)的文件夾綠色:可執行文件,包括jar
淺藍色:軟鏈接文件
紅色:壓縮文件  
白色:文本文件紅色閃爍:錯誤的符號鏈接
黃色:設備文件
灰色:其它文件

執行

which ls

會在終端顯示

/usr/bin/ls

可以

cd /usr/bin && ls

可以發現很多文件,其中有淺藍色的軟鏈接文件夾和綠色的執行文件

此時

ls -lah ls

會顯示

-rwxr-xr-x root root 139k 95 2019 ls

再如,執行

which protoc

終端顯示

/opt/bstos/2.2.5.3/sysroots/x86_64-bstsdk-linux/usr/bin/protoc

可以

cd /opt/bstos/2.2.5.3/sysroots/x86_64-bstsdk-linux/usr/bin/ && ls

可以發現很多文件,其中有淺藍色的軟鏈接文件夾和綠色的執行文件

如果 ls 執行 protoc

ls -lah protoc

會在終端顯示

lrwxrrwxrwx 1 root root 15 Aug 17 07:33 protoc -> protoc-3.12.3.0

說明 protocol 是一個軟鏈接文件,

protoc 命令軟鏈接到 protoc-3.12.3.0,而 protoc-3.12.3.0 是一個可執行文件。

執行到這里,如果在 docker 環境內,從 git 下載 3.12.2 版本的 protobuf 源碼,之后編譯

mkdir -p cmake/build && cd cmake/buildmake -jmake install

而docker 環境內的 protoc 版本是 3.6.1的,那為什么執行

protoc  --version

時會指向,最后顯示的是

libprotoc 3.6.1

而不是剛剛編譯的 3.12.2 版本的 protobuf

which protoc

時,顯示的

/opt/bstos/2.2.5.3/sysroots/x86_64-bstsdk-linux/usr/bin/protoc

得先環境變量 PATH 是什么?

查看所有的環境變量

root@ubuntu:~$ env

查看單個指定的環境變量:

root@ubuntu:~$ echo $PATH

會顯示

/opt/bstos/2.2.5.3/sysroots/x86_64-bstsdk-linux/usr/bin:
/opt/bstos/2.2.5.3/sysroots/x86_64-bstsdk-linux/usr/sbin:
/opt/bstos/2.2.5.3/sysroots/x86_64-bstsdk-linux/bin:
/opt/bstos/2.2.5.3/sysroots/x86_64-bstsdk-linux/sbin:
...:
/usr/local/bin:
/usr/local/sbin:
/sbin:
/bin:
/usr/local/src/jkd/jdk1.8.0_261/bin
環境變量 PATH 的作用

定義命令行解釋器搜索用戶執行命令的路徑

規定系統中的可執行文件的位置。

只要是處于這些位置中的可執行文件,執行的時候就不需要指定路徑,直接執行即可。

什么是命令行解釋器?

參考鏈接

https://blog.csdn.net/weixin_53351797/article/details/126720897

如何設置 環境變量 PATH

設置 PATH(在其原有的路徑的基礎上,增添一個路徑,例如/home/gec)

(1) 臨時設定 PATH

所謂臨時,指的是關閉終端之后就失效

root@ubuntu:~$ export PATH=${PATH}:/home/luxy
(2) 永久設定 PATH

將語句 PATH=$PATH:/home/gec 添加到文件 ~/.bashrc 的末尾

root@ubuntu:~$sudo gedit ~/.bashrc

這樣就可以永久設定PATH(注:其他變量不能亂該)。

由此,可知知道,當執行命令

protoc 

時,系統會優先從 環境變量 PATH 中的路徑中尋找 protoc 可執行文件。

/opt/bstos/2.2.5.3/sysroots/x86_64-bstsdk-linux/usr/bin:

中找到了 protoc 的可執行文件。那么就不會繼續往下找。

把第一個找到 protoc 的可執行文件當做默認執行的文件夾。

所以,為什么 which protoc 顯示的是

/opt/bstos/2.2.5.3/sysroots/x86_64-bstsdk-linux/usr/bin/protoc

所以,為什么編譯從 git 下載 3.12.2 版本的 protobuf 源碼后,沒有升級protoc。

通過 file 查看

file /opt/bstos/2.2.5.3/sysroots/x86_64-bstsdk-linux/usr/bin/protoc

顯示

ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /opt/bstos/2.2.5.3/sysroots/x86_64-bstsdk-linux/lib/ld-linux-x86-64.so.2, ...

通過 file 查看

file /home/project/protobuf-3.12.3/cmake/build/protoc

終端顯示

protoc:symbolic link to proto-3.12.3.0

再執行

file proto-3.12.3.0

終端顯示

protoc-3.12.3.0:ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, ...

參考鏈接:https://blog.csdn.net/qq_44986938/article/details/106288159

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

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

相關文章

webpack相關面試

運行 npm run xxx 的時候發生了什么? npm run xxx的時候,首先會去項目的package.json文件里找scripts 里找對應的xxx,然后執行 xxx的命令 npm i 的時候,npm 讀到該配置后,就將該文件軟鏈接到 ./node_modules/.bin 目錄…

vscode conda activate激活環境出錯

vscode conda activate 出錯 conda-script.py: error: argument COMMAND: invalid choice: ‘activate’ To initialize your shell, run$ conda init <SHELL_NAME>Currently supported shells are:- bash- fish- tcsh- xonsh- zsh- powershellSee conda init --help f…

自定義Android滑塊拼圖驗證控件

自定義Android滑塊拼圖驗證控件 拼圖認證視圖默認策略工具類參考 1、繼承自AppCompatImageView&#xff0c;兼容ImageView的scaleType設置&#xff0c;可設置離線/在線圖片。 2、通過設置滑塊模型&#xff08;透明背景的圖形塊&#xff09;設置滑塊&#xff08;和缺省塊&#x…

【HarmonyOS北向開發】-01 HarmonyOS概述

飛書原文鏈接-【HarmonyOS北向開發】-01 HarmonyOS概述https://fvcs2dhq8qs.feishu.cn/docx/TDf2d2KMaoPSUUxnvg2cASDdnCe?fromfrom_copylink

Leetcode-每日一題【劍指 Offer 20. 表示數值的字符串】

題目 請實現一個函數用來判斷字符串是否表示數值&#xff08;包括整數和小數&#xff09;。 數值&#xff08;按順序&#xff09;可以分成以下幾個部分&#xff1a; 若干空格一個 小數 或者 整數&#xff08;可選&#xff09;一個 e 或 E &#xff0c;后面跟著一個 整數若干空…

xcode把包打到高版本的iPhone里

打開xcode CTRLb build工程&#xff0c;build成功 把手機連到mac&#xff0c;在xcode選項卡里面的window里面選中device and simulator 打開對應的手機的頁面 然后在工程目錄下build成功過后有一個product的文件夾里面&#xff0c;直接把app拖到對應的手機的窗口就可以不用…

指針和數組簡單填空題合集(純刷題:60道)

前言 本篇文章適合初學指針和數組的朋友&#xff0c;如果您看了前幾組題覺得很簡單&#xff0c;可以看一看我的另一篇文章。 通過本篇文章&#xff0c;你可以清晰的區分出strlen和sizeof的區別&#xff0c;&#xff08;題目類型包括一維數組、二維數組&#xff09;并提高自己…

Linux NTP原理及配置使用

一、NTP簡介 1.NTP簡介 NTP&#xff08;Network Time Protocol&#xff0c;網絡時間協議&#xff09;是用來使網絡中的各個計算機時間同步的一種協議。它的用途是把計算機的時鐘同步到世界協調時UTC&#xff0c;其精度在局域網內可達0.1ms&#xff0c;在互聯網上絕大多數的…

CSS自學框架之動畫

這一節&#xff0c;自學CSS動畫。主要學習了淡入淡出、淡入縮放、縮放、移動、旋轉動畫效果。先看一下成果。 優雅的過渡動畫&#xff0c;為你的頁面添加另一份趣味&#xff01; 在你的選擇器里插入 animation 屬性&#xff0c;并添加框架內置的 keyframes 即可實現&#xff0…

《Kubernetes部署篇:Ubuntu20.04基于外部etcd+部署kubernetes1.24.16集群(多主多從)》

一、架構圖 如下圖所示: 二、環境信息 1、部署規劃 主機名K8S版本系統版本內核版本IP地址備注k8s-master-631.24.16Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.63master節點 + etcd節點k8s-master-641.24.16Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.64master節點 + …

【抖音直播小玩法】介紹

一、是什么 直播小玩法是基于抖音直播場景的新型實時互動內容。直播小玩法由開發者自主開發&#xff0c;接入平臺并開放給抖音主播掛載使用。開發者提供創意&#xff0c;依托平臺生態&#xff0c;獲取收益。 介入標準&#xff1a; 企業開發者&#xff0c;暫不支持個人開發者…

DAMO-YOLO:實時目標檢測設計的報告

ReadPaperhttps://readpaper.com/pdf-annotate/note?pdfId4748421678288076801eId1920373270663763712 Abstract 在本報告中&#xff0c;我們提出了一種快速準確的目標檢測方法&#xff0c;稱為DAMO-YOLO&#xff0c;它比最先進的YOLO系列實現了更高的性能。DAMO-YOLO 通過…

C++ Primer Plus: 第10章(2)

第10章編程題&#xff1a; &#xff08;1&#xff09; Account.h: #ifndef ACCOUNT_H_ #define ACCOUNT_H_#include <string>class Account { private:std::string name ;std::string code ;double money ; public:Account() ;Account(std::string Name, std::string Co…

Vue history和hash模式

目錄 一、簡介 一、簡介 ~~~~~~~~ 在Vue.js中&#xff0c;路由模式是用來管理應用程序中不同頁面之間的導航的機制。Vue Router支持兩種常見的路由模式&#xff1a;history模式和hash模式。 History 模式&#xff1a; ~~~~~~~~ History模式使用瀏覽器的history.pushState API …

紅帆OA SQL注入漏洞復現

0x01 產品簡介 紅帆iOffice.net從最早滿足醫院行政辦公需求&#xff08;傳統OA&#xff09;&#xff0c;到目前融合了衛生主管部門的管理規范和眾多行業特色應用&#xff0c;是目前唯一定位于解決醫院綜合業務管理的軟件&#xff0c;是最符合醫院行業特點的醫院綜合業務管理平…

Lnton羚通關于如何使用nanoPC-T4 安裝OpenCV?

nanoPC-T4 安裝 OpenCV Note: OpenCV has been pre-installed in FriendlyCore/FriendlyDesktop (Version after 201905) and does not require manual installation. Please download the latest FriendlyCore/FriendlyDesktop Image file from the following URL: http://do…

springboot 自定義注解

1、引入maven依賴&#xff08;版本太低也會導致不生效&#xff09; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId><version>2.7.10</version></dependency…

深度分析納斯達克上市公司慧擇的競爭優勢和投資價值

來源&#xff1a;猛獸財經 作者&#xff1a;猛獸財經 一、保險行業的現狀、競爭與機遇 在疫情期間&#xff0c;很多行業的經營理念與經營方式&#xff0c;甚至客戶行為、客戶需求都發生了變化&#xff0c;進而催生出新的機遇。保險行業亦是如此&#xff0c;受疫情影響&#xf…

用Python編程實現百度自然語言處理接口的對接,助力你開發智能化處理程序

用Python編程實現百度自然語言處理接口的對接&#xff0c;助力你開發智能化處理程序 隨著人工智能的不斷進步&#xff0c;自然語言處理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;成為了解決文本處理問題的重要工具。百度自然語言處理接口提供了一系…

騰訊開啟2024校招,主要招聘5大類崗位

近日&#xff0c;騰訊的大動作一個接一個&#xff0c;前腳剛公布2023上半年財報&#xff0c;后腳就開啟了2024校招&#xff0c;不得不讓人感嘆騰訊真速度&#xff01; 此次招聘對象為畢業時間在2023年9月至2024年8月期間的2024屆應屆畢業生&#xff0c;覆蓋北上廣深等多個城市…