Giter Site home page Giter Site logo

gyponaxu's Projects

advance-shell-in-c-language icon advance-shell-in-c-language

it will handel all external, some internal command like cd, exit, jobs and help, also handel pipe and background and fore ground jobs

concatinate-and-delete-data icon concatinate-and-delete-data

concatinate two doubly linked list such that copy datra of list2 in to list2. secondly design a function that delete all data except given key

design-and-analysis-of-algorithms--spring-2021-assignment-3 icon design-and-analysis-of-algorithms--spring-2021-assignment-3

Problem 1 Suppose you want to place bill boards to advertise about your new business on the roads of your city. The idea is to place billboards only on the junctions to get maximum visibility as lots of people pass through those junctions. Placing a bill board cost you X Rs. You want to place these bill boards such that each road of the city is covered (i.e. one board must be placed at least to one of the junctions connecting that road). Your objective is to place the boards such that all roads are covered with minimum cost. Being a computer science expert, you model the road network as a graph where roads are edges and junctions are vertices. One of your friends asks you to apply greedy approach to minimize your cost. He asks you to place a board on the junction/vertex that has maximum degree (this way maximum number of roads will be covered) and then place the next board on the junction/vertex that has maximum uncovered roads. Keep doing this until all roads are covered. Is this greedy strategy optimal? If yes then give an informal correctness proof. Otherwise give a counter example. Problem 2 You are recently appointed as an intern of company ABC for n weeks. You team lead has assigned you n tasks t1, t2, t3, ... , tn. You have to submit one task every week but you can do these tasks in any order. Each task i requires hi hours to complete (h1 hours for task t1, h2 hours for task t2 and so on). If you submit task ti on week j then you will be paid hi*(n-j)$. You want to maximize your earning. Give a greedy algorithm that can determine the order in which you should perform the tasks to maximize your income. Give n informal proof of correctness for you algorithm. Problem 3 We use Huffman's algorithm to obtain an encoding of alphabet {a, b, c} with frequencies fa, fb, fc. In each of the following cases, either give an example of frequencies (fa; fb; fc) that would yield the specified code, or explain why the code cannot possibly be obtained (no matter what the frequencies are). (a) Code: {0, 10, 11} (b) Code: {0, 1, 00} (c) Code: {10, 01, 00} Problem 4 Ternary Huffman. Trimedia Disks Inc. has developed ternary hard disks. Each cell on a disk can now store values 0, 1, or 2 (instead of just 0 or 1). To take advantage of this new technology, we need a modified Huffman algorithm for compressing sequences of characters from an alphabet of size n, where the characters occur with known frequencies f1, f2, ..., fn. Your algorithm should encode each character with a variable-length code word over the values 0, 1, 2 such that no code word is a prefix of another code word and so as to obtain the maximum possible compression. a. Design an algorithm for finding optimal code. b. Analyze the running time of your algorithm as a function of n, the number of unique characters. c. Prove that your algorithm works (Give informal argument).

design-and-analysis-of-algorithms--spring-2021-assignment-4 icon design-and-analysis-of-algorithms--spring-2021-assignment-4

Problem 1 The spread of third wave of COVID-19 in Pakistan has resulted in closure of academic Institutes. The management of FAST Lahore decided to save your academic year by conducting online sessions (video lectures). There are total n videos that need to be streamed one after the other. Each video vi consists of bi bits that needs to be sent at a constant rate over a period of ti seconds. There is only one connection allowed so two videos can’t be sent at a time. This means scheduling of videos is required (an order in which to send these videos). Whichever order is chosen, there cannot be any delays between the end of one video and the start of the next. The connection does not want its user taking up too much bandwidth, so it imposes the following constraint, using a fixed parameter r: For each natural number t > 0, the total number of bits you send over the time interval from 0 to t cannot exceed r*t. A schedule is considered valid if it satisfies the constraint imposed by the connection. You are a computer science expert and management of FAST need your services. Given a set of n video streams specified by its number of bits bi and its time duration ti, they need to determine whether there exists a valid schedule that satisfies connection parameter r. For example you have 3 videos with (b1,t1)=(2000,1), (b2,t2)=(6000,2) and (b3,t3)=(2000,1) also r=5000. The schedule that runs videos in order 1, 2, 3, is valid because at time t=1 the first stream is sent and 2000 < 5000*1 at time t=2 2000+3000(half of second video)<5000*2 similar calculation can be done to check the constraint for t=3 and t=4. a. Design an efficient algorithm that takes a set of n streams each specified by bi and ti along with r and determines whether a valid schedule exists or not. b. Analyze the running time of your algorithm as a function of n. c. Prove that your algorithm works (Give informal argument). Problem 2 Suppose that instead of always selecting the first activity to finish, we instead select the last activity to start that is compatible with all previously selected activities. Describe how this approach is a greedy algorithm, and prove that it yields an optimal solution. Problem 3 Suppose that we have a set of activities to schedule among a large number of lecture halls, where any activity can take place in any lecture hall. We wish to schedule all the activities using as few lecture halls as possible. Give an efficient greedy algorithm to determine which activity should use which lecture hall. Problem 4 Alice wants to throw a party and is deciding whom to call. She has n people to choose from, and she has made up a list of which pairs of these people know each other. She wants to pick as many people as possible, subject to two constraints: at the party, each person should have at least five other people whom they know and five other people whom they don't know. Give an efficient algorithm that takes as input the list of n people and the list of pairs who know each other and outputs the best choice of party invitees. Give the running time in terms of n.

design-finite-automata icon design-finite-automata

Problem 1: For languages L1 to L10 over alphabets {a,b} do the following a) Enumerate some elements b) Draw a Deterministic Finite Automata  L1: The language of all strings containing even number of a’s and each a is followed by at least one b.  L2:The language that has even length and odd number of a’s.  L3:The language of all strings in which every pair of adjacent b’s appear before any pair of adjacent a’s.  L4:The language of all strings containing no more than one occurrence of the string aa. (the string aaa should be viewed as containing 2 occurrences of aa)  L6: The language of all strings that begins and end with a triple letter( aaa or bbb)  L7: The language of all strings containing at least two a’s and at most one b. Problem 2a: For languages L1 to L10 over alphabets {0,1} do the following a) Enumerate some elements b) Draw a Deterministic Finite Automata  L1: strings over {0,1} such that their decimal equivalent is multiple of 5 Eg: {0, 101,1010…..}  L2: all strings over {0,1} that start with 0 and end with 010 and do not have 000 as part of a string.  L3: all the string x in which n 0 (x)%3=0 and n 1 (x)%3!=0  L4: all the string x in which n 0 (x)%3=0 and n 1 (x)%3=0  L5: L4 U L3  L6= L1’ School of Computer SciencePage2 Problem 2a: Run DFA of L1 of problem 2 for following strings, and answer which ones are accepted and which are rejected {000111, 101000, 10110100,0000100000}

disk-management-system-in-c-linux- icon disk-management-system-in-c-linux-

practical-case-study-e-operating-systems-programming--300698-1-introduction-in-this-workshop-you-will-be-implementing-a-file-system-simulator-loosely-based-on-historic-file-systems-the-file-system-will-be-have-the-following-properties--it-is-a-single-level-directory-system--the-directory-entry-has-the-following-format-struct-entry--char-user-char-name9-char-extension4-short-blockcount-short-block8--with-the-name-and-extension-fields-being-c-strings-this-structure-is-32-bytes-in-size--the-disk-size-is-160-kbyte-this-is-roughly-one-side-of-a-5-1-4-00-inch-disk--the-smallest-unit-of-allocation-is-1-kbyte--the-main-directory-occupies-the-first-block-of-the-disk-block-0-and-its-size-is-fixed-at-1-block-so-there-can-only-be-32-files-in-this-file-system--as-the-directory-always-occupies-only-the-first-block-therefore-no-control-information-about-it-needs-to-be-stored-in-the-directory-ie-no--entry--the-only-user-is-user-1--user-1-is-not-a-valid-user-and-could-be-used-to-mark-free-directory-entries--alongside-the-directory-you-also-need-a-bitmap-that-is-capable-of-representing-all-of-the-blocks-available-on-the-disk-this-can-be-a-free-space-bitmap-or-an-allocation-bitmap-this-is-your-choice-this-structure-is-not-stored-on-the-disk-but-would-be-computed-by-the-operating-system-when-the-disk-was-inserted-you-are-not-supposed-to-implement-the-actual-storage-only-the-control-structures-of-the-file-system-when-implementing-the-free-bitmap-you-must-use-a-bitmap-ie-it-should-be-an-array-but-each-element-of-the-array-should-represent-several-blocks-1-2-programming-tasks-when-your-program-starts-it-will-assume-that-the-disk-is-unformatted-you-should-provide-a-menu-that-implements-the-following-options-initialise-disk-initialise-disk-control-structures-setting-the-first-block-of-the-disk-to-used-in-the-bitmap-and-marking-all-directory-entries-as-being-available-list-files-in-the-directory-list-the-names-extensions-and-block-counts-of-all-the-valid-files-in-the-directory-display-the-free-bitmap-print-the-value-of-each-of-the-bits-in-the-bitmap-this-need-not-be-pretty-just-a-long-list-of-1s-and-0s-is-sufficient-opencreate-file-scans-the-directory-and-if-the-name-provided-doesnt-exist-then-adds-that-file-to-the-directory-this-file-will-be-used-in-all-subsequent-operations-until-a-new-file-is-opened-or-it-is-deleted-read-file-list-the-blocks-occupied-by-the-currently-open-file-not-the-content-of-these-blocks-as-you-dont-store-this-information-write-file-allocate-another-block-to-the-currently-open-file-you-should-not-preallocate-blocks-for-the-file-you-should-allocate-the-first-available-block-by-scanning-the-bitmap-for-the-first-block-that-is-available-each-write-shall-add-another-block-to-the-file-until-there-are-no-more-slots-to-allocate-blocks-to-or-the-disk-runs-out-of-blocks-there-are-only-8-slots-available-for-each-file-delete-file-deallocate-all-blocks-for-the-current-file-in-the-bitmap-and-marks-as-free-the-directory-entry-for-that-file-you-need-to-pay-close-attention-to-multiple-boundary-conditions-which-exist-in-this-file-system-including-the-total-size-of-the-disk-maximum-size-of-a-file-maximum-number-of-files-etc-2-3-file-fsh-ifndef-fsh-define-fsh--prevent-multiple-inclusion--includestdinth--fsh--various-definitions-for-osp-practical-case-study-e---the-bitmap--extern-uint8t-bitmap20--160kb-disk-with-1kb-blocks--160-bits-for-bitmap---20-bytes---the-directory-entry--struct-entry--char-user-char-name9-char-extension4-short-blockcount-short-block8---the-directory--extern-struct-entry-directory32--extern-means-its-defined-in-another-file-prevents-multiple-definition-errors--int-togglebitint-block--toggles-the-value-of-the-bit-block-in-the-external-array-bitmap-returns-the-current-value-of-the-bit-does-not-validate-block--int-blockstatusint-block--returns-the-status-of-block-in-the-external-array-bitmap-returns-0-if-bitmap-bit-is-0-not-0-if-bitmap-bit-is-1-does-not-validate-block--endif-3-4-file-fsc--fsc-some-useful-functions-for-osp-practical-case-study-e--includefsh-uint8t-bitmap20-struct-entry-directory32-int-togglebitint-block--int-elemblock8-int-posblock8-int-mask1pos-bitmapelemmask-return-bitmapelemmask--int-blockstatusint-block--int-elemblock8-int-posblock8-int-mask1pos-return-bitmapelemmask--5-file-mainc-includestdioh--stdioh-will-be-found-in-the-system-path--includefsh--fsh-will-be-found-in-the-local-path--int-mainint-ac-charav--printfplease-make-me-usefuln-return-0--4-6-file-makefile-all-casee-casee-maino-fso-cc--o-5

graph-real-time-problems icon graph-real-time-problems

Points: 100 Topics: Graphs, topological sort, freedom to decide how to represent data and organize code (while still reading in a graph and performing topological sort) PLAGIARISM/COLLUSION: You should not read any code (solution) that directly solves this problem (e.g. implements DFS, topological sorting or other component needed for the homework). The graph representation provided on the Code page (which you are allowed to use in your solution) and the pseudocode and algorithm discussed in class provide all the information needed. If anything is unclear in the provided materials check with us. You can read materials on how to read from a file, or read a Unix file or how to tokenize a line of code, BUT not in a sample code that deals with graphs or this specific problem. E.g. you can read tutorials about these topics, but not a solution to this problem (or a problem very similar to it). You should not share your code with any classmate or read another classmate's code. Part 1: Main program requirements (100 pts) Given a list of courses and their prerequisites, compute the order in which courses must be taken so that when taking a courses, all its prerequisites have already been taken. All the files that the program would read from are in Unix format (they have the Unix EOL). Provided files: ● Grading Criteria ● cycle0.txt ● data0.txt ● data0_rev.txt ● data1.txt - like data0.txt but the order of the prerequisite courses is modified on line 2. ● slides.txt (graph image) - courses given in such a way that they produce the same graph as in the image. (The last digit in the course number is the same as the vertex corresponding to it in the drawn graph. You can also see this in the vertex-to-course name correspondence in the sample run for this file.) ● run.html● data0_easy.txt - If you cannot handle the above file format, this is an easier file format that you can use, but there will be 15 points lost in this case. More details about this situation are given in Part 3. ● Unix.zip - zipped folder with all data files. ● For your reference: EOL_Mac_Unix_Windows.png - EOL symbols for Unix/Mac/Windows Specifications: 1. You can use structs, macros, typedef. 2. All the code must be in C (not C++, or any other language) 3. Global or static variables are NOT allowed. The exception is using macros to define constants for the size limits (e.g. instead of using 30 for the max course name size). E.g. #define MAX_ARRAY_LENGTH 20 4. You can use static memory (on the frame stack) or dynamic memory. (Do not confuse static memory with static variables.) 5. The program must read from the user a filename. The filename (as given by the user) will include the extension, but NOT the path. E.g.: data0.txt 6. You can open and close the file however many times you want. 7. File format: 1. Unix file. It will have the Unix EOL (end-of-line). 2. Size limits: 1. The file name will be at most 30 characters. 2. A course name will be at most 30 characters 3. A line in the file will be at most 1000 characters. 3. The file ends with an empty new line. 4. Each line (except for the last empty line) has one or more course names. 5. Each course name is a single word (without any spaces). E.g. CSE1310 (with no space between CSE and 1310). 6. There is no empty space at the end of the line. 7. There is exactly one empty space between any two consecutive courses on the same line. (You do not need to worry about having tabs or more than one empty space between 2 courses.) The first course name on each line is the course being described and the following courses are the prerequisites for it. E.g. CSE2315 CSE1310 MATH1426 ENGL13018. The first line describes course CSE2315 and it indicates that CSE2315 has 2 prerequisite courses, namely: CSE1310 and MATH1426. The second line describes course ENG1301 and it indicates that ENG1301 has no prerequisites. 9. You can assume that there is exactly one line for every course, even for those that do not have prerequisites (see ENGL1301 above). Therefore you can count the number of lines in the file to get the total number of courses. 10.The courses are not given in any specific order in the file. 8. You must create a directed graph corresponding to the data in the file. 1. The graph will have as many vertices as different courses listed in the file. 2. You can represent the vertices and edges however you want. 3. You do NOT have to use a graph struct. If you can do all the work with just the 2D table (the adjacency matrix) that is fine. You HAVE TO implement the topological sorting covered in class (as this assignment is on Graphs), but you can organize, represent and store the data however you want. 4. For the edges, you can use either the adjacency matrix representation or the adjacency list. If you use the adjacency list, keep the nodes in the list sorted in increasing order. 5. For each course that has prerequisites, there is an edge, from each prerequisite to that course. Thus the direction of the edge indicates the dependency. The actual edge will be between the vertices in the graph corresponding to these courses. E.g. file data0.txt has: c100 c300 c200 c100 c200 c100 Meaning: c100-----> c200 \ | \ | \ | \ | \ | \ | V V c300(The above drawing is provided here to give a picture of how the data in the file should be interpreted and the graph that represents this data. Your program should *NOT* print this drawing. See the sample run for expected program output.) From this data you should create the correspondence: vertex 0 - c100 vertex 1 - c300 vertex 2 - c200 and you can represent the graph using adjacency matrix (the row and column indexes are provided for convenience): | 0 1 2 ----------------- 0| 0 1 1 1| 0 0 0 2| 0 1 0 e.g. E[0][1] is 1 because vertex 0 corresponds to c100 and vertex 1 corresponds to c300 and c300 has c100 as a prerequisite. Notice that E[1][0] is not 1. If you use the adjacency list representation, then you can print the adjacency list. The list must be sorted in increasing order (e.g. see the list for 0). It should show the corresponding node numbers. E.g. for the above example the adjacency list will be: 0: 1, 2, 1: 2: 1, 6. 7. In order for the output to look the same for everyone, use the correspondence given here: vertex 0 for the course on the first line, vertex 1 for the course on the second line, etc. 1. Print the courses in topological sorted order. This should be done using the DFS (Depth First Search) algorithm that we covered in class and the topological sorting based on DFS discussed in class. There is no topological order if there is a cycle in the graph; in this case print an error message. If in DFV-visit when looking at the (u,v) edge, if the color of v is GRAY then there is a cycle in the graph (and therefore topological sorting is not possible). See the Lecture on topological sorting (You can find the date based on the table on the Scans page and then watch the video from that day. I have also updated the pseudocodein the slides to show that. Refresh the slides and check the date on the first page. If it is 11/26/2020, then you have the most recent version.) 8. (6 points) create and submit 1 test file. It must cover a special case. Indicate what special case you are covering (e.g. no course has any prerequisite). At the top of the file indicate what makes it a special case. Save this file as special.txt. It should be in Unix EOL format. Part 2: Suggestions for improvements (not for grade) 1. CSE Advisors also are mindful and point out to students the "longest path through the degree". That is longest chain of course prerequisites (e.g. CSE1310 ---> CSE1320 --> CSE3318 -->...) as this gives a lower bound on the number of semesters needed until graduation. Can you calculate for each course the LONGEST chain ending with it? E.g. in the above example, there are 2 chains ending with c300 (size 2: just c100-->c300, size 3: c100-->c200-->c300) and you want to show longest path 3 for c300. Can you calculate this number for each course? 2. Allow the user the enter a list of courses taken so far (from the user or from file) and print a list of the courses they can take (they have all the prerequisites for). 3. Ask the user to enter a desired number of courses per semester and suggest a schedule (by semester). Part 3: Implementation suggestions 1. Reading from file: (15 points) For each line in the file, the code can extract the first course and the prerequisites for it. If you cannot process each line in the file correctly, you can use a modified input file that shows on each line, the number of courses, but you would lose the 15 points dedicated to line processing. If your program works with the "easy files", in order to make it easy for the TAs to know which file to provide, please name your C program courses_graph_easy.c. Here is the modification shown for a new example. Instead of c100 c300 c200 c100 c200 the file would have: 1 c1003 c300 c200 c100 1 c200 1. that way the first data on each line is a number that tells how many courses (strings) follow after it on that line. Everything is separated by exactly one space. All the other specifications are the same as for the original file (empty line at the end, no space at the end of any line, length of words, etc). Here is data0_easy.txt Make a direct correspondence between vertex numbers and course names. E.g. the **first** course name on the first line corresponds to vertex 0, the **first** course name on the second line corresponds to vertex 1, etc... 2. 3. The vertex numbers are used to refer to vertices. 4. In order to add an edge in the graph you will need to find the vertex number corresponding to a given course name. E.g. find that c300 corresponds to vertex 1 and c200 corresponds to vertex 2. Now you can set E[2][1] to be 1. (With the adjacency list, add node 1 in the adjacency list for 2 keeping the list sorted.) To help with this, write a function that takes as arguments the list/array of [unique] course names and one course name and returns the index of that course in the list. You can use that index as the vertex number. (This is similar to the indexOf method in Java.) 5. To see all the non-printable characters that may be in a file, find an editor that shows them. E.g. in Notepad++ : open the file, go to View -> Show symbol -> Show all characters. YOU SHOULD TRY THIS! In general, not necessarily for this homework, if you make the text editor show the white spaces, you will know if what you see as 4 empty spaces comes from 4 spaces or from one tab or show other hidden characters. This can help when you tokenize. E.g. here I am using Notepad++ to see the EOL for files saved with Unix/Mac/Windows EOL (see the CR/LF/CRLF at the end of each line): EOL_Mac_Unix_Windows.png How to submit Submit courses_graph.c (or courses_graph_easy.c) and special.txt (the special test case you created) in Canvas . (For courses_graph_easy.c you can submit the "easy" files that you created.)Your program should be named courses_graph.c if it reads from the normal/original files. If instead it reads from the 'easy' files, name it courses_graph_easy.c As stated on the course syllabus, programs must be in C, and must run on omega.uta.edu or the VM. IMPORTANT: Pay close attention to all specifications on this page, including file names and submission format. Even in cases where your answers are correct, points will be taken off liberally for non-compliance with the instructions given on this page (such as wrong file names, wrong compression format for the submitted code, and so on). The reason is that non-compliance with the instructions makes the grading process significantly (and unnecessarily) more time consuming. Contact the instructor or TA if you have any questions

mips32-assembly-language icon mips32-assembly-language

Assembler that supports a subset of the MIPS32 assembly language. The assembler is implemented in C and executed on Linux.

online_grocery_store-project icon online_grocery_store-project

This website is going to be a platform where people can facilitate from online retail being hassle free, especially in this pandemic. Users can have a convenient experience of buying their daily base groceries and by groceries we mean every other thing that a household needs whether on daily, weekly or monthly basis. The items selected can be easily added to cart and shipped to home within a certain time depending upon the location, availability of product and other factors. Users can thus facilitate by ordering the grocery before time.

shell-in-c-with-all-advance-feature icon shell-in-c-with-all-advance-feature

Design and implement a simple, interactive shell program that prompts the user for a command, parses the command, and then executes it with a child process. In your solution you are required to use execv(), which means that you will have to read the PATH environment, then search each directory in the PATH for the command file name that appears on the command line. Goals After this exercise you should:  Understand how a command line shell works.  Understand the commands fork, execv and wait.  Feel comfortable compiling simple C-programs using a Makefile. Makefile https://www.includehelp.com/c-programming-questions/what-is-makefile.aspx Background The shell command line interpreter is an application program that uses the system call interface to implement an operator's console. It exports a character-oriented human-computer interface, and uses the system call interface to invoke OS functions. Every shell has its own language syntax and semantics. In conventional UNIX shells a command line has the form command argument_1 argument_2 ... where the command to be executed is the first word in the command line and the remaining words are arguments expected by that command. The number of arguments depends on the command which is being executed. The shell relies on an important convention to accomplish its task: the command is usually the name of a file that contains an executable program. For example ls and cc are the names of files (stored in /bin on most UNIX-style machines). In a few cases, the command is not a file name, but is actually a command that is implemented within the shell; for example cd is usually implemented within the shell rather than in a file. Since the vast majority of the commands are implemented in files, think of the command as actually being a file name in some directory on the machine. This means that the shell's job is to find the file, prepare the list of parameters for the command, and the cause the command to be executed using the parameters. A shell could use many different strategies to execute the user's computation. However the basic approach used in modern shells is to create a new process to execute any new computation. This idea of creating a new process to execute a computation may seem like overkill, but it has a very important characteristic. When the original process decides to execute a new computation, it protect itself from fatal errors that might arise during that execution. If it did not use a child process to execute the command, a chain of fatal errors could cause the initial process to fail, thus crashing the entire machine. Steps These are the detailed steps any shell should take to accomplish its job (note that the code snippets are just examples; they might not suffice for this assignment, but they should give enough clues): Printing a prompt. There is a default prompt string, sometimes hardcoded into the shell, e.g. > or other. When the shell is started it can look up the name of the machine on which it is running, and prepend it to the standard prompt character, for example, giving a prompt string such as zaagblad>. The shell can also be designed to print the current directory as part of the prompt, meaning that each time the user employs cd the prompt string is redefined. Once the prompt string is determined, the shell prints it to stdout whenever it is ready to accept a command line. For example this function prints a prompt: void printPrompt() { /* Build the prompt string to have the machine name, * current directory, or other desired information. */ promptString = ...; printf("%s ", promptString); } Getting the command line. To get a command line, the shell performs a blocking read operation so that the process that executes the shell will be blocked until the user types a command line in response to the prompt. When the command has been provided by the user (and terminated with a newline character, the command line string is returned to the shell. void readCommand(char *buffer) { /* This code uses any set of I/O functions, such as those in the * stdio library to read the entire command line into the buffer. This * implementation is greatly simplified but it does the job. */ gets(buffer); } Note: do not use gets in your final code. Use man gets to see why. Parsing the command. For this assignment your shell doesn't need to be able to handle pipes or redirections. Finding the file. Before you search for the file you have to figure out whether the command needs to be implemented as an internal command or not. If it is not an internal command, you will have to read the environment variable PATH. These environment variables are typically set when the shell is started, but can be modified on the commandline. The command you have to use for this depends on the shell you are using. The PATH environment variable is an ordered list of absolute pathnames that specifies where the shell should search for command files. If the .login file has a line like: set path=(.:/bin:/usr/bin) the shell will first look in the current directory (since the first pathname is "." for the current directory), then in /bin and finally in /usr/bin. If there is no file with the same name as the command from the command line in any of the specified directories, the shell responds to the user that it is unable to find the command. Your solution needs to parse the PATH variable before it begins reading command lines. This can be done with code like this:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.