1. 程式人生 > 其它 >linux檔案操作

linux檔案操作

命令 作用
type 命令用來顯示指定命令的型別,判斷給出的指令是內部指令還是外部指令
help help命令只能顯示shell內部命令的幫助資訊,而linux系統中絕大多數命令是外部命令,所以help命令的作用非常有限。而對於外部命令的幫助資訊可以使man命令或者info命令檢視
ll ll命令可以列出當前檔案或目錄的詳細資訊,含有時間、讀寫許可權、大小、時間等資訊 ,像Windows顯示的詳細資訊
whereis whereis命令用來定位命令的二進位制程式、原始碼檔案和man手冊頁等相關檔案的路徑。
find 查詢當前目錄下的所有指定檔案
pwd 即顯示當前工作目錄的絕對路徑。
echo echo命令用於在終端裝置上輸出字串或變數提取後的值
history 命令用於顯示使用者以前執行過的歷史命令,並且能對歷史命令進行追加和刪除等操作
ln ln命令是linux系統中一個非常重要命令,英文全稱是“link”,即連結的意思,它的功能是為某一個檔案在另外一個位置建立一個同步的連結
cat 檢視檔案內容

linux檔案系統

  • /bin:
    bin 是 Binaries (二進位制檔案) 的縮寫, 這個目錄存放著最經常使用的命令。
  • /boot:
    這裡存放的是啟動 Linux 時使用的一些核心檔案,包括一些連線檔案以及映象檔案。
  • /dev :
    dev 是 Device(裝置) 的縮寫, 該目錄下存放的是 Linux 的外部裝置,在 Linux 中訪問裝置的方式和訪問檔案的方式是相同的。
  • /etc:
    etc 是 Etcetera(等等) 的縮寫,這個目錄用來存放所有的系統管理所需要的配置檔案和子目錄。
  • /home:
    使用者的主目錄,在 Linux 中,每個使用者都有一個自己的目錄,一般該目錄名是以使用者的賬號命名的,如上圖中的 alice、bob 和 eve。
  • /lib:
    lib 是 Library(庫) 的縮寫這個目錄裡存放著系統最基本的動態連線共享庫,其作用類似於 Windows 裡的 DLL 檔案。幾乎所有的應用程式都需要用到這些共享庫。
  • /lost+found:
    這個目錄一般情況下是空的,當系統非法關機後,這裡就存放了一些檔案。
  • /media:
    linux 系統會自動識別一些裝置,例如U盤、光碟機等等,當識別後,Linux 會把識別的裝置掛載到這個目錄下。
  • /mnt:
    系統提供該目錄是為了讓使用者臨時掛載別的檔案系統的,我們可以將光碟機掛載在 /mnt/ 上,然後進入該目錄就可以檢視光碟機裡的內容了。
  • /opt:
    opt 是 optional(可選) 的縮寫,這是給主機額外安裝軟體所擺放的目錄。比如你安裝一個ORACLE資料庫則就可以放到這個目錄下。預設是空的。
  • /proc:
    proc 是 Processes(程序) 的縮寫,/proc 是一種偽檔案系統(也即虛擬檔案系統),儲存的是當前核心執行狀態的一系列特殊檔案,這個目錄是一個虛擬的目錄,它是系統記憶體的對映,我們可以通過直接訪問這個目錄來獲取系統資訊。
    這個目錄的內容不在硬碟上而是在記憶體裡,我們也可以直接修改裡面的某些檔案,比如可以通過下面的命令來遮蔽主機的ping命令,使別人無法ping你的機器:
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    /root:
    該目錄為系統管理員,也稱作超級許可權者的使用者主目錄。
  • /sbin:
    s 就是 Super User 的意思,是 Superuser Binaries (超級使用者的二進位制檔案) 的縮寫,這裡存放的是系統管理員使用的系統管理程式。
    ?* /selinux:
    這個目錄是 Redhat/CentOS 所特有的目錄,Selinux 是一個安全機制,類似於 windows 的防火牆,但是這套機制比較複雜,這個目錄就是存放selinux相關的檔案的。
  • /srv:
    該目錄存放一些服務啟動之後需要提取的資料。
  • /sys:
    這是 Linux2.6 核心的一個很大的變化。該目錄下安裝了 2.6 核心中新出現的一個檔案系統 sysfs 。
    sysfs 檔案系統集成了下面3種檔案系統的資訊:針對程序資訊的 proc 檔案系統、針對裝置的 devfs 檔案系統以及針對偽終端的 devpts 檔案系統。
    該檔案系統是核心裝置樹的一個直觀反映。
    當一個核心物件被建立的時候,對應的檔案和目錄也在核心物件子系統中被建立。
  • /tmp:
    tmp 是 temporary(臨時) 的縮寫這個目錄是用來存放一些臨時檔案的。
  • /usr:
    usr 是 unix shared resources(共享資源) 的縮寫,這是一個非常重要的目錄,使用者的很多應用程式和檔案都放在這個目錄下,類似於 windows 下的 program files 目錄。
  • /usr/bin:
    系統使用者使用的應用程式。
  • /usr/sbin:
    超級使用者使用的比較高階的管理程式和系統守護程式。
  • /usr/src:
    核心原始碼預設的放置目錄。
  • /var:
    var 是 variable(變數) 的縮寫,這個目錄中存放著在不斷擴充著的東西,我們習慣將那些經常被修改的目錄放在這個目錄下。包括各種日誌檔案。
  • /run:
    是一個臨時檔案系統,儲存系統啟動以來的資訊。當系統重啟時,這個目錄下的檔案應該被刪掉或清除。如果你的系統上有 /var/run 目錄,應該讓它指向 run

萬物皆檔案

  • 檔案系統:作業系統如何管理檔案,內部定義了一些規則或者定義
  • 所有在Linux裡東西都是以檔案方式操作
  • Linux和 Windows訪問檔案不一樣,Windows是對盤進行的訪問
    Linux維護的是一個樹狀結構的檔案模型
    • 只有一個根節點,名字為/
    • 一個節點上可以多個子節點
  • 查詢檔案的方式
    • 相對路徑
      • 以當前路徑為基準,查詢其他資源
      • vi ../etc/sysconfig/network
    • 絕對路徑
      • 以根目錄為基準,查詢其他資源
      • vi etc/sysconfig/network.scripts/ifcfg-ens33
    • 在日常使用中儘量,可以找到路徑即可。
    • 在配置檔案中,儘量使用絕對路徑。
  • 可以隨意掛在磁碟
    • mount命令:作用是將一個分割槽掛載到另一個資料夾下,當我們對這個分割槽進行讀寫的時候,實際上是對另一個資料夾進行讀寫

檔案操作相關命令

mkdir 建立目錄
mk -p filename 可以建立包含子檔案的資料夾
rmdir 刪除目錄
rm -rf filename 可以直接刪除包含子檔案的資料夾
cp 可以將多個檔案複製到一個具體的檔名或一個已經存在的目錄下,也可以同時複製多個檔案到一個指定的目錄中
touch 一是建立新的空檔案,二是改變已有檔案的時間戳屬性
stat 用來顯示檔案或檔案系統的詳細資訊
ln 為某一個檔案在另外一個位置建立一個同步的連結,軟連線和原始檔案不是同一個檔案.硬連結: 與普通檔案沒什麼不同,inode 都指向同一個檔案在硬碟中的區塊軟連結: 儲存了其代表的檔案的絕對路徑,是另外一種檔案,在硬碟上有獨立的區塊,訪問時替換自身路徑.https://www.jianshu.com/p/dde6a01c4094
cat 用於連線檔案並列印到標準輸出裝置上
tail 檢視檔案尾部內容
tail -F filename 實時顯示目標檔案被寫入的資料。可以用於檢查日誌檔案是否被寫入。
head 命令可用於檢視檔案的開頭部分的內容,有一個常用的引數 -n 用於顯示行數,預設為 10,即顯示 10 行的內容
more /less 分頁檢視文件內容
find 查詢指定的檔案

linux更改使用者名稱

vi /etc/hostname //修改完成後exit登出就行了

檔案傳輸

linux和windows

  1. 使用yum -y install lrzsz,然後上傳檔案是rz,下載是sz。
  2. 使用xftp。

linux之間的檔案傳輸

從node1傳送檔案到node2,使用

scp 待發送檔案 目標ip:目標路徑
資料夾不能直接傳送,新增引數-r,即scp -r 待發送檔案 目標ip:目標路徑

檢視檔案大小

df -h /檢視路徑
在HDFS裡面是du

檔案的打包壓縮和解壓

使用tar

解壓

tar zxvf 待解壓檔案
tar zxf 待解壓檔案 少了一個V,安靜解壓
tar zxvf 待解壓檔案 -C “/opt” 解壓到指定的opt目錄

壓縮
tar cf 檔名.tar.gz 帶打包檔案

使用zip

解壓

unzip 待解壓檔案
壓縮
zip -r 壓縮後.zip 待壓縮檔案

金鑰

1.生成金鑰

ssh-keygen -t rsa -P " -f ~/.ssh/id_rsa

  • ssh-keygen是生成指令
  • rsa是加密使用的演算法
  • /.ssh/id_rsa:,指的是使用者的/home/目錄
  • 一般密碼存放在~/.ssh/中,id_rsa為儲存的檔名
  • 引數表

--b:指定金鑰長度;
-e:讀取openssh的私鑰或者公鑰檔案;
-C:添加註釋;
-f:指定用來儲存金鑰的檔名;
-i:讀取未加密的ssh-v2相容的私鑰/公鑰檔案,然後在標準輸出裝置上顯示openssh相容的私鑰/公鑰;
-l:顯示公鑰檔案的指紋資料;
-N:提供一個新密語;
-P:提供(舊)密語;
-q:靜默模式;

金鑰儲存

公鑰儲存在:~/.ssh/id_rsa.pub
私鑰儲存在:~/.ssh/id_rsa

主機之間的免密登入

基本原理:

(詳細見:https://blog.csdn.net/u013415591/article/details/81943189)

1.在A上生成公鑰私鑰。
2.將公鑰拷貝給server B,要重新命名成authorized_keys(從英文名就知道含義了)
3.Server A向Server B傳送一個連線請求。
4.Server B得到Server A的資訊後,在authorized_key中查詢,如果有相應的使用者名稱和IP,則隨機生成一個字串,並用Server A的公鑰加密,傳送給Server A。
5.Server A得到Server B發來的訊息後,使用私鑰進行解密,然後將解密後的字串傳送給Server B。Server B進行和生成的對比,如果一致,則允許免登入。
6.得到server B發來的訊息後,會使用私鑰進行解析,然後將機密後的字串發給server B。
7.接收到機密後的字串會跟先前生成的字串進行對比,如果一致就允許免密登陸。

總結下A欲免密B的操作:

  1. A生成金鑰:ssh-keygen -t rsa
  2. A傳送金鑰:ssh-copy-id -i ~/.ssh/id_rsa.pub root@B
  3. ssh B 即可免密登入

B免密A同理