sort-hash-list-file: change input file validation to support process substitution; output to stdout
move-hash-list-item: change input file validation to support process substitution; output to stdout
add-hash-list-item: change input file validation to support process substitution; output to stdout
delete-hash-list-item: change input file validation to support process substitution; output to stdout
update-hash-list-item: change input file validation to support process substitution; output to stdout
generate-global-id: picked from c787cb14adaa63ea64701735c0b6ae86a5dc58db
and modified: add line break and delete other chars in pre-hash content;
alter comment; simplify hash output code
generate-global-id: arguments other than hash list and parent list are optional, and change the file validation for this; append_file_content function add title automatically; support none-normal files as arguments; remove unused comment; add pre-hash text header
generate-global-id: directly get pre-hash text content from arguments, not from file; make it simple
add-hash-list-item: directly get pre-hash text content from arguments, not from file; make it simple
move-hash-list-item: directly get pre-hash text content from arguments, not from file; make it simple; bug fixed: when new file equals old file, it outputs nothing
sort-hash-list-file: rename to `sort-hash-list'; directly get pre-hash text content from arguments, not from file; make it simple
delete-hash-list-item: directly get pre-hash text content from arguments, not from file; make it simple
update-hash-list-item: directly get pre-hash text content from arguments, not from file; make it simple