이것을 ~/.bashrc에 함수로 넣을 수 있는 방법이 있나요?

이것을 ~/.bashrc에 함수로 넣을 수 있는 방법이 있나요?

방금 이 유용한 코드를 찾았습니다.유용해 보이는 웹사이트.

#!/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')" $@
}

그렇다면 어떤 것이 있습니까(그리고 위의 예에서 볼 수 있듯이 제 말은어느) 이 코드로 이 작업을 수행할 수 있나요?

답변1

귀하가 요청한 것은 아니지만 라인 무작위화가 이미 존재합니다 coreutils.

shuf또는 를 사용하십시오 sort -r.

예를 들면 다음과 같습니다.

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

출력 예:

8
4
2
7
5
10
6
3
1
9

답변2

tclsh스크립트를 다른 위치에서 읽도록 지시합니다.파일 설명자, 그리고 사용여기 문서스크립트를 통해.

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

관련 정보