Você pode criar aliases no seu arquivo ~ / .bashrc. Por exemplo, criar um arquivo com 7 zip de uma pasta, que normalmente seria
7z a -m0=lzma2 -mx=9 -ms=on -mf=on -mtc=on archive_name.7z folder_name
no seu ~ / .bashrc colocar em:
alias 7zipfolder='7z a -m0=lzma2 -mx=9 -ms=on -mf=on -mtc=on'
Depois disso, você pode fazer,
7zipfolder archive_name.7z folder_name
Terá de sair e voltar para que tenha efeito ou fonte ~ / .bashrc
HTH:)
==== EDIT: Considerando as respostas abaixo, bem, eu estou pensando que você poderia fazer isso se você modificar o PATH para procurar em suas pastas de script pessoais primeiro, como
PATH = ~ / .shortcommands: $ PATH
E então você pode criar scripts com os mesmos nomes daqueles que estão instalados, por exemplo, / usr / sbin, dê um loop sobre todos os argumentos, expanda os que você quer e, em seguida, termine chamando o script / aplicativo "real" em seu caminho absoluto com o conjunto de opções traduzido.
Por exemplo,
7z --folder Documents.7z Documents/
chama
~/.shortcommands/7z
que traduz tudo para:
/usr/bin/7z a -m0=lzma2 -mx=9 -ms=on -mf=on -mtc=on Documents.7z Documents/
O script em si seria repetir a lista de argumentos e depois traduzir o que faria sentido para as suas necessidades. Você provavelmente estará longe de ser capaz de criar um "shell" sobre o comando original, mas obviamente isso não é o que você está procurando. Não tenho certeza de como você é proficiente com scripts bash, mas há toneladas de recursos muito bons por aí. Apenas para servir de exemplo para a iteração de argumentos, aqui está um trecho de um script no qual estou trabalhando atualmente que cria / verifica dados de paridade e arquivos de soma de verificação para outros arquivos:
# Iterate arguments while shifting off those meant for us, leaving behind files to process.
# No clue how to directly index on the arguments array, so I copy it:
args=("$@")
files=()
files_count=0
# Then we iterate over each argument, collecting anything that's for us, and adding files
# to our files array, making sure to get absolute paths should we somehow get relative ones
# (e.g. from Nautilus or the commandline):
for ((i=0; $i<$#; i++)); do
argument=${args[$i]}
# How deep to go into FILE before starting to create/check protection files:
if [ "$argument" = "-d" -o "$argument" = "--depth" ]; then
# Seek to the next argument, i.e. the value:
let "i=i+1"
# We'll get an error if we try to just grab the next argument and it isn't there:
if [ $i -eq $# ]; then
print_argument_error "${args[$i-1]} needs a value."
else
target_depth="${args[$i]}"
# Okay, so is the value sane?
if [[ ! $target_depth =~ ^[1-9][0-9]{0,}$ ]]; then
print_argument_error "${args[$i-1]} must be 1 or higher."
fi
fi
# Whether or not to include output from our client commands, too:
elif [ "$argument" = "-v" -o "$argument" = "--verbose" ]; then
print_client_output=1
# Whether or not to verify files:
elif [ "$argument" = "-V" -o "$argument" = "--verify" ]; then
check=1
# Whether or not to create validation files:
elif [ "$argument" = "-C" -o "$argument" = "--create" ]; then
verify=1
# Whether or not to repair files when possible:
elif [ "$argument" = "-R" -o "$argument" = "--repair" ]; then
verify=1
repair=1
# That's all the arguments we understand, the rest must be files:
else
# So we assume anything but an option is an input file or dir. Get the item:
item="$argument"
# If it's a file, we get its directory location and convert it to absolute,
# then prepend the file name back onto that before pushing it onto our files
# array. If it's a dir, we just convert it to absolute before pushing it:
if [ -f "$item" ]; then
dir="'dirname "$item"'"
files[${files_count}]="'cd "$dir"; pwd'/'basename "$item"'"
let "files_count=files_count+1"
elif [ -d "$item" ]; then
files[${files_count}]="'cd "$item"; pwd'"
let "files_count=files_count+1"
fi
fi
done