about summary refs log blame commit diff stats
path: root/core/tty-terminal.html
blob: 4da3798238bf21744724d751f1abd37880b7a5fa (plain) (tree)
# Copyright (C) 2009, 2010  Roman Zimbelmann <romanz@lavabit.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

if __name__ == '__main__': from __init__ import init; init()
import unittest
from collections import deque

from ranger.ext.iter_tools import *

class TestCases(unittest.TestCase):
	def test_flatten(
<!DOCTYPE html>
<html dir="ltr" lang="en">
    <head>
        <meta charset='utf-8'>
        <title>2.4. Consoles, terminals and shells</title>
    </head>
    <body>

        <a href="index.html">Core OS Index</a>

        <h1>2.4. Consoles, terminals and shells</h1>

        <dl>
            <dt>Consoles</dt>
            <dd>Consoles and Virtual Consoles provides input and output
            with a computer using serial communication. Initially console
            was a physical device containing a terminal with a monitor and
            keyboard.</dd>

            <dt>Terminal</dt>

            <dd>A terminal provides text input/output environment
            that can be used to interact with a console (monitor or keyboard)
            or transmitted using serial communication.
            Initially a terminal was a electronic device connected to a
            microcomputer or mainframe that take input from a keyboard and
            output to a text mode screen. Terminals or ttys are provided by the
            kernel. Example of terminal emulators; tmux, ssh, st.<dd>

            <dt>Shell</dt>
            <dd>Shell are command line interpreter that a terminal
            runs. Shells also manage foreground and background
            processes. Example of shells dash and bash.</dd>
        </dl>


        <p>Content of /etc/inittab shows layout organization and default
        run level and ttys;</p>

        <pre>
        #
        # /etc/inittab: system runlevel description
        #

        # Runlevels:
        #  0	Halt
        #  1(S)	Single-user
        #  2	Multi-user
        #  3-5	Not used
        #  6	Reboot

        id:2:initdefault:

        rc::sysinit:/etc/rc
        rs:S1:wait:/etc/rc.single
        rm:2:wait:/etc/rc.multi
        rd:06:wait:/etc/rc.shutdown
        su:S:wait:/sbin/sulogin -p

        c1:2:respawn:/sbin/agetty --noclear 38400 tty1 linux
        c2:2:respawn:/sbin/agetty 38400 tty2 linux
        c3:2:respawn:/sbin/agetty 38400 tty3 linux
        c4:2:respawn:/sbin/agetty 38400 tty4 linux
        c5:2:respawn:/sbin/agetty 38400 tty5 linux
        c6:2:respawn:/sbin/agetty 38400 tty6 linux
        #s1:2:respawn:/sbin/agetty 38400 ttyS0 vt100

        ca::ctrlaltdel:/sbin/shutdown -t3 -r now

        # End of file
        </pre>


        <a href="index.html">Core OS Index</a>
        <p>This is part of the Tribu System Documentation.
        Copyright (C) 2020
        Tribu Team.
        See the file <a href="../fdl-1.3-standalone.html">Gnu Free Documentation License</a>
        for copying conditions.</p>
    </body>
</html>
class="nf">my_ismount(path): depth = path.count('/') if path.startswith('/media'): return depth == 0 or depth == 2 return depth <= 1 from ranger.ext import mount_path original_ismount = mount_path.ismount mount_path.ismount = my_ismount try: mp = mount_path.mount_path self.assertEqual('/home', mp('/home/hut/porn/bondage')) self.assertEqual('/', mp('/')) self.assertEqual('/media/sdb1', mp('/media/sdb1/foo/bar')) self.assertEqual('/media/sdc2', mp('/media/sdc2/a/b/c/d/e')) finally: mount_path.ismount = original_ismount # TODO: links are not tested but I don't see how its possible # without messing around with mounts. # self.assertEqual('/media/foo', # mount_path('/media/bar/some_link_to_a_foo_subdirectory')) def test_openstruct(self): from ranger.ext.openstruct import OpenStruct from random import randint, choice from string import ascii_letters os = OpenStruct(a='a') self.assertEqual(os.a, 'a') self.assertRaises(AttributeError, getattr, os, 'b') dictionary = {'foo': 'bar', 'zoo': 'zar'} os = OpenStruct(dictionary) self.assertEqual(os.foo, 'bar') self.assertEqual(os.zoo, 'zar') self.assertRaises(AttributeError, getattr, os, 'sdklfj') for i in range(100): attr_name = ''.join(choice(ascii_letters) \ for x in range(randint(3,9))) value = randint(100,999) if not attr_name in os: self.assertRaises(AttributeError, getattr, os, attr_name) setattr(os, attr_name, value) value2 = randint(100,999) setattr(os, attr_name, value2) self.assertEqual(value2, getattr(os, attr_name)) def test_shell_escape(self): from ranger.ext.shell_escape import shell_escape, shell_quote self.assertEqual(r"'luigi'\''s pizza'", shell_quote("luigi's pizza")) self.assertEqual(r"luigi\'s\ pizza", shell_escape("luigi's pizza")) self.assertEqual(r"\$lol/foo\\xyz\|\>\<\]\[", shell_escape(r"$lol/foo\xyz|><][")) if __name__ == '__main__': unittest.main()