Bash

有什麼辦法可以將它作為一個函式放入我的 ~/.bashrc 中?

  • September 8, 2012

我剛剛在這個看起來很有用的網站上發現了這段有用的程式碼。

#!/bin/sh
exec tclsh "$0" ${1+"$@"}

proc main {} {
    set lines [lrange [split [read stdin] \n] 0 end-1]
    set count [llength $lines]

    for {set idx_1 0} {$idx_1 < $count} {incr idx_1} {
        set idx_2 [expr {int($count * rand())}]
        set temp [lindex $lines $idx_1]
        lset lines $idx_1 [lindex $lines $idx_2]
        lset lines $idx_2 $temp
    }

    puts [join $lines \n]
}

main

不幸的是,我不喜歡腳本。如果可以的話,我會創建bash函式。(我什至完全混淆了 Python 腳本,以便將它們不顯眼地放入我的 ~/.bashrc 中,即 :)

dna-ify () {
python -c "exec'eJxdkUFrhDAQhe/5FdNsIQpu9rIspSBtLz330N4EiTq6AY0hiaW7v75j1F1aLwlv3vdmMu4eDpN3h0qbA5pvsJdwHg3bQT022nT51+f7/omx1o0DlGU7hclhWYIe7OgCWKdNINXUQRO1qsp1VjmPGfiLz6BSHk/HDNAsmZ6xWHaQ36zyzXXTgCZ8xEqSrhapmqZUay0Rre7RqAFFBoZUn4sXkbL5RlkrEY+Z8ZSi27mFlxv4zIA+H2jujpDRokn+GFLpUDVEYk+sGcP8BukDDS61VyFckvRfyN1wQ/3aaBsprumMvaUqu97JeJFxMZiIa68res61uhmW1cnqdFw9K0spMRMSvvww2NdQcPzBuhA8gy0iA14I2WBkC7HEFSK9S3NPEgoOj68EerQ55yn7BbL1snM='.decode('base64').decode('zlib')" $@
}

那麼,是否有任何(並且,正如上面的範例應該表明的那樣,我的意思是任何)我可以用這段程式碼做到這一點?

告訴tclsh從不同的文件描述符中讀取腳本,並使用此處的文件來傳遞腳本。

shuffle () {
 tclsh /dev/fd/3 "$@" 3<<'EOF'
proc main {} {
   …
}
main
EOF
}

不是您要求的,而是行隨機化已經在coreutils.

使用shufsort -r

嘗試例如:

echo {1..10} | tr ' ' '\n' | shuf

範例輸出:

8
4
2
7
5
10
6
3
1
9

引用自:https://unix.stackexchange.com/questions/47542