1) Recognize whether a disk has partitions or not. i.e. check if disk has a partition table. Can I just test for presence of file /dev/sda and not /dev/sda1?
Não vejo por que isso não funcionaria, mas você também pode fdisk -l /dev/sda
liste as partições de um disco.
O2) recognizing which disk I booted from so I can ignore it.
mtab deve ser suficiente para informá-lo sobre sistemas de arquivos montados. Isso deve ser suficiente para evitar discos do sistema. Você também pode procurar o sinalizador de inicialização.
Mas, se seu objetivo for criar uma partição em discos brutos, não vejo porque é necessário ignorar especialmente as partições "do sistema".
3) Creating the partition from the command line
Eu não acho que o fdisk tenha uma maneira de lidar com isso. Há sfdisk, no entanto, que deve ser capaz de fazer isso. O Parted também pode usar um script .
Uma vez que a partição é feita, você provavelmente precisará também do atualize a tabela de partições e depois coloque um sistema de arquivos .