Linux tips
From silico.biotoul.fr
(Difference between revisions)
m (→Paths & I/O & files) |
m (→File content, concatenation, split, ... and redirections: cat, split, head, tail, more, less, tac) |
||
Line 96: | Line 96: | ||
== File content, concatenation, split, ... and redirections: <tt>cat, split, head, tail, more, less, tac</tt> == | == File content, concatenation, split, ... and redirections: <tt>cat, split, head, tail, more, less, tac</tt> == | ||
+ | <source lang='bash'> | ||
+ | # display content | ||
+ | cat somefile.txt | ||
+ | # concatenate 2 or more files | ||
+ | cat file_1.txt file_2.txt | ||
+ | cat *.txt | ||
+ | # redirect to a file (if file exists it will be overwritten otherwise it gets created) | ||
+ | cat file_1.txt file_2.txt > result.txt | ||
+ | # redirect to a file (if file exists it will be appended at the end otherwise it gets created) | ||
+ | cat others*.txt >> result.txt | ||
+ | # split a file into smaller parts | ||
+ | ## by file size (1kb) | ||
+ | split --bytes 1024 big.file | ||
+ | split -b 1024 big.file | ||
+ | ## by number of lines per output files | ||
+ | split --lines 100 big.text.file.txt | ||
+ | split -l 100 big.text.file.txt | ||
+ | ## by number of output files | ||
+ | split --number 10 big.file | ||
+ | split -n 10 big.file | ||
+ | ## specify prefix and numbered numerically (3 digits) | ||
+ | split -n 100 -a 3 -d big.file part_ | ||
+ | split -n 100 --suffix-length 3 --numeric-suffixes big.file part_ | ||
+ | </source> | ||
Revision as of 12:05, 5 March 2013
Contents |
Paths & I/O & files
Paths & directories: pwd, mkdir, rmdir, rm
- pwd returns current directory
- relative to current directory: e.g. ls subdir/subsubdir or ls ../whatever/
- absolute ls ~user/path or ls /home/user/path
- mkdir: create directory. e.g. mkdir ~/newdir or with subdirs mkdir -p ~/new/newsub/newsubsub
- rmdir dirname or if not empty rm -fr dirname
Permissions: chown, chgrp, chmod
$ ls -l /home drwxr-x--- 69 barriot gsi 4.0K Mar 5 12:09 barriot drwx------ 2 root root 16K Jul 12 2010 lost+found drwxr-xr-x 36 micas stage 4.0K Jul 31 2012 micas ... [barriot@gamborimbo ~]$ ls -lh Documents/TEACHING/2012-2013/M1-MABS/Graph/TP3-igraph.layout/ total 80K drwxr-xr-x 1 barriot gsi 4.0K Mar 14 2012 HDE.old -rw-r--r-- 1 barriot gsi 24K Mar 14 2012 91347.nwk -rw-r--r-- 1 barriot gsi 942 Mar 1 16:02 Cleandb_Luca_1_S_1_1_65_Iso_Tr_1-CC1.cod -rw-r--r-- 1 barriot gsi 28K Sep 7 2010 Cleandb_Luca_1_S_1_1_65_Iso_Tr_1-CC1.gr -rw-r--r-- 1 barriot gsi 2.3K Sep 7 2010 Cleandb_Luca_1_S_1_1_65_Iso_Tr_1-CC1.tgr -rw-r--r-- 1 barriot gsi 4.7K Mar 5 11:42 cmds.R -rw-r--r-- 1 barriot gsi 871 Mar 14 2012 sample_tree_with_branchlengths.nwk -rwxr-xr-x 1 barriot gsi 670 Mar 14 2012 drawTree.py -rw-r--r-- 1 barriot gsi 5.6K Feb 27 16:57 Tree.py
First character corresponds to file type. d for directory, - for a regular file, ... Then by 3 for the owner (user), the group and the others.
For a regular file :
- r for permission to read
- w for permission to modify
- x for being able to execute the file (binary executable or script)
For a directory :
- r to be able to read the content (list files in the directory)
- w to be able to add or remove files
- x to be able to pass through that directory, i.e. cd to that dir or a subdir
Modify ownership of a file or directory :
# change owner chown newuser file # recursive chown -R newuser directory # change group chgrp newgroup filename # change both chown newuser.newgroup filename
Modify permissions:
# numeric notation: r=4, w=2, x=1, thus for rwx-r-x--- chmod 760 file # recursively on a sub directory chmod -R 760 dirname # symbolic notation: chmod u=rwx,g=rx,o= filename # add execute permission for all: chmod a+x filename # revoke write permission for others: chmod o-w filename
File info & type: stat, file
[barriot@gamborimbo ~]$ stat /home/barriot File: `/home/barriot' Size: 12288 Blocks: 24 IO Block: 4096 directory Device: fd02h/64770d Inode: 1048577 Links: 119 Access: (0755/drwxr-xr-x) Uid: ( 500/ barriot) Gid: ( 501/ gsi) Access: 2013-03-05 10:39:08.927051453 +0100 Modify: 2013-03-05 10:39:00.240074369 +0100 Change: 2013-03-05 10:39:00.240074369 +0100 Birth: -
[barriot@gamborimbo ~]$ stat .bashrc File: `.bashrc' Size: 517 Blocks: 8 IO Block: 4096 regular file Device: fd02h/64770d Inode: 1052239 Links: 1 Access: (0755/-rwxr-xr-x) Uid: ( 500/ barriot) Gid: ( 501/ gsi) Access: 2013-03-02 16:04:19.268619379 +0100 Modify: 2012-10-12 17:24:24.818899216 +0200 Change: 2012-11-18 23:25:18.869870338 +0100 Birth: -
[barriot@gamborimbo ~]$ file /home/barriot /home/barriot: directory
[barriot@gamborimbo ~]$ file .bashrc .bashrc: ASCII text
File content, concatenation, split, ... and redirections: cat, split, head, tail, more, less, tac
# display content cat somefile.txt # concatenate 2 or more files cat file_1.txt file_2.txt cat *.txt # redirect to a file (if file exists it will be overwritten otherwise it gets created) cat file_1.txt file_2.txt > result.txt # redirect to a file (if file exists it will be appended at the end otherwise it gets created) cat others*.txt >> result.txt # split a file into smaller parts ## by file size (1kb) split --bytes 1024 big.file split -b 1024 big.file ## by number of lines per output files split --lines 100 big.text.file.txt split -l 100 big.text.file.txt ## by number of output files split --number 10 big.file split -n 10 big.file ## specify prefix and numbered numerically (3 digits) split -n 100 -a 3 -d big.file part_ split -n 100 --suffix-length 3 --numeric-suffixes big.file part_
cat split, redirection, head, tail, more, less, tac, sed, grep, cut, find
Processes
ps, jobs, Ctrl-C/Z/D, top, kill, killall, nohup, disown, &
shell
variables, test, $?, for, if, function, $(cmd), && ||
archive
tar, bzip, gzip, rsync