Ownership-Based Alias Management

Total Page:16

File Type:pdf, Size:1020Kb

Ownership-Based Alias Management DSV Report series No. - ISBN --- ISSN - ISRN SU-KTH/DSV/R–/–SE Abstract Object-oriented programming relies on sharing and the mutable states of objects for common data structures, patterns and programming idioms. Sharing and mutable state is a powerful but dangerous combination. Uncontrolled aliasing risks causing representation exposure, where an object’s state is exposed and modifiable out of the control of its conceptually owning object. This breaks encapsulation, and hence, in extension, abstraction. Contemporary object-oriented programming languages’ support for alias encap- sulation is mediocre and easily circumvented. To this end, several proposals have been put forward that strengthen encapsulation to enable construction of more reliable sys- tems and formally reasoning about properties of programs. These systems are vastly superior to the constructs found in for example C++, Java or C#, but have yet to gain acceptance outside the research community. In this thesis, we present three constructs for alias management on top of a deep ownership types system in the context of the Joline programming language. Our con- structs are fully statically checkable and impose little run-time overhead. We show the formal semantics and soundness proof for our constructs as well as their formal and informal aliasing properties. We show applications and extensions and perform a practical evaluation of our system with our implemented Joline compiler. The evalua- tion suggests that our constructs are compatible with real-world programming, makes use of some of our own proposed patterns, and encourages further practical studies of programming with ownership-based constructs for alias management. ii Contents Introduction . Living with Aliasing ............................ .. Alias Encapsulation and Pointer Restrictions .......... . Contributions of This Dissertation .................... . Outline .................................. Background and Related Work . Aliasing .................................. .. Different Types of Aliases .................... .. Representation Exposure ..................... . Encapsulation ............................... .. Name-based Encapsulation and Selective Export ........ . Related Work on Encapsulation ..................... .. Unique Pointers ......................... .. Systems offering Strong Encapsulation ............. .. Systems offering Lightweight Encapsulation .......... .. Ownership-Based Systems .................... . Related Alias Management Techniques .................. .. Effects and Read-Only ...................... .. Separation Logic and Representation Independence ...... . Concluding Remarks ........................... The Joline Programming Language . Ownership Types in Joline ........................ iii CONTENTS .. Implementing Deep Ownership ................. .. Encapsulation Example ..................... . Joline, Statically .............................. .. Joline’s Syntax .......................... .. Joline’s Type System ....................... .. Well-formedness Rules ...................... . Joline, Dynamically ............................ .. Syntax definitions ........................ .. Store Type ............................ .. Configurations .......................... .. Operational Semantics for Joline ................ . Soundness of The Joline Language .................... .. Helper Functions ......................... .. Lemmas ............................. .. Subject Reduction ........................ .. Canonical Forms ......................... .. Progress ............................. . Owners-as-Dominators .......................... .. Helper Functions ......................... .. Owners-as-Dominators ..................... . Concluding Remarks ........................... Owner-Polymorphic Methods . Ownership and Dynamic Aliasing .................... .. Ownership and Argument-Polymorphic Methods ....... .. Borrowing and the Preservation of Separation ......... .. Problem Analysis ......................... . Owner-Polymorphic Methods ...................... .. Informal Syntax and Semantics ................. .. Solutions to the Problems in Sections .. and .. ...... .. Borrowing and Preservation of Separation ........... .. The “Hide Owner” Pattern ................... .. Discussion ............................ . Formalising Owner-Polymorphic Methods ................ iv CONTENTS .. Static Semantics ......................... .. Dynamic Semantics ....................... . Concluding Remarks ........................... Scoped Regions . Stack-Based Confinement ........................ .. Stack-Based Confinement in Joline ............... .. Value Objects ........................... . Scoped Regions .............................. . Formalising Scoped Regions ....................... .. Static Semantics ......................... .. Dynamic Semantics ....................... .. Related Work ........................... . Concluding Remarks ........................... External Uniqueness . Contribution ............................... . Recapping Uniqueness .......................... .. Uniqueness and Object-Orientation ............... .. Problems with Class-Level and Method-Level annotations .. .. Uniqueness and a Problem with Abstraction .......... .. Uniqueness and Aggregates ................... . External Uniqueness ........................... .. Unique Owners ......................... .. Operations on Externally Unique Pointers ........... .. Creating Unique Objects ..................... . Discussion ................................ .. Aggregate Uniqueness and Dominating Edges ......... .. Back-pointers and Effective Uniqueness ............. .. Overcoming the Abstraction Problem .............. . Formalising External Uniqueness .................... .. Static Semantics ......................... .. Dynamic Semantics ....................... .. Lemmas for Unique and Borrowing Pointers .......... .. Subject Reduction Proof ..................... v CONTENTS . External-Uniqueness-as-Dominating-Edges ............... . Concluding Remarks ........................... Discussion . Generational Ownership ......................... .. Stack Frames are Generations .................. .. Ownership is a dag ........................ . Orthogonality ............................... Applications . Applications for External Uniqueness .................. .. Transfer of Ownership ...................... .. Merging Representations ..................... .. Simulating Borrowing ...................... .. Movable Aliased Object Pattern ................. .. The Initialisation Problem .................... Extensions . Unique Borrowing ............................ .. Towards Unique Borrowing ................... .. Borrowing Blocks that Preserve Uniqueness ........... . Existential Downcasting ......................... .. The Importance of Downcasting ................ .. Existential Owners ........................ . Iteration Revisited ............................ Practical Evaluation . The Joline Compiler ........................... .. Class Variables .......................... .. String Literals .......................... .. Studies of Aliasing and Programming with Ownership ..... . Case Studies ................................ .. Case : Informal Ownership ................... .. Case : A Library System ..................... .. Case : SuDoku .......................... vi CONTENTS .. Case : Linked List ........................ . Results ................................... .. Design Delicacy ......................... .. The Importance of Generics and Downcasts .......... .. Id-aliases ............................. .. Unique Listener Proxy Pattern .................. .. Syntactic Overhead ........................ .. Concluding Remarks ....................... Conclusions . Critique .................................. .. The Joline Language ....................... .. Practical Evaluation ....................... . Summary of Conclusions ......................... . Future Work ............................... vii CONTENTS viii List of Figures . Alias types ................................. . Representation Exposure ......................... . Lack of expressiveness in contemporary programming languages .... . Selective Export in Eiffel ......................... . Programming with Unique Pointers ................... . Programming with Borrowing ...................... . Deep ownership .............................. . A linked list and links using ownership types .............. . Object graph for linked list example ................... . Syntax for stacks, heaps and values. ................... . Store type ................................. . Object graph and corresponding store-type. ............... . Possible paths. .............................. . Cannot express that arg should be borrowed .............. . Owner-Polymorphic Factory Method .................. . Scoped Region and owner-polymorphic methods ............ . Destructive reads and manual reinstatement ............... . Alias burying to avoid destructive reads ................. . Class-level annotations .......................... . Using method-level annotations ..................... . Subclassing with class-level annotations ................. ix LIST OF FIGURES . Sharing precludes thread-localness .................... . Moving causing slicing .......................... . External Uniqueness ..........................
Recommended publications
  • Autocad Command Aliases
    AutoCAD and Its Applications Advanced Appendix D AutoCAD Command Aliases Command Alias 3DALIGN 3AL 3DFACE 3F 3DMOVE 3M 3DORBIT 3DO, ORBIT, 3DVIEW, ISOMETRICVIEW 3DPOLY 3P 3DPRINT 3DP, 3DPLOT, RAPIDPROTOTYPE 3DROTATE 3R 3DSCALE 3S 3DWALK 3DNAVIGATE, 3DW ACTRECORD ARR ACTSTOP ARS -ACTSTOP -ARS ACTUSERINPUT ARU ACTUSERMESSAGE ARM -ACTUSERMESSAGE -ARM ADCENTER ADC, DC, DCENTER ALIGN AL ALLPLAY APLAY ANALYSISCURVATURE CURVATUREANALYSIS ANALYSISZEBRA ZEBRA APPLOAD AP ARC A AREA AA ARRAY AR -ARRAY -AR ATTDEF ATT -ATTDEF -ATT Copyright Goodheart-Willcox Co., Inc. Appendix D — AutoCAD Command Aliases 1 May not be reproduced or posted to a publicly accessible website. Command Alias ATTEDIT ATE -ATTEDIT -ATE, ATTE ATTIPEDIT ATI BACTION AC BCLOSE BC BCPARAMETER CPARAM BEDIT BE BLOCK B -BLOCK -B BOUNDARY BO -BOUNDARY -BO BPARAMETER PARAM BREAK BR BSAVE BS BVSTATE BVS CAMERA CAM CHAMFER CHA CHANGE -CH CHECKSTANDARDS CHK CIRCLE C COLOR COL, COLOUR COMMANDLINE CLI CONSTRAINTBAR CBAR CONSTRAINTSETTINGS CSETTINGS COPY CO, CP CTABLESTYLE CT CVADD INSERTCONTROLPOINT CVHIDE POINTOFF CVREBUILD REBUILD CVREMOVE REMOVECONTROLPOINT CVSHOW POINTON Copyright Goodheart-Willcox Co., Inc. Appendix D — AutoCAD Command Aliases 2 May not be reproduced or posted to a publicly accessible website. Command Alias CYLINDER CYL DATAEXTRACTION DX DATALINK DL DATALINKUPDATE DLU DBCONNECT DBC, DATABASE, DATASOURCE DDGRIPS GR DELCONSTRAINT DELCON DIMALIGNED DAL, DIMALI DIMANGULAR DAN, DIMANG DIMARC DAR DIMBASELINE DBA, DIMBASE DIMCENTER DCE DIMCONSTRAINT DCON DIMCONTINUE DCO, DIMCONT DIMDIAMETER DDI, DIMDIA DIMDISASSOCIATE DDA DIMEDIT DED, DIMED DIMJOGGED DJO, JOG DIMJOGLINE DJL DIMLINEAR DIMLIN, DLI DIMORDINATE DOR, DIMORD DIMOVERRIDE DOV, DIMOVER DIMRADIUS DIMRAD, DRA DIMREASSOCIATE DRE DIMSTYLE D, DIMSTY, DST DIMTEDIT DIMTED DIST DI, LENGTH DIVIDE DIV DONUT DO DRAWINGRECOVERY DRM DRAWORDER DR Copyright Goodheart-Willcox Co., Inc.
    [Show full text]
  • CS101 Lecture 9
    How do you copy/move/rename/remove files? How do you create a directory ? What is redirection and piping? Readings: See CCSO’s Unix pages and 9-2 cp option file1 file2 First Version cp file1 file2 file3 … dirname Second Version This is one version of the cp command. file2 is created and the contents of file1 are copied into file2. If file2 already exits, it This version copies the files file1, file2, file3,… into the directory will be replaced with a new one. dirname. where option is -i Protects you from overwriting an existing file by asking you for a yes or no before it copies a file with an existing name. -r Can be used to copy directories and all their contents into a new directory 9-3 9-4 cs101 jsmith cs101 jsmith pwd data data mp1 pwd mp1 {FILES: mp1_data.m, mp1.m } {FILES: mp1_data.m, mp1.m } Copy the file named mp1_data.m from the cs101/data Copy the file named mp1_data.m from the cs101/data directory into the pwd. directory into the mp1 directory. > cp ~cs101/data/mp1_data.m . > cp ~cs101/data/mp1_data.m mp1 The (.) dot means “here”, that is, your pwd. 9-5 The (.) dot means “here”, that is, your pwd. 9-6 Example: To create a new directory named “temp” and to copy mv option file1 file2 First Version the contents of an existing directory named mp1 into temp, This is one version of the mv command. file1 is renamed file2. where option is -i Protects you from overwriting an existing file by asking you > cp -r mp1 temp for a yes or no before it copies a file with an existing name.
    [Show full text]
  • Functional Pls Introduction to Haskell
    Thoughts on Assignment 4 PL Category: Functional PLs Introduction to Haskell CS F331 Programming Languages CSCE A331 Programming Language Concepts Lecture Slides Friday, February 22, 2019 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks [email protected] © 2017–2019 Glenn G. Chappell Thoughts on Assignment 4 Introduction In Assignment 4 you will be writing a Recursive-Descent parser, in the form of Lua module parseit. It will be similar to module rdparser4 (written in class), but it will involve a different grammar & AST specification. In Assignment 6 you will write an interpreter that takes, as input, an AST of the form your parser returns. The result will be an implementation of a programming language called Jerboa. Module parseit is to parse a complete programming language, while module rdparser4 only parses expressions. Nonetheless, Jerboa has expressions, and they work in much the same way as those handled by rdparser4. I suggest using file rdparser4.lua as a starting point for Assignment 4. 22 Feb 2019 CS F331 / CSCE A331 Spring 2019 2 Thoughts on Assignment 4 The Goal Here is a sample Jerboa program, again. # Function fibo # Main Program # Given k, return F(k), where # F(n) = nth Fibonacci no. # Get number of Fibos to output def fibo() write("How many Fibos to print? ") a = 0 # Consecutive Fibos n = readnum() b = 1 write(cr) i = 0 # Loop counter while i < k # Print requested number of Fibos c = a+b # Advance j = 0 # Loop counter a = b while j < n b = c k = j i = i+1 # ++counter write("F(",j,")
    [Show full text]
  • Shell Variables
    Shell Using the command line Orna Agmon ladypine at vipe.technion.ac.il Haifux Shell – p. 1/55 TOC Various shells Customizing the shell getting help and information Combining simple and useful commands output redirection lists of commands job control environment variables Remote shell textual editors textual clients references Shell – p. 2/55 What is the shell? The shell is the wrapper around the system: a communication means between the user and the system The shell is the manner in which the user can interact with the system through the terminal. The shell is also a script interpreter. The simplest script is a bunch of shell commands. Shell scripts are used in order to boot the system. The user can also write and execute shell scripts. Shell – p. 3/55 Shell - which shell? There are several kinds of shells. For example, bash (Bourne Again Shell), csh, tcsh, zsh, ksh (Korn Shell). The most important shell is bash, since it is available on almost every free Unix system. The Linux system scripts use bash. The default shell for the user is set in the /etc/passwd file. Here is a line out of this file for example: dana:x:500:500:Dana,,,:/home/dana:/bin/bash This line means that user dana uses bash (located on the system at /bin/bash) as her default shell. Shell – p. 4/55 Starting to work in another shell If Dana wishes to temporarily use another shell, she can simply call this shell from the command line: [dana@granada ˜]$ bash dana@granada:˜$ #In bash now dana@granada:˜$ exit [dana@granada ˜]$ bash dana@granada:˜$ #In bash now, going to hit ctrl D dana@granada:˜$ exit [dana@granada ˜]$ #In original shell now Shell – p.
    [Show full text]
  • Comparison of Programming Languages
    ECE326 PROGRAMMING LANGUAGES Lecture 1 : Course Introduction Kuei (Jack) Sun ECE University of Toronto Fall 2019 Course Instructor Kuei (Jack) Sun Contact Information Use Piazza Send me (Kuei Sun) a private post Not “Instructors”, otherwise the TAs will also see it http://piazza.com/utoronto.ca/fall2019/ece326 Sign up to the course to get access Office: PRA371 (office hours upon request only) Research Interests Systems programming, software optimization, etc. 2 Course Information Course Website http://fs.csl.toronto.edu/~sunk/ece326.html Lecture notes, tutorial slides, assignment handouts Quercus Grade posting, course evaluation, lab group sign-up! Piazza Course announcement, course discussion Assignment discussion Lab TAs will read and answer relevant posts periodically 3 Course Information No required textbook Exam questions will come from lectures, tutorials, and assignments See course website for suggested textbooks Lab sessions Get face-to-face help from a TA with your assignments Tutorials Cover supplementary materials not in lectures Go through sample problems that may appear on exams 4 Volunteer Notetakers Help your peers Improve your own notetaking skills Receive Certificate of Recognition Information: https://www.studentlife.utoronto.ca/as/note-taking Registration: https://clockwork.studentlife.utoronto.ca/custom/misc/home.aspx Notetakers needed for lectures and tutorials 5 Background Programming Languages A formal language consisting of a instructions to implement algorithms and perform
    [Show full text]
  • Linux Cheat Sheet
    1 of 4 ########################################### # 1.1. File Commands. # Name: Bash CheatSheet # # # # A little overlook of the Bash basics # ls # lists your files # # ls -l # lists your files in 'long format' # Usage: A Helpful Guide # ls -a # lists all files, including hidden files # # ln -s <filename> <link> # creates symbolic link to file # Author: J. Le Coupanec # touch <filename> # creates or updates your file # Date: 2014/11/04 # cat > <filename> # places standard input into file # Edited: 2015/8/18 – Michael Stobb # more <filename> # shows the first part of a file (q to quit) ########################################### head <filename> # outputs the first 10 lines of file tail <filename> # outputs the last 10 lines of file (-f too) # 0. Shortcuts. emacs <filename> # lets you create and edit a file mv <filename1> <filename2> # moves a file cp <filename1> <filename2> # copies a file CTRL+A # move to beginning of line rm <filename> # removes a file CTRL+B # moves backward one character diff <filename1> <filename2> # compares files, and shows where differ CTRL+C # halts the current command wc <filename> # tells you how many lines, words there are CTRL+D # deletes one character backward or logs out of current session chmod -options <filename> # lets you change the permissions on files CTRL+E # moves to end of line gzip <filename> # compresses files CTRL+F # moves forward one character gunzip <filename> # uncompresses files compressed by gzip CTRL+G # aborts the current editing command and ring the terminal bell gzcat <filename> #
    [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]
  • Configuration and Administration of Networking for Fedora 23
    Fedora 23 Networking Guide Configuration and Administration of Networking for Fedora 23 Stephen Wadeley Networking Guide Draft Fedora 23 Networking Guide Configuration and Administration of Networking for Fedora 23 Edition 1.0 Author Stephen Wadeley [email protected] Copyright © 2015 Red Hat, Inc. and others. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. The original authors of this document, and Red Hat, designate the Fedora Project as the "Attribution Party" for purposes of CC-BY-SA. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. For guidelines on the permitted uses of the Fedora trademarks, refer to https://fedoraproject.org/wiki/ Legal:Trademark_guidelines. Linux® is the registered trademark of Linus Torvalds in the United States and other countries. Java® is a registered trademark of Oracle and/or its affiliates. XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
    [Show full text]
  • System Analysis and Tuning Guide System Analysis and Tuning Guide SUSE Linux Enterprise Server 15 SP1
    SUSE Linux Enterprise Server 15 SP1 System Analysis and Tuning Guide System Analysis and Tuning Guide SUSE Linux Enterprise Server 15 SP1 An administrator's guide for problem detection, resolution and optimization. Find how to inspect and optimize your system by means of monitoring tools and how to eciently manage resources. Also contains an overview of common problems and solutions and of additional help and documentation resources. Publication Date: September 24, 2021 SUSE LLC 1800 South Novell Place Provo, UT 84606 USA https://documentation.suse.com Copyright © 2006– 2021 SUSE LLC and contributors. All rights reserved. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or (at your option) version 1.3; with the Invariant Section being this copyright notice and license. A copy of the license version 1.2 is included in the section entitled “GNU Free Documentation License”. For SUSE trademarks, see https://www.suse.com/company/legal/ . All other third-party trademarks are the property of their respective owners. Trademark symbols (®, ™ etc.) denote trademarks of SUSE and its aliates. Asterisks (*) denote third-party trademarks. All information found in this book has been compiled with utmost attention to detail. However, this does not guarantee complete accuracy. Neither SUSE LLC, its aliates, the authors nor the translators shall be held liable for possible errors or the consequences thereof. Contents About This Guide xii 1 Available Documentation xiii
    [Show full text]
  • Analytická Řešení Vybraných Typů Diferenciálních Rovnic
    VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA STROJNÍHO INŽENÝRSTVÍ FACULTY OF MECHANICAL ENGINEERING ÚSTAV AUTOMATIZACE A INFORMATIKY INSTITUTE OF AUTOMATION AND COMPUTER SCIENCE ANALYTICKÁ ŘEŠENÍ VYBRANÝCH TYPŮ DIFERENCIÁLNÍCH ROVNIC: SOFTWAROVÁ PODPORA PRO STUDENTY TECHNICKÝCH OBORŮ ANALYTICAL SOLUTIONS FOR SELECTED TYPES OF DIFFERENTIAL EQUATIONS: SOFTWARE SUPPORT TOOL FOR STUDENTS IN TECHNICAL FIELDS BAKALÁŘSKÁ PRÁCE BACHELOR'S THESIS AUTOR PRÁCE Daniel Neuwirth, DiS. AUTHOR VEDOUCÍ PRÁCE Ing. Jan Roupec, Ph.D. SUPERVISOR BRNO 2017 ABSTRAKT Cílem této práce bylo vytvořit počítačovou aplikaci s jednoduchým uživatelským rozhraním, určenou pro řešení vybraných typů diferenciálních rovnic, jejíž výstup není omezen na prosté zobrazení konečného výsledku, nýbrž zahrnuje i kompletní postup výpočtu, a díky tomu může sloužit jako podpůrná výuková pomůcka pro studenty vysokých škol. ABSTRACT The aim of this thesis was to create a computer application with a simple user interface for solving selected types of differential equations, whose output is not limited to display a final result only, but also includes a complete calculation procedure and therefore can serve as a supportive teaching aid for university students. KLÍČOVÁ SLOVA diferenciální rovnice, počítačový algebraický systém, programovací jazyk C++ KEYWORDS differential equation, computer algebra system, C++ programming language BIBLIOGRAFICKÁ CITACE NEUWIRTH, Daniel. Analytická řešení vybraných typů diferenciálních rovnic: softwarová podpora pro studenty technických oborů. Brno: Vysoké učení technické v Brně, Fakulta strojního inženýrství, 2017. 77 s. Vedoucí bakalářské práce Ing. Jan Roupec, Ph.D. PODĚKOVÁNÍ Rád bych poděkoval vedoucímu své bakalářské práce Ing. Janu Roupcovi, Ph.D. za odborné vedení při tvorbě této práce, za cenné rady a návrhy ke zlepšení, drobné korektury a zejména za jeho entuziasmus, se kterým k tomuto procesu přistupoval.
    [Show full text]
  • Linux Command Line: Aliases, Prompts and Scripting
    Linux Command Line: Aliases, Prompts and Scri... 1 Linux Command Line: Aliases, Prompts and Scripting By Steven Gordon on Wed, 23/07/2014 - 7:46am Here are a few notes on using the Bash shell that I have used as a demo to students. It covers man pages, aliases, shell prompts, paths and basics of shell scripting. For details, see the many free manuals of Bash shell scripting. 1. Man Pages Man pages are the reference manuals for commands. Reading the man pages is best when you know the command to use, but cannot remember the syntax or options. Simply type man cmd and then read the manual. E.g.: student@netlab01:~$ man ls If you don't know which command to use to perform some task, then there is a basic search feature called apropos which will do a keyword search through an index of man page names and short descriptions. You can run it using either the command apropos or using man -k. E.g.: student@netlab01:~$ man superuser No manual entry for superuser student@netlab01:~$ apropos superuser su (1) - change user ID or become superuser student@netlab01:~$ man -k "new user" newusers (8) - update and create new users in batch useradd (8) - create a new user or update default new user information Some common used commands are actually not standalone program, but commands built-in to the shell. For example, below demonstrates the creation of aliases using alias. But there is no man page for alias. Instead, alias is described as part of the bash shell man page.
    [Show full text]
  • Uulity Programs and Scripts
    U"lity programs and scripts Thomas Herring [email protected] U"lity Overview • In this lecture we look at a number of u"lity scripts and programs used in the gamit/globk suite of programs. • We examine and will show examples in the areas of – Organizaon/Pre-processing – Scripts used by sh_gamit but useful stand-alone – Evaluang results • Also examine some basic unix, csh, bash programs and method. 11/19/12 Uli"es Lec 08 2 Guide to scripts • There are many scripts in the ~/gg/com directory and you should with "me looks at all these scripts because they oSen contain useful guides as to how to do certain tasks. – Look the programs used in the scripts because these show you the sequences and inputs needed for different tasks – Scrip"ng methods are useful when you want to automate tasks or allow easy re-generaon of results. – Look for templates that show how different tasks can be accomplished. • ~/gg/kf/uls and ~/gg/gamit/uls contain many programs for u"lity tasks and these should be looked at to see what is available. 11/19/12 Uli"es Lec 08 3 GAMIT/GLOBK Utilities" 1.! Organization/Pre-processing" sh_get_times: List start/stop times for all RINEX files" sh_upd_stnfo: Add entries to station.info from RINEX headers" convertc: Transform coodinates (cartesian/geodetic/spherical)" glist: List sites for h-files in gdl; check coordinates, models " corcom: Rotate an apr file to a different plate frame" unify_apr: Set equal velocities/coordinates for glorg equates" sh_dos2unix: Remove the extra CR from each line of a file" doy: Convert to/from DOY, YYMMDD, JD, MJD, GPSW" " " " GAMIT/GLOBK Utilities (cont)" 2.
    [Show full text]