因為在Linux Mint 看到有一個 driver-manager,離開後到 Ubuntu 20.04.6 想要也安裝一個,結果官方倉儲沒收入!
於是就找類似的,結果找到 kubuntu-driver-manager,我想它也是 ubuntu 的後代,試試或許可以用。
安裝完畢後執行,結果系統說「 可安裝,但無法執行 」,我真的傻眼了,第一次遇到這狀況!於是它末尾又提示可安裝 kubuntu-settings-desktop,我就想這二個軟體除了前面都是 kubuntu 之外,有什麼親戚關係嗎?
二者之間有無關係我不知道,結果我就「慘慘地」給它安裝了下去。結果嘛...,想當然執行時也沒反應,下場也是「慘慘地」啦,哈哈哈〜😁😆😅
安裝時我看畫面提示要安裝了一大堆軟體、套件,大約瞄了一下有500多MB,真多!桌面軟體真不是蓋的。
現在二個軟體都無法執行,想要除錯,我也沒那麼多時間,必須開始收攤了!須把這些沒用垃圾全部清除掉才行,結果嘛...,也仍是「慘慘地」啦,唉〜〜😓😭
把二個主軟體移除時,竟然沒有之前跟著安裝的一大票相依軟體、套件被同時移除,它們不是相依的嗎?我金地、金地、金地傻眼了!!😲🙄😱(重要的話須重覆三遍)
於是,偶就趕快把終端機中,安裝時暫留的的字串複製下來,想要一一手動把各個軟體、套件全刪除掉,但一看到資料太多,我也愣住了〜🤔🤔。於是就有了本篇文章應用 Shell 指令處理檔案內容的結果出現!😇
********************
正文開始
********************
◆ 刪除目標檔案每列開頭前三個字元
語法:sed 's/^...//' /trash/m.txt > /trash/command.txt
樣本列:
124libkf5waylandserver5 amd64 4:5.68.0-0ubuntu1 [245 kB]
125libkf5syntaxhighlighting-data all 5.68.0-0ubuntu1 [52.1 kB]
執行結果:
libkf5waylandserver5 amd64 4:5.68.0-0ubuntu1 [245 kB]
libkf5syntaxhighlighting-data all 5.68.0-0ubuntu1 [52.1 kB]
------
◆ 把目標檔案每列第一個空白處及之後字串,全部刪除(被「 "" 」取代)
語法:awk '{print "" $1}' /trash/n.txt > /trash/command.txt
樣本列:
libkf5waylandserver5 amd64 4:5.68.0-0ubuntu1 [245 kB]
libkf5syntaxhighlighting-data all 5.68.0-0ubuntu1 [52.1 kB]
執行結果:
libkf5waylandserver5
libkf5syntaxhighlighting-data
------
◆ 把目標檔案每列開頭皆插入字串:"sudo apt autoremove "
語法:awk '{print "sudo apt autoremove " $0}' /trash/p.txt > /trash/command.txt
樣本列:
libkf5waylandserver5
libkf5syntaxhighlighting-data
執行結果:
sudo apt autoremove libkf5waylandserver5
sudo apt autoremove libkf5syntaxhighlighting-data
------
當全部資料前端都已插入刪除暨刪除依賴語法之後,再來就是 sh 上場表演的時刻!
執行: sh /trash/command.txt
過程:
初時反復要按 (Y/n) 的詢問,後面就一律出現xxx沒有安裝,然後直接跳過,不必人參與。最後結果檢查,算是勝利了😁😂,揮汗拭額〜〜😅😜
2023年5月9日 星期二
2023年5月4日 星期四
find 找出檔案、grep 找出檔案內容
◆ 過濾結果集:找出符合 grep 條件的目標。三種語法善惡比較
X find /data/trash/ -type f -iname "*test*" | grep -i -Hn "flatpak" {} \;
說明:失敗! 找出檔案內容的語法「 | 」之後禁止直接 grep,要插入一個轉送器(xargs)
△ find /data/trash/ -type f -iname "*test*" | xargs grep -i -Hn "flatpak" {} \;
說明:成功,但額外出現二列指令無效的提示!xargs 之後接 grep 指令似乎水土不合!!
※ 放棄此用法!!轉用「-exec grep 」語法
V find /data/trash/ -type f -iname "*test*" -exec grep -i -Hn "flatpak" {} \;
說明:成功!但結果內容多了「檔名」標示 => /data/trash/trash20.txt:1:/etc/X11/Xsession.d/20flatpak
◆ 過濾結果集:找出符合 grep 條件的目標 (若目標是檔案,則與找檔案內容無關)
語法:<前段語法> | grep -i <關鍵字>
說明:grep 針對前段語法所找出的結果集,「再一次」的做篩選
範例1:sudo apt list --installed | grep -i "fire*"
釋義1:grep 關鍵字的 *星號要放對位置,若打成 "*fire*" 就找不到資料
範例2:find /data/trash/ -type f -iname "*t*" | grep -i "45"
釋義2:find 目標路徑中「含有t」的檔案。grep 再次篩選出這些檔案中具有「 45 」關鍵字者
◆ 過濾結果集:找出符合 grep 條件的目標 (若目標是檔案,則是在找檔案內容)
語法 :<前段語法> -exec grep -i <關鍵字> {} \;
範例1 :find /data/trash/ -type f -iname "*t1*" -exec grep -i -Hn "flatpak" {} \;
範例1 說明 :二個範例皆有 Hn參數,結果必然會顯示為三區「檔名路徑區、同檔數字區、內容符合(條件)區」
結果 => /data/trash/trash20.txt:3:/etc/X11/Xsession.d/20flatpak
檔名路徑區(H) :/data/trash/trash20.txt
同檔數字區(n) :3 (同一檔中,符合 grep 條件的,「至少有3列」
內容符合區(i) :/etc/X11/Xsession.d/20flatpak
範例2 :find /data/trash/ -type f -iname "*t1*" -exec grep -i -Hn "flatpak" {} \; > /data/temp/result.txt
範例2 說明 :此範例尾端多了「轉存」的語法,把結果存入指定路徑檔 result.txt 之中
◆ 過濾結果集:「刪除」符合 grep 條件的檔案與資料夾
語法 :<前段語法> -exec grep -i <關鍵字> {} \;
範例 :先變更身份為「root」=> sudo su -
find /data/trash/ -type f -iname "*t1*" -exec grep -i "flatpak" {} \; | xargs rm -fr
說明 :grep 須有參數i,絕不可加參數 Hn,結果必須只是「要刪除檔案的路徑名」
X find /data/trash/ -type f -iname "*test*" | grep -i -Hn "flatpak" {} \;
說明:失敗! 找出檔案內容的語法「 | 」之後禁止直接 grep,要插入一個轉送器(xargs)
△ find /data/trash/ -type f -iname "*test*" | xargs grep -i -Hn "flatpak" {} \;
說明:成功,但額外出現二列指令無效的提示!xargs 之後接 grep 指令似乎水土不合!!
※ 放棄此用法!!轉用「-exec grep 」語法
V find /data/trash/ -type f -iname "*test*" -exec grep -i -Hn "flatpak" {} \;
說明:成功!但結果內容多了「檔名」標示 => /data/trash/trash20.txt:1:/etc/X11/Xsession.d/20flatpak
◆ 過濾結果集:找出符合 grep 條件的目標 (若目標是檔案,則與找檔案內容無關)
語法:<前段語法> | grep -i <關鍵字>
說明:grep 針對前段語法所找出的結果集,「再一次」的做篩選
範例1:sudo apt list --installed | grep -i "fire*"
釋義1:grep 關鍵字的 *星號要放對位置,若打成 "*fire*" 就找不到資料
範例2:find /data/trash/ -type f -iname "*t*" | grep -i "45"
釋義2:find 目標路徑中「含有t」的檔案。grep 再次篩選出這些檔案中具有「 45 」關鍵字者
◆ 過濾結果集:找出符合 grep 條件的目標 (若目標是檔案,則是在找檔案內容)
語法 :<前段語法> -exec grep -i <關鍵字> {} \;
範例1 :find /data/trash/ -type f -iname "*t1*" -exec grep -i -Hn "flatpak" {} \;
範例1 說明 :二個範例皆有 Hn參數,結果必然會顯示為三區「檔名路徑區、同檔數字區、內容符合(條件)區」
結果 => /data/trash/trash20.txt:3:/etc/X11/Xsession.d/20flatpak
檔名路徑區(H) :/data/trash/trash20.txt
同檔數字區(n) :3 (同一檔中,符合 grep 條件的,「至少有3列」
內容符合區(i) :/etc/X11/Xsession.d/20flatpak
範例2 :find /data/trash/ -type f -iname "*t1*" -exec grep -i -Hn "flatpak" {} \; > /data/temp/result.txt
範例2 說明 :此範例尾端多了「轉存」的語法,把結果存入指定路徑檔 result.txt 之中
◆ 過濾結果集:「刪除」符合 grep 條件的檔案與資料夾
語法 :<前段語法> -exec grep -i <關鍵字> {} \;
範例 :先變更身份為「root」=> sudo su -
find /data/trash/ -type f -iname "*t1*" -exec grep -i "flatpak" {} \; | xargs rm -fr
說明 :grep 須有參數i,絕不可加參數 Hn,結果必須只是「要刪除檔案的路徑名」
2016年11月21日 星期一
常見Linux 指令用途
來源: http://itchen.class.kmu.edu.tw/Crypto/Web/Linux.html
常見Linux 指令用途:
常見Linux 指令用途:
hostname
|
查本機電腦名稱
|
uname –a
|
查本身灌了什麼系統
|
ifconfig
|
查網路設定(IP)
|
ping
|
測節點封包傳輸
|
arp
|
查網卡
|
netstat(-n)
|
查目前連線狀態
|
dig:
|
DNS 的查詢指令
|
traceroute
|
查兩節點所經router
|
top
|
nmap
|
查port
|
|
tcpdump
|
分析封包的流向,連封包的內容也可以進行『監聽』
|
||
cd
|
換目錄(進入資料夾)
|
ls(-al)
|
列出檔案
|
cd..
|
回上一層
|
cp 檔名 目的
|
Copy檔到目的資料夾
|
cat
|
看檔案
|
man
|
查指令
|
date
|
看日期
|
more
|
暫停看msg
|
du
|
檔案總管
|
mv
|
move移動
|
exit、quit
|
跳出
|
passwd
|
舊換新密碼
|
last
|
最近誰登入
|
pwd
|
目前目錄
|
df
|
看目錄底下檔案
|
ps
|
看程式執行狀況
|
quota
|
看容量大小
|
rm
|
刪檔案
|
rmdir
|
刪資料夾
|
rm –rf
|
強迫刪檔
|
mkdir
|
建目錄
|
write
|
丟水球
|
^D
|
跳出
|
chmod
|
改權限
|
2011年4月2日 星期六
2010年8月20日 星期五
mount
***************************************************************
umount 卸載設備
***************************************************************
umount <已掛載設備之名稱、資料夾>
***************************************************************
mount 指令常用參數簡介 (還有更多參數)
***************************************************************
語法:mount [parameters] [type] <要掛載設備名稱> [目的資料夾名稱]
參數說明:
<不必參數>:列出/etc/fstab中已掛載設備
-a:重新掛上 /etc/fstab 中的設備。也是測試能否正常?若不正常可立刻修正,以免重新開機時死當
-h:看參數說明,並不掛載任何裝置
-l:列出目前已經掛載的裝置、檔案系統名稱與掛載點
-V:列出 mount 的版本資訊
-t Type:將後面 「要掛載設備」以 Type 的檔案格式掛載到 「目的資料夾」
Type 有底下幾個:
vfat, msdos :這個是支援 Windows 系統的檔案格式,尤其是 vfat 常用
ext, ext2 :這個就是 Linux 的主要檔案格式
iso9660 :光碟機的檔案格式
nfs, ntfs, ufs :Windows 2000 使用 NTFS 格式
-o:
rw :讓 mount 的磁區為可讀寫
suid :允許該磁區可以設定檔案為 SUID 的狀態!
exec :允許該磁區可以執行 binary 的檔案!
auto :允許該磁區可以使用 mount -a 的參數設定!
nouser :禁止其他人(非 root 之使用者)使用掛載功能!這是預設值!
async :允許磁區可以進行非同步記錄(記憶體與硬碟不同步!最常用!)
defaults:同時具有 rw, suid, dev, exec, auto, nouser, async 這些功能的設定值,
所以預設情況中,使用這個即可。
nosuid :不許該磁區具有 SUID 的檔案屬性!
ro :設定為唯讀屬性!
remount :讓系統本來掛載的磁區重新被掛載!
iocharset=big5,codepage=950 :這種額外的功能參數以啟動中文編碼的支援
//範例
//----------
重新(偵測) 掛上fstab中所有設備:
# mount -a
掛上光碟:
[root @test /root]# mount -t iso9660 /dev/cdrom /mnt/cdrom
掛上 windows 檔案系統的軟碟:
[root @test /root]# mount -t vfat /dev/fd0 /mnt/floppy
掛上 Linux 檔案系統的軟碟:
[root @test /root]# mount -t ext2 /dev/fd0 /mnt/floppy
掛上 Linux 檔案格式硬碟:
[root @test /root]# mount -t ext2 /dev/hdc6 /home
讓根目錄重新掛載為可讀:
[root @test /root]# mount -o remount,rw /
//掛載軟碟
//----------
掛上Linux ext2 檔案格式軟碟:
mount -t ext2 /dev/fd0 /mnt/floppy
Windows fat32 格式(fat 12 是 msdos):
mount -t vfat /dev/fd0 /mnt/floppy
將軟碟機卸載:
umount /mnt/floppy
//掛載光碟
//----------
modprobe cdrom modprobe ide-cd
mount -t iso9660 /dev/cdrom /mnt/cdrom
umount /mnt/cdrom
//掛載硬碟
//----------
將硬碟以ext2架構,掛在「/media/game」:
mount -t ext2 /dev/hda2 /media/game
//製造新硬碟
//-------------
fdisk <裝置名稱> :直接以 fdisk 分割硬碟,例:fdisk /dev/hdb
mke2fs <裝置名稱> :以ext2 格式 format,例:mke2fs /dev/hdb
mkdir /disk2 :建立一個目錄名稱為 /disk2 ,預計用來掛載新硬碟
******************************************************************************
swap硬碟分割區之掛卸載,首先它必須是Linux swap(type 82)的類型
******************************************************************************
掛載語法:
swapon <裝置名稱> :掛載「裝置名稱」中的swap,例:swapon /dev/hda2
swapon -a :將所有的swap磁區掛載
卸載swap磁區語法:
swapoff <裝置名稱> :卸載 裝置名稱,例:swapoff /dev/hda2
swapoff -a :將所有的swap磁區卸載。
參考:
http://docs.hgiga.com/Discuz4/viewthread.php?tid=226
http://blog.udn.com/luckyhoo/628680
umount 卸載設備
***************************************************************
umount <已掛載設備之名稱、資料夾>
***************************************************************
mount 指令常用參數簡介 (還有更多參數)
***************************************************************
語法:mount [parameters] [type] <要掛載設備名稱> [目的資料夾名稱]
參數說明:
<不必參數>:列出/etc/fstab中已掛載設備
-a:重新掛上 /etc/fstab 中的設備。也是測試能否正常?若不正常可立刻修正,以免重新開機時死當
-h:看參數說明,並不掛載任何裝置
-l:列出目前已經掛載的裝置、檔案系統名稱與掛載點
-V:列出 mount 的版本資訊
-t Type:將後面 「要掛載設備」以 Type 的檔案格式掛載到 「目的資料夾」
Type 有底下幾個:
vfat, msdos :這個是支援 Windows 系統的檔案格式,尤其是 vfat 常用
ext, ext2 :這個就是 Linux 的主要檔案格式
iso9660 :光碟機的檔案格式
nfs, ntfs, ufs :Windows 2000 使用 NTFS 格式
-o:
rw :讓 mount 的磁區為可讀寫
suid :允許該磁區可以設定檔案為 SUID 的狀態!
exec :允許該磁區可以執行 binary 的檔案!
auto :允許該磁區可以使用 mount -a 的參數設定!
nouser :禁止其他人(非 root 之使用者)使用掛載功能!這是預設值!
async :允許磁區可以進行非同步記錄(記憶體與硬碟不同步!最常用!)
defaults:同時具有 rw, suid, dev, exec, auto, nouser, async 這些功能的設定值,
所以預設情況中,使用這個即可。
nosuid :不許該磁區具有 SUID 的檔案屬性!
ro :設定為唯讀屬性!
remount :讓系統本來掛載的磁區重新被掛載!
iocharset=big5,codepage=950 :這種額外的功能參數以啟動中文編碼的支援
//範例
//----------
重新(偵測) 掛上fstab中所有設備:
# mount -a
掛上光碟:
[root @test /root]# mount -t iso9660 /dev/cdrom /mnt/cdrom
掛上 windows 檔案系統的軟碟:
[root @test /root]# mount -t vfat /dev/fd0 /mnt/floppy
掛上 Linux 檔案系統的軟碟:
[root @test /root]# mount -t ext2 /dev/fd0 /mnt/floppy
掛上 Linux 檔案格式硬碟:
[root @test /root]# mount -t ext2 /dev/hdc6 /home
讓根目錄重新掛載為可讀:
[root @test /root]# mount -o remount,rw /
//掛載軟碟
//----------
掛上Linux ext2 檔案格式軟碟:
mount -t ext2 /dev/fd0 /mnt/floppy
Windows fat32 格式(fat 12 是 msdos):
mount -t vfat /dev/fd0 /mnt/floppy
將軟碟機卸載:
umount /mnt/floppy
//掛載光碟
//----------
modprobe cdrom modprobe ide-cd
mount -t iso9660 /dev/cdrom /mnt/cdrom
umount /mnt/cdrom
//掛載硬碟
//----------
將硬碟以ext2架構,掛在「/media/game」:
mount -t ext2 /dev/hda2 /media/game
//製造新硬碟
//-------------
fdisk <裝置名稱> :直接以 fdisk 分割硬碟,例:fdisk /dev/hdb
mke2fs <裝置名稱> :以ext2 格式 format,例:mke2fs /dev/hdb
mkdir /disk2 :建立一個目錄名稱為 /disk2 ,預計用來掛載新硬碟
******************************************************************************
swap硬碟分割區之掛卸載,首先它必須是Linux swap(type 82)的類型
******************************************************************************
掛載語法:
swapon <裝置名稱> :掛載「裝置名稱」中的swap,例:swapon /dev/hda2
swapon -a :將所有的swap磁區掛載
卸載swap磁區語法:
swapoff <裝置名稱> :卸載 裝置名稱,例:swapoff /dev/hda2
swapoff -a :將所有的swap磁區卸載。
參考:
http://docs.hgiga.com/Discuz4/viewthread.php?tid=226
http://blog.udn.com/luckyhoo/628680
訂閱:
文章 (Atom)