2011-09-12 59 views
1

我有一個腳本命名爲password-for-object,我正常運行這樣的:shell腳本管道:不同的行爲,有或無XCLIP

$ password-for-object example.com 
sOtzC0UY1K3EDYp8a6ltfA 

即它執行復雜的散列計算並輸出一個密碼,我在訪問名爲example.com的對象(例如網站)時應該使用該密碼。我只需雙擊整個密碼,它就會被複制到我的緩衝區中,然後我將它粘貼到表單中。

我還學會了如何使用這樣的腳本一招沒有讓我的密碼可見:

$ password-for-object example.com | xclip 

腳本輸出這種方式在X的主緩衝區結束了,我可以將其插入右轉入密碼字段在窗體中,並且它沒有顯示在屏幕上。

這種方式唯一的問題是,password-for-object輸出一個字符串尾隨換行符,因此「XCLIP」總是趕上一個額外的符號 - 這個換行符。如果我在password-for-object中省略了換行符的輸出,那麼我最終會遇到無xclip的混亂字符串,即當我將它放在stdout上時。我用2個彈:zsh的和bash,我會得到的zsh如下(注意額外%符號):

$ password-for-object example.com 
sOtzC0UY1K3EDYp8a6ltfA% 
$ 

或者在bash(注意,提示會在同一行開始)以下:

$ password-for-object example.com 
sOtzC0UY1K3EDYp8a6ltfA$ 

有關如何解決此問題的任何想法?是否有可能以某種方式修改腳本,以便它能檢測到xclip處於管道中,並且只在不是時才輸出換行符?

回答

1

試試這個:如果您更改password-for-object,使其不輸出換行符

$ password-for-object example.com | tr -d '\n' | xclip 

TR -d「\ n」刪除換行符

+0

這不是很舒服,每次寫。通過xclip(也就是'myxclip' ='td -d'\ n'| xclip')滾動我自己的包裝也是可能的,但也不是很舒服:它會是一個額外的腳本來分佈在我使用的每個系統中。 – GreyCat