⑴ 用SHELL編程問題,如何判斷文件類型
應該是bash吧:腳本的寫法是這樣的:file_name=xxxxxxxif [ -d $file_name ]
then
echo "directory"
else
echo "not a directory"
fi 下面是全部參數,裡面就有你需要的:-a file exists.
-b file exists and is a block special file.
-c file exists and is a character special file.
-d file exists and is a directory.
-e file exists (just the same as -a).
-f file exists and is a regular file.
-g file exists and has its setgid(2) bit set.
-G file exists and has the same group ID as this process.
-k file exists and has its sticky bit set.
-L file exists and is a symbolic link.
-n string length is not zero.
-o Named option is set on.
-O file exists and is owned by the user ID of this process.
-p file exists and is a first in, first out (FIFO) special file or
named pipe.
-r file exists and is readable by the current process.
-s file exists and has a size greater than zero.
-S file exists and is a socket.
-t file descriptor number fildes is open and associated with a
terminal device.
-u file exists and has its setuid(2) bit set.
-w file exists and is writable by the current process.
-x file exists and is executable by the current process.
-z string length is zero.
⑵ Shell腳本 有那些類型 比如說 .csh . py .sh 這些腳本又有什麼區別
通常寫一個shell腳本都要在第一行註明使用什麼解釋器來解釋這個腳本,即寫成:專
#!/bin/bash
這樣的形式,意思是告訴系統要屬使用/bin/bash這個解釋器來解釋下面的語句。
shell的腳本一般用.sh作為後綴,就如1樓說的後綴名在linux下並沒有特別意義,只是便於人類區分而已,只要你寫的腳本的第一行有#!/bin/bash或者是其他的解釋器,如#!/bin/csh,執行該腳本時系統會使用該註明的解釋器來解釋。
.csh大概是用來區分,這個腳本使用csh這個shell解釋器來解釋。
.sh用來區分,這個腳本使用bash或sh解釋器來解釋。
.py則是使用python來解釋。
⑶ unix中的SHELL文件擴展名是.sh還是.c
unix中文件的屬性是不依賴於
擴展名
的,加上擴展名只是為了操作者的方便。unix中一個文件是否能被執行,和
後綴名
沒有太大的關系,主要看文件的屬性有關。
例如:
-rwxr-xr-x
1
mythmy
mythmy
85
2009-03-09
11:45
A.txt
這個文件的文件名是A.txt
但是這是個可執行文件,因為其屬性是:755。所以這個文件是所有人都可讀,可執行的。
所以說不管擴展名是.sh還是.c只要其
文件屬性
是可執行,就一樣可以執行SHELL語句。
⑷ shell中如何判斷文件dos和unix格式
那些文件本來就是unix格式的,或者你的文件名之中有空格
或者是$file_name沒有定義,只定義了$filename
等等
----
那麼直接看一下file $file_name的結果是什麼?
要是不支持的話,還是用其他命令手工找一下有沒有那兩個位元組吧
⑸ unix中的SHELL文件擴展名是.sh還是.c
unix中文件的屬性是不依賴於擴展名的,加上擴展名只是為了操作者的方便。unix中一個文件是否能被執行,和後綴名沒有太大的關系,主要看文件的屬性有關。
例如:
-rwxr-xr-x 1 mythmy mythmy 85 2009-03-09 11:45 A.txt
這個文件的文件名是A.txt 但是這是個可執行文件,因為其屬性是:755。所以這個文件是所有人都可讀,可執行的。
所以說不管擴展名是.sh還是.c只要其文件屬性是可執行,就一樣可以執行SHELL語句。
⑹ 利用shell腳本把文件按照格式輸出
awk'/^ucli/{if(NR>1)printf" "
title=$0}
$0!~/^ucli/{printf"%s %s",title,$0}'filename>newfilename
⑺ shell腳本 -d 是目錄文件,那麼-e,-f分別是什麼還有"! -e"這又是什麼意思呢
-e表示如果filename存在,則為真。
-f表示如果filename為常規文件,則為真。
!-e表示取非,如果filename存在,則為假。
(7)shell文件格式擴展閱讀:
shell和shell腳本的區別:
確切一點說,Shell就是一個命令行解釋器,它的作用就是遵循一定的語法將輸入的命令加以解釋並傳給系統。它為用戶提供了一個向Linux發送請求以便運行程序的介面系統級程序,用戶可以用Shell來啟動、掛起、停止甚至是編寫一些程序。
Shell本身是一個用C語言編寫的程序,它是用戶使用Linux的橋梁。Shell既是一種命令語言,又是一種程序設計語言(就是你所說的shell腳本)。
作為命令語言,它互動式地解釋和執行用戶輸入的命令;作為程序設計語言,它定義了各種變數和參數,並提供了許多在高階語言中才具有的控制結構,包括循環和分支。
它雖然不是 Linux系統內核的一部分,但它調用了系統內核的大部分功能來執行程序、創建文檔並以並行的方式協調各個程序的運行。
⑻ shell里如何判斷文件格式是unix還是dos格式
dos格式和unix格式差別就在於換行符。
只要把所有的換行符統一,就完成了轉化,如
unix2dos 是轉為dos格式
dos2unix 是轉為unix格式
但是判斷就不是絕對的了,因為有可能文件中既有dos換行符,也有unix換行符,因此是模糊的,並沒有什麼意義。
有使用用file 命令可以顯示格式,但並不一定有效。
⑼ Shell輸出日誌不是DOS格式
修改一下好。
1、通過vi工具修改格式,在linux下通過vi打開該文件。在命令模式下使用setff命令,可以看到該文件的格式為fileformat=dos,然後修改文件格式:setff=unix,最後保存退出就可以了。
2、用fromdos命令轉換,fromdos命令是ubuntu下進行dos格式文件轉換成linux系統可以使用的文件格式的命令。
3、windows下很大編輯器本身也可以支持linux格式的文件編輯保存,不過默認並不是linux格式的,最簡單的辦法就是找一個已經是linux格式的shell腳本文件,在此基礎上進行修改保存,這樣保存之後仍然也是linux格式的。