зеркало из
				https://github.com/iharh/notes.git
				synced 2025-10-31 13:46:08 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			186 строки
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			186 строки
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| cat -v /proc/$$/environ
 | |
| 	List env vars of current shell ($$ is for pid). -v - is for displaying zero-chars.
 | |
| 
 | |
| 
 | |
| set -A arr one two three
 | |
| arr=( one two three )
 | |
| 	Set an arr array-variable.
 | |
| src_files=( **/*.[ch] )
 | |
| 	You can yse any form of subsitution for array also
 | |
| 	Note: for bash - use src_files=( $(find . -name '*.[ch]' -print) ).
 | |
| 
 | |
| declare (typeset is also possible instead of declare) - Assign attributes to vars.
 | |
| 	-a - arrray.
 | |
| 	-A - associated array (hash).
 | |
| 		declare -A people = (name1 val1 name2 val2 name3 val3)
 | |
| 	-p - print...
 | |
| 	-U - make unique (path/PATH - path is a companion array).
 | |
| 	-T LD_LIBRARY_PATH ld_library_path
 | |
| 		Tie -//- in the same way (tied arrays).
 | |
| 	-u - uppercase.
 | |
| 	-l - lowercase.
 | |
| 	-R <num> - right justification.
 | |
| 	-L <num> - left justification.
 | |
| 	-x - the same as "export" command.
 | |
| 	-r - readonly.
 | |
| 	-i - integer variable (integer <var> can also be used).
 | |
| 	-i optional_base - -//- for specifying base.
 | |
| 	-F - floating variable (float <var> can also be used).
 | |
| 	-E - -//- scientific.
 | |
| 	Note: f='1.0/3' - specify how many significant digit is needed (3).
 | |
| 
 | |
| 
 | |
| echo ${#arr}
 | |
| 3
 | |
| 	Get the number of elements in the array.
 | |
| echo ${arr[3]}
 | |
| echo $arr[1]
 | |
| 	Array element access (index is 1-based in zsh, but 0-based in bash).
 | |
| echo $arr
 | |
| 	Echo just the first element of arr in case of ksh and ALL the elements for zsh.
 | |
| arr[2,3] = ( zwei drei )
 | |
| 	Replace a range of elements.
 | |
| arr[2] = ()
 | |
| 	Delete the second element.
 | |
| echo $arr[2,-1]
 | |
| 	Here -1 indicates the last element.
 | |
| 
 | |
| !!! Word-splitting is disabled in zsh by default !!!
 | |
| 
 | |
| var='one two'
 | |
| showargs $=var
 | |
| >>one<<
 | |
| >>two<<
 | |
| 	Directly specify splitting a variable.
 | |
| 
 | |
| ${arr[@]}
 | |
| 	Expand array elements. Each one is a separate word.
 | |
| ${arr[*]}
 | |
| 	Join all the elements to the string, separated by space.
 | |
| 
 | |
| Numbers:
 | |
| 
 | |
| echo $(( 3*4 ))
 | |
| 	Integer expression calculation.
 | |
| echo $(( 0xff ))
 | |
| echo $(( [#16] 255 ))
 | |
| 	For hexadecimal numbers.
 | |
| echo $(( 12#193 ))
 | |
| 	For arbitrary base.
 | |
| echo $(( 1. / 3 ))
 | |
| 	For floating-point output (0.3333333).
 | |
| 
 | |
| 
 | |
| Alternative and default values:
 | |
| echo ${var:-default}
 | |
| 	Specify default value in case if the variable is unset.
 | |
| echo ${var:+alternative}
 | |
| 	Do the opposite (... if variable is set).
 | |
| 
 | |
| Variable patterns:
 | |
| 
 | |
| ${var#pattern}, ${var##pattern}
 | |
| 	Expand var removing text that matches pattern (the least/most possible text) from the left.
 | |
| ${var%pattern}, ${var%%pattern}
 | |
| 	from the right.
 | |
| ${var//pattern/string}
 | |
| 	This does not enable greedy patterns.
 | |
| 	Note: to disable greedy pattern matching which is on by default, use (S) var-expansion flag.
 | |
| $a[3,5]
 | |
| 	Extract substring from 3 to 5 symbol. Indices can be math-expressions.
 | |
| 
 | |
| 
 | |
| Nested Expansion:
 | |
| ${${file##*/}%.$}
 | |
| 	Accept a file name and remove an initial path and file extension.
 | |
| 
 | |
| Variable expansion flags:
 | |
| ${(<flag>var}, where <flag> is one of the following:
 | |
| 
 | |
| L, U, C - Lower/Upper/Capitalize-First-Letter case.
 | |
| a, i    - Array-Index/Case-Independent order.
 | |
| o, O    - Ascending/Descending order.
 | |
| f, s, z - Split at Lines/Specified-Char/Into-Words-Taking-Shell-Quoting-Into-Account.
 | |
| F, j    - Join words using Newlines/Specified-Character.
 | |
| c, w, W - Count Characters/Words/Words-Including-Empty-Ones.
 | |
| Q       - Remove one level of quoting.
 | |
| q       - Quote the resulting words.
 | |
| V       - Make special characters visible.
 | |
| l, r    - Pad words on the Left/Right.
 | |
| t, k, v - Return the Type/Associative-Array-Keys/Associative-Array-Values of variable.
 | |
| %, e    - Perform Prompt/Shell expansion of the value.
 | |
| P       - Reinterpret values as a further variable name.
 | |
| 
 | |
| Example:
 | |
| echo ${(ops:\n:)"$(cut -d: -f5 /etc/passwd)"}
 | |
| echo ${(of)"$(cut -d: -f5 /etc/passwd)"}
 | |
| 	Here s flag define separator char (\n), 
 | |
| 
 | |
| Matching patterns against arrays:
 | |
| ${arr:#pattern}
 | |
| 	Each array element is matched against pattern and those that match are discarded.
 | |
| ${(M}arr:#pattern}
 | |
| 	Do the opposite - return only those elements that are matched.
 | |
| 
 | |
| echo ${(k)assoc_array}
 | |
| 	extract keys of associated array:
 | |
| echo $assoc_array
 | |
| echo ${(v)assoc_array}
 | |
| 	extract values of associated array:
 | |
| echo ${(kv)assoc_array}
 | |
| 	extract keys/values of associated array:
 | |
| assoc_array+=( key4 val4 ... )
 | |
| 	add other key/value pairs.
 | |
| unset 'assoc_array[keyN]'
 | |
| 	remove a key/value.
 | |
| echo ${(k)assoc_array[(r)val]}
 | |
| 	reverse lookup a single match.
 | |
| echo ${(k)assoc_array[(R)val]}
 | |
| 	to reverse lookup all matches.
 | |
| echo ${(v)assoc_array[(i)pattern}
 | |
| 	(i) allows us to use a pattern-match.
 | |
| 
 | |
| 
 | |
| Loading files to vars:
 | |
| input="$(cat config.ini)"
 | |
| input="$(<config.ini)"
 | |
| 	The equiv forms.
 | |
| 
 | |
| while read; do
 | |
| 	echo $REPLY
 | |
| done < config.ini
 | |
| 	Read one line at a time.
 | |
| 
 | |
| ps | while read; do
 | |
| 	echo $REPLY
 | |
| done
 | |
| 
 | |
| ps | while read pid tty time cmd; do
 | |
| 	echo $cmd $pid
 | |
| done
 | |
| 	The same, but using word-splitting.
 | |
| 
 | |
| while IFS=: read user pw uid gid name home shell; do
 | |
| 	echo $user $name
 | |
| done </etc/passwd
 | |
| 	... Using internal field separator (IFS) var, changed locally.
 | |
| 	
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| zsh options
 | |
| 
 | |
| ksh_arrays
 | |
| 	To make 0-based array element index access.
 | |
| octal_zeroes
 | |
| 	Enable octal zeroes.
 | |
| c_bases
 | |
| 	Output standard c-convension bases.
 | |
| 
 | |
| 
 | |
| zsh modules
 | |
| 
 | |
| zmodload zsh/mathfunc
 | |
| 	Load math functions (pi, atan, ...).
 | 
