我使用以下兩個命令來創建一個0B文件及其分機設置爲644單命令創建一個文件,並設置其權限
touch filename.ext
chmod 777 filename.txt
我的問題是,是否有UNIX或任何單個命令(korn shell),它們將一起完成這兩件事,也就是說創建一個具有期望權限的0B fil?
我使用以下兩個命令來創建一個0B文件及其分機設置爲644單命令創建一個文件,並設置其權限
touch filename.ext
chmod 777 filename.txt
我的問題是,是否有UNIX或任何單個命令(korn shell),它們將一起完成這兩件事,也就是說創建一個具有期望權限的0B fil?
您可以創建自己的命令:
create() {
touch "$1"
chmod "$2" "$1"
}
create filename.ext 644
以及....'chmod「$ 2」「$ 1」' –
@KarolyHorvath你說得對,這樣更好。我更新了答案。 –
不,我認爲我無法正確放置查詢......它不是關於特定權限或關於特定文件名......而子例程是我正在使用的片段......我是隻是想知道是否有一個單一的命令一起做這兩件事... ike的目錄,我們有mkdir -m 777 dirname ...同樣 – user3075776
對於bash
,只需使用chmod
與文件重定向和歷史擴展:
chmod 777 filename.txt>>!#:2
對於ksh
和zsh
你必須放棄歷史擴展(如上所示,可能有其他方式)和使用:
chmod 644 filename>>filename
對於任何shell的腳本,您都沒有(並且實際上不需要)歷史擴展,所以也使用上面的腳本。
你的文件不是用蝙蝠的666權限創建的唯一原因是umask。因此,如果您禁用umask:
umask 0
然後當您觸摸文件時,它將自動以權限666結束。通常使文本文件可執行並不是一個好主意。目錄最終將禁用umask,並獲得777權限。
[email protected] /tmp $ umask
0022
[email protected] /tmp $ touch x
[email protected] /tmp $ mkdir xx
[email protected] /tmp $ umask 0
chi[email protected] /tmp $ touch y
[email protected] /tmp $ mkdir yy
[email protected] /tmp $ ls -ld x xx y yy
-rw-r--r-- 1 chicks chicks 484 Jan 24 14:37 x
drwxr-xr-x 2 chicks chicks 4096 Jan 24 14:37 xx
-rw-rw-rw- 1 chicks chicks 0 Jan 24 14:37 y
drwxrwxrwx 2 chicks chicks 4096 Jan 24 14:37 yy
首先,你永遠不應該設置任何東西到777
權限。這是一個巨大的安全問題,並不需要它。爲了這個問題的目的,我會假設你想創建一個比默認值更安全的權限的文件,比如600
。
沒有一種停止方式來創建和更改使用大多數bash工具的文件權限。無論系統umask值是否設置,都會創建所有新文件。 133
的掩碼很常見,這意味着您的文件是以開箱即用的644
權限創建的。
除了在創建文件後使用chmod
命令設置文件許可權之外,還可以使用umask
命令告訴系統所需的默認設置。
$ umask 077
$ touch test_file
$ ls -l test_file
-rw------- 1 user group 0 Jan 24 22:43 test_file
您會注意到該文件已使用600
權限創建。
對於在shell中運行的所有命令,這些將保持有效,直到您關閉該shell或手動設置其他值。如果您想使用此結構來運行一個命令(或者甚至是一小部分人),它可以是有用的命令在子shell隔離
$ (umask 077 ; touch test_file)
注意,別的你把括號內將使用該umask,但一旦你關閉它,你就回到以前的環境。
install -m 777 /dev/null filename.txt
我喜歡這個比特定的咒語更難讀。 (我也喜歡這些,但更好。) –
簡單
觸摸FILENAME.TXT & &搭配chmod 755 FILENAME.TXT
據我所知:沒有一個。注意:這不是644必要的,它取決於'umask' –