only; nothing but; no more than
Used with a negative predicate to express limitation: 'nothing but X', 'only X'. The negative verb/adjective is required; しか cannot be used with affirmative forms.
財布には100円しかない。
I have only 100 yen in my wallet.
I had only a thousand yen in my wallet.
彼は野菜しか食べない。
He eats nothing but vegetables.
Only she can solve this problem.
There are only three days left.
There's nothing left to do but give up.
だけ means 'only/just' and works with both affirmative and negative predicates, while しか must be paired with a negative verb and stresses insufficiency or exclusivity.
のみ is a more formal, written equivalent of しか/だけ meaning 'only', and unlike しか it does not require a negative predicate.
しか must be paired with a negative verb to mean 'only', stressing insufficiency, whereas ばかり can appear in positive sentences and often implies 'nothing but' or habitual excess.
The particle しか is of native Japanese origin. Its exact historical derivation is uncertain, but it has been used since Old Japanese to express limitation with a following negative.