diff --git a/pySim-shell.py b/pySim-shell.py
index edd8112..59bfa28 100755
--- a/pySim-shell.py
+++ b/pySim-shell.py
@@ -419,13 +419,17 @@
 
 	def do_deactivate_file(self, opts):
 		"""Deactivate the current EF"""
-		fid = self._cmd.rs.selected_file.fid
-		(data, sw) = self._cmd.card._scc.deactivate_file(fid)
+		(data, sw) = self._cmd.card._scc.deactivate_file()
 
 	def do_activate_file(self, opts):
-		"""Activate the current EF"""
-		fid = self._cmd.rs.selected_file.fid
-		(data, sw) = self._cmd.card._scc.activate_file(fid)
+		"""Activate the specified EF"""
+		path = opts.arg_list[0]
+		(data, sw) = self._cmd.rs.activate_file(path)
+
+	def complete_activate_file(self, text, line, begidx, endidx) -> List[str]:
+		"""Command Line tab completion for ACTIVATE FILE"""
+		index_dict = { 1: self._cmd.rs.selected_file.get_selectable_names() }
+		return self._cmd.index_based_complete(text, line, begidx, endidx, index_dict=index_dict)
 
 	open_chan_parser = argparse.ArgumentParser()
 	open_chan_parser.add_argument('chan_nr', type=int, default=0, help='Channel Number')
diff --git a/pySim/commands.py b/pySim/commands.py
index 4640fe1..1fbea16 100644
--- a/pySim/commands.py
+++ b/pySim/commands.py
@@ -367,9 +367,9 @@
 		"""Execute DECATIVATE FILE command as per TS 102 221 Section 11.1.14."""
 		return self._tp.send_apdu_constr_checksw(self.cla_byte, '04', '00', '00', None, None, None)
 
-	def activate_file(self):
+	def activate_file(self, fid):
 		"""Execute ACTIVATE FILE command as per TS 102 221 Section 11.1.15."""
-		return self._tp.send_apdu_constr_checksw(self.cla_byte, '44', '00', '00', None, None, None)
+		return self._tp.send_apdu_checksw(self.cla_byte + '44000002' + fid)
 
 	def manage_channel(self, mode='open', lchan_nr=0):
 		"""Execute MANAGE CHANNEL command as per TS 102 221 Section 11.1.17."""
diff --git a/pySim/filesystem.py b/pySim/filesystem.py
index aaf333b..8c45ba1 100644
--- a/pySim/filesystem.py
+++ b/pySim/filesystem.py
@@ -1150,6 +1150,13 @@
         (data, sw) = self.card._scc.status()
         return self.selected_file.decode_select_response(data)
 
+    def activate_file(self, name:str):
+        """Request ACTIVATE FILE of specified file."""
+        sels = self.selected_file.get_selectables()
+        f = sels[name]
+        data, sw = self.card._scc.activate_file(f.fid)
+        return data, sw
+
     def read_binary(self, length:int=None, offset:int=0):
         """Read [part of] a transparent EF binary data.
 
