2014-01-24 123 views
12

我使用以下兩個命令來創建一個0B文件及其分機設置爲644單命令創建一個文件,並設置其權限

touch filename.ext 
chmod 777 filename.txt 

我的問題是,是否有UNIX或任何單個命令(korn shell),它們將一起完成這兩件事,也就是說創建一個具有期望權限的0B fil?

+0

據我所知:沒有一個。注意:這不是644必要的,它取決於'umask' –

回答

2

您可以創建自己的命令:

create() { 
    touch "$1" 
    chmod "$2" "$1" 
} 

create filename.ext 644 
+0

以及....'chmod「$ 2」「$ 1」' –

+0

@KarolyHorvath你說得對,這樣更好。我更新了答案。 –

+0

不,我認爲我無法正確放置查詢......它不是關於特定權限或關於特定文件名......而子例程是我正在使用的片段......我是隻是想知道是否有一個單一的命令一起做這兩件事... ike的目錄,我們有mkdir -m 777 dirname ...同樣 – user3075776

10

對於bash,只需使用chmod與文件重定向和歷史擴展:

chmod 777 filename.txt>>!#:2 

對於kshzsh你必須放棄歷史擴展(如上所示,可能有其他方式)和使用:

chmod 644 filename>>filename 

對於任何shell的腳本,您都沒有(並且實際上不需要)歷史擴展,所以也使用上面的腳本。

+1

+1這是一個很好的快捷方式 – anubhava

+2

+ 1爲優秀的捷徑。對於其他人,請注意它會將現有文件截斷爲'0B'。如何將重定向改爲附加'>>',以便在意外運行現有文件時不會截斷現有文件?這將使其表現完全像'觸摸'。 – alvits

+0

@alvits編輯答案吸收這個最優秀的'touch'up(雙打意圖!);) –

0

你的文件不是用蝙蝠的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 
4

首先,你永遠不應該設置任何東西到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,但一旦你關閉它,你就回到以前的環境。

6

install -m 777 /dev/null filename.txt

+0

我喜歡這個比特定的咒語更難讀。 (我也喜歡這些,但更好。) –

-1

簡單

觸摸FILENAME.TXT & &搭配chmod 755 FILENAME.TXT

相關問題