#shell判斷文件夾是否存在
#如果文件夾不存在,創建文件夾
if [ ! -d "/myfolder" ]; then
mkdir /myfolder
fi
#shell判斷文件,目錄是否存在或者具有許可權
folder="/var/www/"
file="/var/www/log"
# -x 參數判斷 $folder 是否存在並且是否具有可執行許可權
if [ ! -x "$folder"]; then
mkdir "$folder"
fi
# -d 參數判斷 $folder 是否存在 《Linux就該這么學》 一起學習linux
if [ ! -d "$folder"]; then
mkdir "$folder"
fi
# -f 參數判斷 $file 是否存在
if [ ! -f "$file" ]; then
touch "$file"
fi
# -n 判斷一個變數是否有值
if [ ! -n "$var" ]; then
echo "$var is empty"
exit 0
fi
# 判斷兩個變數是否相等
if [ "$var1" = "$var2" ]; then
echo '$var1 eq $var2'
else
echo '$var1 not eq $var2'
fi
❷ linux shell 如何判斷一個文件是否存在
了解你的意思,首先,test命令是判斷某一個特定的文件相關信息,也就是當你使用test這個命令的時候,你是清楚它叫什麼名字的(只是你不知道它的相關信息)。如果你要判斷比如你說的以hbc*開頭的一類文件,最好就是使用ls命令或者find命令來作。你可以參考一下,下面的小測試。
mike >>> ls -d ??? 12-04-20 23:15
acp/ apc/ scl tmp/ xmy/
mike >>> test -d x?? 12-04-20 23:15
mike >>> echo $? 12-04-20 23:16
0
mike >>> test -d x* 12-04-20 23:16
test: too many arguments
使用find命令能很好查找已hbc開頭的文件或者目錄,但是它不能判斷有沒有這樣的文件,因為你不能通過find的命令執行狀態來判斷是否有這樣的文件,但是可以把find的輸出導向到一個文件,從而對文件進行判斷。如下:
mike >>> find ./ -type d -name "FUK*" -print 12-04-20 23:24
mike >>> echo $? 12-04-20 23:24
0
❸ linux如何查看一個文件是否存在軟鏈接
需要准備的材料分別是:電腦、linux連接工具。
1、首先連接上linux主機,進入等待輸入指令的linux命令行狀態。
❹ linux查看目錄下文件的命令
linux中查看文件和目錄的命令是:LS
LS英文原意:list,命令所在路徑:/bin/ls,適用於所有用戶許可權,主要功能就是以列表形式顯示目錄文件。
其語法: ls 選項【-ald】【文件或目錄】
其中,-a 顯示所有文件,包括隱藏文件;
-l 詳細信息顯示;
-d 僅顯示目錄名,而不顯示目錄下的內容列表;
-h 人性化顯示(hommization);
-i 查看任意一個文件的i節點(類似於身份證唯一信息);
-t 用文件和目錄的更改時間排序;可以用第一個顯示的文件判斷最近修改的文件;
注意:. 開頭的文件除非是目錄,否則就是隱藏文件
(4)linux命令判斷文件是否存在擴展閱讀:
創建目錄命令:mkdir,英文原意:make directories,命令所在路徑:/bin/mkdir,適用於所有用戶許可權,功能在於創建新的目錄。
其語法: mkdir 【-p】【目錄名】
-p 遞歸創建
例子:a)創建單個目錄:mkdir /tmp/vae.txt
b)創建多個目錄:mkdir /tmp/a.txt /tmp/b.txt
使用時的注意事項:
1、創建的目錄已經存在, 那麼 Linux 會提示我們 Linux 無法創建它。
2、不帶任何參數運行 mkdir 命令會在當前目錄下創建目錄。
3、不帶上-p,如果新建的文件上級目錄不存在則不會執行成功這種說法是錯誤的。加或者不加上 -p 前面的目錄沒有得都會依次創建。
4、創建目錄的首要條件是, 在想要創建目錄的目標路徑下你必須具有訪問許可權。
❺ linux中怎麼查找文件夾是否存在
linux中使用find命令來查找文件夾,使用find
/
-name
要查找的文件夾名
-type
d方式來查找。
find命令說明
語法
find(選項)(參數)
選項
-amin<分鍾>:查找在指定時間曾被存取過的文件或目錄,單位以分鍾計算;
-anewer<參考文件或目錄>:查找其存取時間較指定文件或目錄的存取時間更接近現在的文件或目錄;
-atime<24小時數>:查找在指定時間曾被存取過的文件或目錄,單位以24小時計算;
-cmin<分鍾>:查找在指定時間之時被更改過的文件或目錄;
-cnewer<參考文件或目錄>查找其更改時間較指定文件或目錄的更改時間更接近現在的文件或目錄;
-ctime<24小時數>:查找在指定時間之時被更改的文件或目錄,單位以24小時計算;
-daystart:從本日開始計算時間;
-depth:從指定目錄下最深層的子目錄開始查找;
-expty:尋找文件大小為0
byte的文件,或目錄下沒有任何子目錄或文件的空目錄;
-exec<執行指令>:假設find指令的回傳值為true,就執行該指令;
-false:將find指令的回傳值皆設為false;
-fls<列表文件>:此參數的效果和指定「-ls」參數類似,但會把結果保存為指定的列表文件;
-follow:排除符號連接;
-fprint<列表文件>:此參數的效果和指定「-print」參數類似,但會把結果保存成指定的列表文件;
-fprint0<列表文件>:此參數的效果和指定「-print0」參數類似,但會把結果保存成指定的列表文件;
-fprintf<列表文件><輸出格式>:此參數的效果和指定「-printf」參數類似,但會把結果保存成指定的列表文件;
-fstype<文件系統類型>:只尋找該文件系統類型下的文件或目錄;
-gid<群組識別碼>:查找符合指定之群組識別碼的文件或目錄;
-group<群組名稱>:查找符合指定之群組名稱的文件或目錄;
-help或——help:在線幫助;
-ilname<範本樣式>:此參數的效果和指定「-lname」參數類似,但忽略字元大小寫的差別;
-iname<範本樣式>:此參數的效果和指定「-name」參數類似,但忽略字元大小寫的差別;
-inum<inode編號>:查找符合指定的inode編號的文件或目錄;
-ipath<範本樣式>:此參數的效果和指定「-path」參數類似,但忽略字元大小寫的差別;
-iregex<範本樣式>:此參數的效果和指定「-regexe」參數類似,但忽略字元大小寫的差別;
-links<連接數目>:查找符合指定的硬連接數目的文件或目錄;
-iname<範本樣式>:指定字元串作為尋找符號連接的範本樣式;
-ls:假設find指令的回傳值為ture,就將文件或目錄名稱列出到標准輸出;
-maxdepth<目錄層級>:設置最大目錄層級;
-mindepth<目錄層級>:設置最小目錄層級;
-mmin<分鍾>:查找在指定時間曾被更改過的文件或目錄,單位以分鍾計算;
-mount:此參數的效果和指定「-xdev」相同;
-mtime<24小時數>:查找在指定時間曾被更改過的文件或目錄,單位以24小時計算;
-name<範本樣式>:指定字元串作為尋找文件或目錄的範本樣式;
-newer<參考文件或目錄>:查找其更改時間較指定文件或目錄的更改時間更接近現在的文件或目錄;
-nogroup:找出不屬於本地主機群組識別碼的文件或目錄;
-noleaf:不去考慮目錄至少需擁有兩個硬連接存在;
-nouser:找出不屬於本地主機用戶識別碼的文件或目錄;
-ok<執行指令>:此參數的效果和指定「-exec」類似,但在執行指令之前會先詢問用戶,若回答「y」或「y」,則放棄執行命令;
-path<範本樣式>:指定字元串作為尋找目錄的範本樣式;
-perm<許可權數值>:查找符合指定的許可權數值的文件或目錄;
-print:假設find指令的回傳值為ture,就將文件或目錄名稱列出到標准輸出。格式為每列一個名稱,每個名稱前皆有「./」字元串;
-print0:假設find指令的回傳值為ture,就將文件或目錄名稱列出到標准輸出。格式為全部的名稱皆在同一行;
-printf<輸出格式>:假設find指令的回傳值為ture,就將文件或目錄名稱列出到標准輸出。格式可以自行指定;
-prune:不尋找字元串作為尋找文件或目錄的範本樣式;
-regex<範本樣式>:指定字元串作為尋找文件或目錄的範本樣式;
-size<文件大小>:查找符合指定的文件大小的文件;
-true:將find指令的回傳值皆設為true;
-typ<文件類型>:只尋找符合指定的文件類型的文件;
-uid<用戶識別碼>:查找符合指定的用戶識別碼的文件或目錄;
-used<日數>:查找文件或目錄被更改之後在指定時間曾被存取過的文件或目錄,單位以日計算;
-user<擁有者名稱>:查找符和指定的擁有者名稱的文件或目錄;
-version或——version:顯示版本信息;
-xdev:將范圍局限在先行的文件系統中;
-xtype<文件類型>:此參數的效果和指定「-type」參數類似,差別在於它針對符號連接檢查。
參數
起始目錄:查找文件的起始目錄。
示例:
根據文件類型進行搜索
find
.
-type
類型參數
類型參數列表:
f
普通文件
l
符號連接
d
目錄
c
字元設備
b
塊設備
s
套接字
p
fifo
❻ linux shell 判斷文件是否存在 存在就刪除
1、linux shell中判斷文件是否存在,可以使用test命令的-a參數。藉助於if結構進行判斷即可。
2、以~/t/thello.py為例,檢測這個文件,如果存在將其刪除,示例代碼如下:
if[[-a~/t/hello.py]];then
echo"存在文件";
rm-f~/t/hello.py
fi;
3、測試效果如下圖所示
❼ linux如何用命令查看某文件夾下是否有指定的文件
ls /usr/local 此命令會列印出/usr/local文件夾下的文件,你就可以看有沒有這個文件了!
❽ linux命令行怎麼查看指定文件在哪
在使用linux時,經常需要進行文件查找。其中查找的命令主要有find和grep。兩個命令是有區的。區別:(1)find命令是根據文件的屬性進行查找,如文件名,文件大小,所有者,所屬組,是否為空,訪問時間,修改時間等。
(2)grep是根據文件的內容進行查找,會對文件的每一行按照給定的模式(patter)進行匹配查找。
一.find命令
基本格式:find path expression
1.按照文件名查找
(1)find / -name httpd.conf#在根目錄下查找文件httpd.conf,表示在整個硬碟查找
(2)find /etc -name httpd.conf#在/etc目錄下文件httpd.conf
(3)find /etc -name '*srm*'#使用通配符*(0或者任意多個)。表示在/etc目錄下查找文件名中含有字元串『srm』的文件
(4)find . -name 'srm*' #表示當前目錄下查找文件名開頭是字元串『srm』的文件
2.按照文件特徵查找
(1)find / -amin -10 # 查找在系統中最後10分鍾訪問的文件(access time)
(2)find / -atime -2 # 查找在系統中最後48小時訪問的文件
(3)find / -empty # 查找在系統中為空的文件或者文件夾
(4)find / -group cat # 查找在系統中屬於 group為cat的文件
(5)find / -mmin -5 # 查找在系統中最後5分鍾里修改過的文件(modify time)
(6)find / -mtime -1 #查找在系統中最後24小時里修改過的文件
(7)find / -user fred #查找在系統中屬於fred這個用戶的文件
(8)find / -size +10000c#查找出大於10000000位元組的文件(c:位元組,w:雙字,k:KB,M:MB,G:GB)
(9)find / -size -1000k #查找出小於1000KB的文件
3.使用混合查找方式查找文件
參數有: !,-and(-a),-or(-o)。
(1)find /tmp -size +10000c -and -mtime +2 #在/tmp目錄下查找大於10000位元組並在最後2分鍾內修改的文件
(2)find / -user fred -or -user george #在/目錄下查找用戶是fred或者george的文件文件
(3)find /tmp ! -user panda#在/tmp目錄中查找所有不屬於panda用戶的文件
二、grep命令
基本格式:find expression
1.主要參數
[options]主要參數:
-c:只輸出匹配行的計數。
-i:不區分大小寫
-h:查詢多文件時不顯示文件名。
-l:查詢多文件時只輸出包含匹配字元的文件名。
-n:顯示匹配行及行號。
-s:不顯示不存在或無匹配文本的錯誤信息。
-v:顯示不包含匹配文本的所有行。
pattern正則表達式主要參數:
\: 忽略正則表達式中特殊字元的原有含義。
^:匹配正則表達式的開始行。
$: 匹配正則表達式的結束行。
\<:從匹配正則表達 式的行開始。
\>:到匹配正則表達式的行結束。
[ ]:單個字元,如[A]即A符合要求 。
[ - ]:范圍,如[A-Z],即A、B、C一直到Z都符合要求 。
.:所有的單個字元。
* :有字元,長度可以為0。
❾ 怎麼查看linux磁碟是否存在
一,查看磁碟狀態
這里簡單介紹兩個命令:df、。
df:df用來檢查文件系統的磁碟空間佔用情況。可以利用該命令來獲取硬碟被佔用了多少空間,目前還剩下多少空間等信息。 df的參數有:代碼:
-a 顯示所有文件系統的磁碟使用情況,包括0塊(block)的文件系統,如/proc文件系統。
-k 以k位元組為單位顯示。
-i 顯示i節點信息,而不是磁碟塊。
-t 顯示各指定類型的文件系統的磁碟空間使用情況。
-x 列出不是某一指定類型文件系統的磁碟空間使用情況(與t選項相反)。
-T 顯示文件系統類型。 對df命令進行詳解:
引用:
dongmh@home:~$ df
Filesystem 1K-塊 已用 可用 已用% 掛載點
/dev/sda12 3842376 242424 3404764 7% /
這個就是最基本用法,你可能覺得奇怪已用和可用加在一起不等於前面的塊的總值,這是因為默認狀況下,有留給root的專門用於維護管理的保留空間,不用在意。其他的用法無非是加上不同的參數顯示不同的信息,不再反復說明。
:用於統計目錄或文件所佔磁碟空間的大小。 它的參數如下:代碼:
-s 對每個Names參數只給出佔用的數據塊總數。
-a 遞歸地顯示指定目錄中各文件及子孫目錄中各文件佔用的數據塊數。
若既不指定-s,也不指定-a,則只顯示Names中的每一個目錄及其中的各子目錄所佔的磁碟塊數。
-b 以位元組為單位列出磁碟空間使用情況(系統預設以k位元組為單位)。
-k 以1024位元組為單位列出磁碟空間使用情況。
-c 最後再加上一個總計(系統預設設置)。
-l 計算所有的文件大小,對硬鏈接文件,則計算多次。
-x 跳過在不同文件系統上的目錄不予統計。
二、Ubuntu硬碟分區
在一個有win的電腦上,分區無疑是一件很簡單的事。使用分區魔術師,對硬碟可以進行分區、合並、調整大小,所以大多數和我一樣電腦上先有win的朋友在分區方面一定不用愁,整理下數據,空出幾個分區,然後在Ubuntu硬碟安裝的時候就可以利用安裝程序分好區,以後就沒有什麼可擔憂的了,但是某些朋友因為某些 需要,必須利用linux操作系統進行分區,那麼以下的內容也許能有點價值。
首先談談基礎知識,一個Ubuntu硬碟可以劃分4個區,3個主要分區,一個擴展分區,而擴展分區里可以劃分n個邏輯分區,擴展分區本身不能儲存任何東西,也不能格式化成某種文件系統,只能用於區分邏輯分區。
我們主要應用的命令有三個:fdisk、cfdisk、gparted。其中前兩個命令在breezy中已經安裝好了,如果你需要gparted的話是需要另外安裝的,我們的源里有,安裝方法:代碼:sudo apt-get install gparted
這三個軟體的不同之處主要在於直觀性、易用性,fdisk可以說最難用,而cfdisk有了字元的界面,gparted則有了基於gnome的更漂亮的界面,從功能的角度上來說三個軟體都差不多,但是有時不得不使用fdisk,這里我對三個軟體的使用進行一定的說明:fdisk:代碼:sudo fdisk -l會列出所有硬碟之實體使用情況。代碼:sudo fdisk -l /dev/hda會列出第一快IDE硬碟的使用情況,響應的來講可以換用/dev/sda等等。代碼:sudo fdisk /dev/hda
進入硬碟分區模式,進入這個模式後所有操作不會立刻生效,只會在得到確認的命令後才會起作用。代碼:
m 顯示所有命令提示。
p 現實硬碟分區情況。
a 設定硬碟起動區。
n 設定新的硬碟分區。
l 列出所有文件系統類型。
e 在輸入n的情況下才能用,指增加一個擴展分區。
p 在輸入n的情況下才能用,指增加一個主要分區。
l 在輸入n的情況下才能用,指增加一個邏輯分區。
t 改變硬碟分區屬性。
d 刪除硬碟分區。
q 結束但不對硬碟進行修改。
w 結束而且對硬碟進行修改。
現在對fdisk的結果進行詳解,以下是在我的電腦上運行的例子:引用:
dongmh@home:~$ sudo fdisk -l /dev/hda
Disk /dev/hda: 60.0 GB, 60022480896 bytes
255 heads, 63 sectors/track, 7297 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 1276 10249438+ 7 HPFS/NTFS
/dev/hda2 1277 7297 48363682+ f W95 Ext'd (LBA)
/dev/hda5 1277 2551 10241406 7 HPFS/NTFS
/dev/hda6 2552 3835 10313698+ 7 HPFS/NTFS
/dev/hda7 3836 3957 979933+ 82 Linux swap / Solaris
/dev/hda8 3958 4261 2441848+ 83 Linux
/dev/hda9 4262 4869 4883728+ 83 Linux
/dev/hda10 4870 7297 19502878+ 83 Linux
上面的提示表示,我的Ubuntu硬碟有60G,255個磁面,63個扇區,7297個磁柱;每個磁柱容量是8225280 Byte 大約是8225KB或者8MB。
Device Boot Start End Blocks Id System分區序列 引導 開始 終止 容量 分區類型ID 分區類型引導 表示引導分區,在上面的例子中 hda1 是引導分區;開始 表示的一個分區從X cylinder(磁柱)開始;結束表示一個分區到 Y cylinder(磁柱)結束;然後進入分區模式:
引用:
dongmh@home:~$ sudo fdisk /dev/hda
The number of cylinders for this disk is set to 7297.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help):
上面的提示大概的意思就是我的Ubuntu硬碟大於1024個磁柱所以呢,老闆本的lilo會不買我的帳,可以不用在意。我們先嘗試命令d
引用:
Command (m for help): d
Partition number (1-10):
它問你要刪除哪個分區,一定要注意,如果刪了擴展分區,那麼所有邏輯分區一塊跟著掛,一定要小心。我輸入7,再輸入p就可以看到自己的Ubuntu硬碟分區少了一個。
接下來我添加一個邏輯分區:引用:
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (3836-7297, default 3836):3836
Last cylinder or +size or +sizeM or +sizeK (3836-3957, default 3957): 3957
這里的兩個問題是,開始的磁柱是哪個,結束的磁柱是哪個。在結束的磁柱處可以用+sizeM +sizeK來輸入。然後是對分區類型的改變,我輸入t:
引用:
Command (m for help): t
Partition number (1-10): 7
Hex code (type L to list codes): L
輸入L可以看到所有磁碟的文件類型列列表,然後再從輸入相應的文件系統ID就可以對分區文件系統進行更改了。最後如果需要保存就輸入w,不許要則輸入q,這樣分區修改就算結束了。
cfdisk、gparted:cfdisk有非常直觀的界面,而gparted甚至是中文的,所以這里我就不再多作介紹。
三、Ubuntu硬碟格式化
分完區還不算完事,格式化後才能正常使用,這里介紹下Linux格式化命令:代碼:sudo mkfs -t 文件系統存儲設備格式化就是這么簡單,或者也可一這樣輸入命令:代碼:
sudo mkfs.ext3 /dev/sda6 把該設備格式化成ext3文件系統。
sudo mke2fs -j /dev/sda6 把該設備格式化成ext3文件系統。
sudo mkfs.ext2 /dev/sda6 把該設備格式化成ext2文件系統。
sudo mke2fs /dev/sda6 把該設備格式化成ext2文件系統。
sudo mkfs.reiserfs /dev/sda6 把該設備格式化成reiserfs文件系統。
sudo mkfs.vfat /dev/sda6 把該設備格式化成fat32文件系統。
sudo mkfs.msdos /dev/sda6 把該設備格式化成fat16文件系統,msdos文件系統就是fat16。
sudo mkdosfs /dev/sda6 把該設備格式化成fat16文件系統,同mkfs.msdos
sudo mkswap /dev/sda6 把該設備格式化成swap文件系統。
這樣分好區,並且格式化結束,就可以進行掛載了。
四、Ubuntu硬碟掛載文件系統
掛載文件系統有兩個方法,一種是利用mount命令,另外一種是修改/etc/fstab,因為修改/etc/fstab並不方便,所以我只介紹mount。mount命令的用法如下:
代碼:sudo mount [-t 文件系統 ] [-o 選項] 設備 目錄
使用這個命令前需要先生成一個用於被掛的目錄,創建了這樣的目錄後有個細節問題就是更改這個目錄的許可權,最起碼要你可讀寫,這樣才能使你掛載的硬碟可讀寫,當然ntfs的硬碟除外。代碼:chmod 777 目錄
而掛載時,也有可以省事的地方,比如說你不知道你的分區是什麼文件類型你可以:代碼:sudo mount -t auto 設備目錄或者也可以:代碼:sudo mount 設備 目錄順便說下swap分區,一般不這樣掛載,而採用載入命令進行載入:代碼:sudo swapon 設備相應的也就產生了:代碼:sudo swapoff 設備
五、Ubuntu硬碟對文件系統進行掃描
各 位朋友對Windows中的scandisk不寞生吧,在Linux中就有類似這樣的工具fsck,不過fsck 可不僅僅是掃描,還能修正文件系統的一 些問題。一定要注意的是fsck 掃描文件系統時一定要在修復模式或把設備umount後進行,否則會有重大的問題發生。
其中fsck 默認支持 文件系統ext2,如果想支持ext3文件系統的掃描,應該加-j 參數,最好是我們應該根據不同的文件系統來調用不同的掃描工具,比 如 fsck.ext2,fsck.jfs,fsck.msdos,fsck.ext3,fsck.reiserfs。對於fsck.ext2和 fsck.ext3有幾個常用參數,如下:代碼:
-p 自動修復文件系統存在的問題;
-y 如果文件系統有問題,會跳出提示是否修復,如果修復請按y;
-c 對文件系統進行壞塊檢查;這是一個極為漫長的過程;
-n 不對文件系統做任何改變,只要掃描,以檢測是否有問題;
那麼使用它的方法就是:代碼:sudo fsck.ext3 -p /dev/hda6任何對Ubuntu硬碟操作都是有危險的,千萬不要隨便練手,在可能的情況下盡量使用帶有界面的gparted,不到萬不得已不要隨便格式化。這是為了你的數據和Ubuntu硬碟壽命著想。
❿ 請問Linux中怎麼查看命令是否存在
find命令
find是linux下用於查找文件的通用方法。
find語法:
find
[指定查找目錄]
[查找規則]
[查找完後執行的action]
例如:find
/tmp
-name
wa*
-type
l
,是在/tmp下查找名為wa開頭且類型為符號鏈接的文件。找到就表示存在。