Beta Cheat Sheet ​ Guide to General Linux (Bash) and Slurm Commands Head File Print First 10 Lines of File ​ ​ ​ ​ ​ ​ ​

Total Page:16

File Type:pdf, Size:1020Kb

Beta Cheat Sheet ​ Guide to General Linux (Bash) and Slurm Commands Head File Print First 10 Lines of File ​ ​ ​ ​ ​ ​ ​ Viewing and editing text files cat file Print entire content of file ​ ​ less file Similar to more, but with additional features Beta Cheat Sheet ​ Guide to general Linux (Bash) and Slurm commands head file Print first 10 lines of file ​ ​ ​ ​ ​ ​ ​ tail file Print last 10 lines of file ​ ​ ​ Accessing Beta nano Simple, easy to use text editor Logging in from a terminal (Duo required) vim Minimalist yet powerful text editor ssh [email protected] ​ ​ emacs Extensible and customizable text editor Transferring files between Beta and your system scp source [email protected]:destination Advanced file management ​ ​ ​ scp -r source [email protected]:destination ​ ​ ​ chmod Change read/write/execute permissions scp [email protected]:source destination ​ ​ ​ ​ ​ which cmd List the full file path of a command ​ GUI Clients whereis cmd List all related file paths (binary, source, ​ PuTTY SSH client for Windows manual, etc.) of a command WinSCP SCP client for Windows du dir List size of directory and its subdirectories ​ FileZilla FTP client for Windows, Mac, and Linux find Find file in a directory Basic Linux file management Aliases and system variables man command Display the manual page for command ​ ​ alias Create shortcut to command pwd Print out the present working directory env Lists all environment variables ls List the files in the current directory export var=val Create environment variable $var with value ​ ​ ​ ​ ​ val ls -lh Show long, human-readable listing echo $var Print the value of variable $var ls dir List files inside directory dir ​ ​ ​ ​ .bashrc File that defines user aliases and variables rm file Delete file ​ ​ mkdir dir Create empty directory called dir ​ ​ Input and output redirection rmdir dir Remove empty directory dir ​ ​ $(command) Runs command first, then inserts output to the ​ ​ ​ ​ rm -r dir Remove directory dir and all contents rest of the overall command ​ ​ ​ ​ cd dir Change working directory to dir < Standard input redirection ​ ​ cd .. Change working directory to parent > Standard output redirection cd Change working directory to home 2> Standard error redirection ls List the files in the current directory 2>&1 Standard error to standard output redirection cp file1 file2 Copy file1 as file2 cmd1 | cmd2 Pipe the output of cmd1 to cmd2 ​ ​ ​ ​ ​ ​ ​ ​ ​ cp file1 dir Copy file1 into directory dir ​ ​ ​ ​ Filters mv file1 file2 Rename file1 as file2 ​ ​ ​ ​ wc Word, line, and character count mv file1 dir Move file1 into directory dir ​ ​ ​ ​ grep Find and print text matching a regular ~ (tilde) Home directory expression . (period) Current (working) directory sort Sort input .. (2 periods) Parent directory uniq Filter duplicate lines wget URL Download a file from Internet URL ​ ​ cut Cut specific fields or columns unzip file.zip Extract a ZIP file ​ ​ sed Stream editor for search and replace tar xzf file Extract a gzip compressed tarball (common ​ awk Extensive tool for complex filtering tasks extensions, .tar.gz and .tgz) ​ ​ ​ ​ arc-ts.umich.edu/beta Revised 11/2018 ​ Beta directories #SBATCH directives and #PBS counterparts /home/uniqname For use with running jobs, 80 GB quota #SBATCH #PBS Description ​ --job-name==name -N name Job name /tmp Small file reads/writes, deleted after 10 days ​ ​ --account=name -A name Account to charge (test /scratch Large file reads/writes, purged periodically ​ ​ ​ on Beta) /afs Only on login node, 10 GB backed up --partition=name -q name Submit to partition: ​ ​ standard, gpu. Lmod largemem, debug module keyword string Search for module names or --time=dd-hh:mm:ss -l walltime=time Time limit (walltime) ​ ​ ​ descriptions matching string --nodes=count -l nodes=count Number of nodes ​ ​ ​ module spider string Search for modules matching string --tasks-per-node=count -l ppn=count Processes per node ​ ​ ​ ​ module avail Show modules that can be loaded --cpus-per-task=count n/a CPU cores per process now ​ --mem=count -l mem=count RAM per node (e.g. module load module Load module in the environment ​ ​ ​ ​ ​ 1000M, 1G) module show module Show the help and variables set by --mem-per-cpu=count -l pmem=count RAM per CPU core ​ ​ ​ module --gres=gpu:count -l gpus=count GPUs per node ​ ​ module list List currently loaded modules --nodelist=nodes -l nodes=nodes Request nodes ​ ​ module unload module Remove module from environment ​ ​ ​ --array=arrayspec -t arrayspec Define job array ​ ​ module purge Remove all modules from --output=%x-%j.log -o filepath Standard output in run ​ ​ environment directory, formatted: module save collection Save all currently loaded modules to jobName-jobID.log ​ collection --error=%x-%j-E.log -e filepath Standard error log ​ ​ module savelist Return all saved module collections --export=ALL -V Copy environment module describe Return all modules in collection --export=var=val -v var=val Copy env variable ​ ​ ​ ​ ​ ​ ​ collection --depend=var:jobid -W Job dependency states ​ ​ ​ module restore Restore all modules from collection depend=var:jobid (var): after, afterok, ​ ​ ​ ​ ​ ​ collection afterany, afternotok --mail-user=email -M email Email for job alerts ​ ​ Slurm --mail-type=type -m type Email alert types: BEGIN, ​ ​ sbatch filename Submit a job script filename END, NONE, FAIL, ​ ​ REQUEUE squeue -u uniqname Show job queue for user uniqname --nodelist=nodes n/a Preferred nodes ​ ​ ​ scancel jobid Delete job jobid --exclude=nodes n/a Nodes to avoid ​ ​ ​ scontrol hold jobid Hold job jobid ​ ​ scontrol release jobid Release job jobid ARC-TS custom commands ​ ​ sinfo Cluster status my_usage Usage in CPU minutes srun Launch parallel job step my_accounts Show account membership and resource limits sacct Display job accounting information slurm-quota -s Show user disk quota and usage Slurm Environment Variables ARC-TS Documentation & Support SLURM_JOBID Job ID Beta User Guide: https://arc-ts.umich.edu/beta/user-guide ​ SLURM_SUBMIT_DIR Job submission directory Email [email protected] for further Beta support ​ ​ ​ SLURM_SUBMIT_HOST Host from which job was submitted Sensitive data should not be stored or processed on Beta ​ ​ SLURM_JOB_NODELIST Node names allocated to job SLURM_ARRAY_TASK_ID Task ID within job array SLURM_JOB_PARTITION Job partition arc-ts.umich.edu/beta Revised 11/2018 ​.
Recommended publications
  • Servo Motor EMMT-AS-60-L-LS-RM Part Number: 5242213
    Servo motor EMMT-AS-60-L-LS-RM Part number: 5242213 Data sheet Feature Value Short type code EMMT-AS Ambient temperature -15 °C ... 40 °C Note on ambient temperature Up to 80°C with derating of -1.5% per degree Celsius Max. installation height 4000 m Note on max. installation height As of 1,000 m: only with derating of -1.0% per 100 m Storage temperature -20 °C ... 70 °C Relative air humidity 0 - 90% Conforms to standard IEC 60034 Temperature class as per EN 60034-1 F Max. winding temperature 155 °C Rating class as per EN 60034-1 S1 Temperature monitoring Digital motor temperature transmission via EnDat® 2.2 Motor type to EN 60034-7 IM B5 IM V1 IM V3 Mounting position optional Degree of protection IP40 Note on degree of protection IP40 for motor shaft without rotary shaft seal IP65 for motor shaft with rotary shaft seal IP67 for motor housing including connection components Concentricity, coaxiality, axial runout to DIN SPEC 42955 N Balance quality G 2.5 Detent torque <1.0% of the peak torque Storage lifetime under nominal conditions 20000 h Interface code, motor out 60P Electrical connection 1, connection type Hybrid plug Electrical connection 1, connector system M23x1 Electrical connection 1, number of connections/cores 15 Electrical connection 1, connection pattern 00995913 Pollution degree 2 Note on materials RoHS-compliant Corrosion resistance class CRC 0 - No corrosion stress LABS-Conformity VDMA24364 zone III Vibration resistance Transport application test with severity level 2 to FN 942017-4 and EN 60068-2-6 10/2/21 - Subject to change - Festo AG & Co.
    [Show full text]
  • Unix Programming
    P.G DEPARTMENT OF COMPUTER APPLICATIONS 18PMC532 UNIX PROGRAMMING K1 QUESTIONS WITH ANSWERS UNIT- 1 1) Define unix. Unix was originally written in assembler, but it was rewritten in 1973 in c, which was principally authored by Dennis Ritchie ( c is based on the b language developed by kenThompson. 2) Discuss the Communication. Excellent communication with users, network User can easily exchange mail,dta,pgms in the network 3) Discuss Security Login Names Passwords Access Rights File Level (R W X) File Encryption 4) Define PORTABILITY UNIX run on any type of Hardware and configuration Flexibility credits goes to Dennis Ritchie( c pgms) Ported with IBM PC to GRAY 2 5) Define OPEN SYSTEM Everything in unix is treated as file(source pgm, Floppy disk,printer, terminal etc., Modification of the system is easy because the Source code is always available 6) The file system breaks the disk in to four segements The boot block The super block The Inode table Data block 7) Command used to find out the block size on your file $cmchk BSIZE=1024 8) Define Boot Block Generally the first block number 0 is called the BOOT BLOCK. It consists of Hardware specific boot program that loads the file known as kernal of the system. 9) Define super block It describes the state of the file system ie how large it is and how many maximum Files can it accommodate This is the 2nd block and is number 1 used to control the allocation of disk blocks 10) Define inode table The third segment includes block number 2 to n of the file system is called Inode Table.
    [Show full text]
  • Useful Commands in Linux and Other Tools for Quality Control
    Useful commands in Linux and other tools for quality control Ignacio Aguilar INIA Uruguay 05-2018 Unix Basic Commands pwd show working directory ls list files in working directory ll as before but with more information mkdir d make a directory d cd d change to directory d Copy and moving commands To copy file cp /home/user/is . To copy file directory cp –r /home/folder . to move file aa into bb in folder test mv aa ./test/bb To delete rm yy delete the file yy rm –r xx delete the folder xx Redirections & pipe Redirection useful to read/write from file !! aa < bb program aa reads from file bb blupf90 < in aa > bb program aa write in file bb blupf90 < in > log Redirections & pipe “|” similar to redirection but instead to write to a file, passes content as input to other command tee copy standard input to standard output and save in a file echo copy stream to standard output Example: program blupf90 reads name of parameter file and writes output in terminal and in file log echo par.b90 | blupf90 | tee blup.log Other popular commands head file print first 10 lines list file page-by-page tail file print last 10 lines less file list file line-by-line or page-by-page wc –l file count lines grep text file find lines that contains text cat file1 fiel2 concatenate files sort sort file cut cuts specific columns join join lines of two files on specific columns paste paste lines of two file expand replace TAB with spaces uniq retain unique lines on a sorted file head / tail $ head pedigree.txt 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 6 0 0 7 0 0 8 0 0 9 0 0 10
    [Show full text]
  • Configuring Your Login Session
    SSCC Pub.# 7-9 Last revised: 5/18/99 Configuring Your Login Session When you log into UNIX, you are running a program called a shell. The shell is the program that provides you with the prompt and that submits to the computer commands that you type on the command line. This shell is highly configurable. It has already been partially configured for you, but it is possible to change the way that the shell runs. Many shells run under UNIX. The shell that SSCC users use by default is called the tcsh, pronounced "Tee-Cee-shell", or more simply, the C shell. The C shell can be configured using three files called .login, .cshrc, and .logout, which reside in your home directory. Also, many other programs can be configured using the C shell's configuration files. Below are sample configuration files for the C shell and explanations of the commands contained within these files. As you find commands that you would like to include in your configuration files, use an editor (such as EMACS or nuTPU) to add the lines to your own configuration files. Since the first character of configuration files is a dot ("."), the files are called "dot files". They are also called "hidden files" because you cannot see them when you type the ls command. They can only be listed when using the -a option with the ls command. Other commands may have their own setup files. These files almost always begin with a dot and often end with the letters "rc", which stands for "run commands".
    [Show full text]
  • Gnu Coreutils Core GNU Utilities for Version 5.93, 2 November 2005
    gnu Coreutils Core GNU utilities for version 5.93, 2 November 2005 David MacKenzie et al. This manual documents version 5.93 of the gnu core utilities, including the standard pro- grams for text and file manipulation. Copyright c 1994, 1995, 1996, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License”. Chapter 1: Introduction 1 1 Introduction This manual is a work in progress: many sections make no attempt to explain basic concepts in a way suitable for novices. Thus, if you are interested, please get involved in improving this manual. The entire gnu community will benefit. The gnu utilities documented here are mostly compatible with the POSIX standard. Please report bugs to [email protected]. Remember to include the version number, machine architecture, input files, and any other information needed to reproduce the bug: your input, what you expected, what you got, and why it is wrong. Diffs are welcome, but please include a description of the problem as well, since this is sometimes difficult to infer. See section “Bugs” in Using and Porting GNU CC. This manual was originally derived from the Unix man pages in the distributions, which were written by David MacKenzie and updated by Jim Meyering.
    [Show full text]
  • Gnu Coreutils Core GNU Utilities for Version 6.9, 22 March 2007
    gnu Coreutils Core GNU utilities for version 6.9, 22 March 2007 David MacKenzie et al. This manual documents version 6.9 of the gnu core utilities, including the standard pro- grams for text and file manipulation. Copyright c 1994, 1995, 1996, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled \GNU Free Documentation License". Chapter 1: Introduction 1 1 Introduction This manual is a work in progress: many sections make no attempt to explain basic concepts in a way suitable for novices. Thus, if you are interested, please get involved in improving this manual. The entire gnu community will benefit. The gnu utilities documented here are mostly compatible with the POSIX standard. Please report bugs to [email protected]. Remember to include the version number, machine architecture, input files, and any other information needed to reproduce the bug: your input, what you expected, what you got, and why it is wrong. Diffs are welcome, but please include a description of the problem as well, since this is sometimes difficult to infer. See section \Bugs" in Using and Porting GNU CC. This manual was originally derived from the Unix man pages in the distributions, which were written by David MacKenzie and updated by Jim Meyering.
    [Show full text]
  • The Unix Shell
    The Unix Shell Creating and Deleting Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http://software-carpentry.org/license.html for more information. Creating and Deleting Introduction shell Creating and Deleting Introduction shell pwd print working directory cd change working directory ls listing . current directory .. parent directory Creating and Deleting Introduction shell pwd print working directory cd change working directory ls listing . current directory .. parent directory But how do we create things in the first place? Creating and Deleting Introduction $$$ pwd /users/vlad $$$ Creating and Deleting Introduction $$$ pwd /users/vlad $$$ ls -F bin/ data/ mail/ music/ notes.txt papers/ pizza.cfg solar/ solar.pdf swc/ $$$ Creating and Deleting Introduction $$$ pwd /users/vlad $$$ ls -F bin/ data/ mail/ music/ notes.txt papers/ pizza.cfg solar/ solar.pdf swc/ $$$ mkdir tmp Creating and Deleting Introduction $$$ pwd /users/vlad $$$ ls -F bin/ data/ mail/ music/ notes.txt papers/ pizza.cfg solar/ solar.pdf swc/ $$$ mkdir tmp make directory Creating and Deleting Introduction $$$ pwd /users/vlad $$$ ls -F bin/ data/ mail/ music/ notes.txt papers/ pizza.cfg solar/ solar.pdf swc/ $$$ mkdir tmp make directory a relative path, so the new directory is made below the current one Creating and Deleting Introduction $$$ pwd /users/vlad $$$ ls -F bin/ data/ mail/ music/ notes.txt papers/ pizza.cfg solar/ solar.pdf swc/ $$$ mkdir tmp $$$ ls –F bin/ data/ mail/ music/ notes.txt papers/
    [Show full text]
  • Controlling Gpios on Rpi Using Ping Command
    Ver. 3 Department of Engineering Science Lab – Controlling PI Controlling Raspberry Pi 3 Model B Using PING Commands A. Objectives 1. An introduction to Shell and shell scripting 2. Starting a program at the Auto-start 3. Knowing your distro version 4. Understanding tcpdump command 5. Introducing tshark utility 6. Interfacing RPI to an LCD 7. Understanding PING command B. Time of Completion This laboratory activity is designed for students with some knowledge of Raspberry Pi and it is estimated to take about 5-6 hours to complete. C. Requirements 1. A Raspberry Pi 3 Model 3 2. 32 GByte MicroSD card à Give your MicroSD card to the lab instructor for a copy of Ubuntu. 3. USB adaptor to power up the Pi 4. Read Lab 2 – Interfacing with Pi carefully. D. Pre-Lab Lear about ping and ICMP protocols. F. Farahmand 9/30/2019 1 Ver. 3 Department of Engineering Science Lab – Controlling PI E. Lab This lab has two separate parts. Please make sure you read each part carefully. Answer all the questions. Submit your codes via Canvas. 1) Part I - Showing IP Addresses on the LCD In this section we learn how to interface an LCD to the Pi and run a program automatically at the boot up. a) Interfacing your RPI to an LCD In this section you need to interface your 16×2 LCD with Raspberry Pi using 4-bit mode. Please note that you can choose any type of LCD and interface it to your PI, including OLED. Below is the wiring example showing how to interface a 16×2 LCD to RPI.
    [Show full text]
  • Learning the Bash Shell, 3Rd Edition
    1 Learning the bash Shell, 3rd Edition Table of Contents 2 Preface bash Versions Summary of bash Features Intended Audience Code Examples Chapter Summary Conventions Used in This Handbook We'd Like to Hear from You Using Code Examples Safari Enabled Acknowledgments for the First Edition Acknowledgments for the Second Edition Acknowledgments for the Third Edition 1. bash Basics 3 1.1. What Is a Shell? 1.2. Scope of This Book 1.3. History of UNIX Shells 1.3.1. The Bourne Again Shell 1.3.2. Features of bash 1.4. Getting bash 1.5. Interactive Shell Use 1.5.1. Commands, Arguments, and Options 1.6. Files 1.6.1. Directories 1.6.2. Filenames, Wildcards, and Pathname Expansion 1.6.3. Brace Expansion 1.7. Input and Output 1.7.1. Standard I/O 1.7.2. I/O Redirection 1.7.3. Pipelines 1.8. Background Jobs 1.8.1. Background I/O 1.8.2. Background Jobs and Priorities 1.9. Special Characters and Quoting 1.9.1. Quoting 1.9.2. Backslash-Escaping 1.9.3. Quoting Quotation Marks 1.9.4. Continuing Lines 1.9.5. Control Keys 4 1.10. Help 2. Command-Line Editing 2.1. Enabling Command-Line Editing 2.2. The History List 2.3. emacs Editing Mode 2.3.1. Basic Commands 2.3.2. Word Commands 2.3.3. Line Commands 2.3.4. Moving Around in the History List 2.3.5. Textual Completion 2.3.6. Miscellaneous Commands 2.4. vi Editing Mode 2.4.1.
    [Show full text]
  • Linux Command Line Basics III: Piping Commands for Text Processing Yanbin Yin
    Linux command line basics III: piping commands for text processing Yanbin Yin 1 http://korflab.ucdavis.edu/Unix_and_Perl/unix_and_perl_v3.1.1.pdf 2 The beauty of Unix for bioinformatics sort, cut, uniq, join, paste, sed, grep, awk, wc, diff, comm, cat All types of bioinformatics sequence analyses are essentially text processing. Unix Shell has the above commands that are very useful for processing texts and also allows the output from one command to be passed to another command as input using pipes (“|”). This makes the processing of files using Shell very convenient and very powerful: you do not need to write output to intermediate files or load all data into the memory. For example, combining different Unix commands for text processing is like passing an item through a manufacturing pipeline when you only care about the final product | Hold shift and press 4 cut: extract columns from a file less file | cut –f1 # cut the first column (default delimiter tabular key) less file | cut –f1 –d ‘ ‘ # specify delimiter to be regular space less file | cut –f1-3 # cut 1 to 3 col less file | cut –f1,7,10 > file.1-7-10 # cut 1, 7, 10 col and save as a new file sort: sort rows in a file, default on first col in alphabetical order (0-9 then a-z, 10 comes before 9) less file | sort –k 2 # sort on 2 col less file | sort –k 2,2n # sort in numeric order less file | sort –k 2,2nr # sort in reverse numeric order uniq: report file without repeated occurrences less file | cut –f2 | sort | uniq # unique text less file | cut –f2 | sort | uniq –c # count number
    [Show full text]
  • GPL-3-Free Replacements of Coreutils 1 Contents
    GPL-3-free replacements of coreutils 1 Contents 2 Coreutils GPLv2 2 3 Alternatives 3 4 uutils-coreutils ............................... 3 5 BSDutils ................................... 4 6 Busybox ................................... 5 7 Nbase .................................... 5 8 FreeBSD ................................... 6 9 Sbase and Ubase .............................. 6 10 Heirloom .................................. 7 11 Replacement: uutils-coreutils 7 12 Testing 9 13 Initial test and results 9 14 Migration 10 15 Due to the nature of Apertis and its target markets there are licensing terms that 1 16 are problematic and that forces the project to look for alternatives packages. 17 The coreutils package is good example of this situation as its license changed 18 to GPLv3 and as result Apertis cannot provide it in the target repositories and 19 images. The current solution of shipping an old version which precedes the 20 license change is not tenable in the long term, as there are no upgrades with 21 bugfixes or new features for such important package. 22 This situation leads to the search for a drop-in replacement of coreutils, which 23 need to provide compatibility with the standard GNU coreutils packages. The 24 reason behind is that many other packages rely on the tools it provides, and 25 failing to do that would lead to hard to debug failures and many custom patches 26 spread all over the archive. In this regard the strict requirement is to support 27 the features needed to boot a target image with ideally no changes in other 28 components. The features currently available in our coreutils-gplv2 fork are a 29 good approximation. 30 Besides these specific requirements, the are general ones common to any Open 31 Source Project, such as maturity and reliability.
    [Show full text]
  • GNU Coreutils Core GNU Utilities for Version 9.0, 20 September 2021
    GNU Coreutils Core GNU utilities for version 9.0, 20 September 2021 David MacKenzie et al. This manual documents version 9.0 of the GNU core utilities, including the standard pro- grams for text and file manipulation. Copyright c 1994{2021 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled \GNU Free Documentation License". i Short Contents 1 Introduction :::::::::::::::::::::::::::::::::::::::::: 1 2 Common options :::::::::::::::::::::::::::::::::::::: 2 3 Output of entire files :::::::::::::::::::::::::::::::::: 12 4 Formatting file contents ::::::::::::::::::::::::::::::: 22 5 Output of parts of files :::::::::::::::::::::::::::::::: 29 6 Summarizing files :::::::::::::::::::::::::::::::::::: 41 7 Operating on sorted files ::::::::::::::::::::::::::::::: 47 8 Operating on fields ::::::::::::::::::::::::::::::::::: 70 9 Operating on characters ::::::::::::::::::::::::::::::: 80 10 Directory listing:::::::::::::::::::::::::::::::::::::: 87 11 Basic operations::::::::::::::::::::::::::::::::::::: 102 12 Special file types :::::::::::::::::::::::::::::::::::: 125 13 Changing file attributes::::::::::::::::::::::::::::::: 135 14 File space usage ::::::::::::::::::::::::::::::::::::: 143 15 Printing text :::::::::::::::::::::::::::::::::::::::
    [Show full text]