User Tools

Site Tools


linux:basics

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
linux:basics [2019/04/12 14:09]
mstraub [Filtering & Selecting]
linux:basics [2019/09/03 09:46]
mstraub [Compressing files]
Line 1: Line 1:
 This page covers basic usage of / working with Linux. This page covers basic usage of / working with Linux.
 +
 +A great resource are the man pages but also the [[https://​www.gnu.org/​software/​coreutils/​manual/​html_node/​index.html|official documentation of the GNU Coreutils]]
  
  
Line 479: Line 481:
  
 ==== Compressing files ==== ==== Compressing files ====
-For compressig ​files the zip formats gzip (.gz) and bzip2 (.bz2) are commonly used - especially ​the former.+For compressing ​files the zip formats gzip (.gz)bzip2 (.bz2) and xz (.xz, which uses LZMA compression) are commonly used.  
 + 
 +Gzip is the most commonly used one, but according to [[https://​www.rootusers.com/​gzip-vs-bzip2-vs-xz-performance-comparison|this in-depth comparison]] .xz is the superior format - it is fast to decompress, achieves high compression rates and also has reasonable compression times until level 2 or 3. 
 <code bash> <code bash>
 gzip my.txt ​                         # creates the gzipped file my.txt.gz and remove my.txt gzip my.txt ​                         # creates the gzipped file my.txt.gz and remove my.txt
Line 645: Line 650:
 ''​date''​ is a versatile tool for formatting dates / times and setting the system time ([[linux:​installation#​date_timezone|see also]]). ''​date''​ is a versatile tool for formatting dates / times and setting the system time ([[linux:​installation#​date_timezone|see also]]).
  
-Get the current ​system ​time+Print the current time in different formats
 <code bash> <code bash>
-date                      # print current system time (human readable)+date                      # default - a human readable ​format 
 +date --rfc-3339=date ​     # only the date - similar to ISO 8601 
 +date --rfc-3339=seconds ​  # date and time - similar to ISO 8601 
 +date +%Y-%m-%dT%H%M ​      # custom format useful for scripts, e.g. 2019-08-14T1129
 </​code>​ </​code>​
 +
 +Convert unix timestamps
 +<code bash>
 +date -d @1278923870 ​      # print the unix timestamp in a human readable format
 +</​code>​
 +
 +
 +
 ====== Working with Text ====== ====== Working with Text ======
  
Line 785: Line 801:
 </​code>​ </​code>​
  
-Two good trick to create readable regexes ​is to (1) escape the whole regex with single quotes and (2) use a different separator than ''/''​ when appropriate. See for yourself in this example of replacing all backslashes in a line with slashes.+Two good tricks ​to create readable regexes ​are to (1) escape the whole regex with single quotes and (2) use a different separator than ''/''​ when appropriate. See for yourself in this example of replacing all backslashes in a line with slashes.
  
 <code bash> <code bash>
Line 796: Line 812:
 <code bash> <code bash>
 sed -n 1~2p file.txt ​        #only print odd lines (=print line 1 and then print each line at step 2) sed -n 1~2p file.txt ​        #only print odd lines (=print line 1 and then print each line at step 2)
 +</​code>​
 +
 +By default ''​sed''​ regular expressions are limited, e.g. do not support matching groups. Use the switch ''​-E''​ to activate extended regular expressions and enjoy matching groups:
 +
 +<code bash>
 +sed -E '​s#​(.*),​(.*)#​\1;​\2#​g'​ #replace a single comma with a semicolon
 +</​code>​
 +
 +However, even with extended expressions ''​sed''​ does not support non-greedy expressions as it is possible with PCRE (perl compatible regular expressions). A good resort is to simply use ''​perl''​ itself:
 +
 +<code bash>
 +perl -pe '​s/​.*thevalue="​(.*?​)"​.*/​\1/​g'​ file.txt
 </​code>​ </​code>​
  
linux/basics.txt · Last modified: 2020/12/21 09:51 by mstraub