From 4c9c9ab88cec6b8c9364917564484d9170a55b3c Mon Sep 17 00:00:00 2001 From: garhve Date: Sat, 10 Dec 2022 08:59:16 +0800 Subject: change blog content and add font --- posts/6/index.html | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'posts/6') diff --git a/posts/6/index.html b/posts/6/index.html index 2828d15..4baa0c6 100644 --- a/posts/6/index.html +++ b/posts/6/index.html @@ -149,7 +149,7 @@ Redirection File Redirection 0 is standard input, 1 is standard output, 2 is sta

the connection to the stream used by FD y is copied to FD x

curl cip.cc > result 2>&1

ping localhost > result 2>&1

-
# exec can be used to change the file descriptors of bash itself,
+
# exec can be used to change the file descriptors of bash itself,
 # and if you use an x that doesn't yet exist,
 # bash will create a new file descriptor ("plug") for you with that number.
 # - in command is to close new FD 3 we'd created before.
@@ -172,13 +172,13 @@ Redirection File Redirection 0 is standard input, 1 is standard output, 2 is sta
 

ping localhost &>result

Here documents

-
<<delimiter
+
<<delimiter
 	Here document
 delimiter
 

Make FD 0 read from the string between delimiters

Here-Documents are great for reading blocks of text to command line.

-
cat << EOF
+
cat << EOF
 this is within here document
 I can write as many lines as I like
 and terminate with line of demiliter only
@@ -189,7 +189,7 @@ Redirection File Redirection 0 is standard input, 1 is standard output, 2 is sta
 

Make FD 0 read from the string

Here strings are very similar to here documents but more concise. They are generally preferred over here documents.

-
cat <<< "This,
+
cat <<< "This,
 is the here strings. tab will also be read."
 

Moving file decipher

@@ -197,7 +197,7 @@ Redirection File Redirection 0 is standard input, 1 is standard output, 2 is sta

Replace FD x with FD y and close FD y

Easy way of [x]>&y, y>&-

-
# 3>&1-: copy FD 1 to FD 3 and close FD 1.
+
# 3>&1-: copy FD 1 to FD 3 and close FD 1.
 #  >&3-: copy FD 3 to FD 1 and close FD 3.
 exec 3>&1- >mylog; echo moo; exec >&3-
 
@@ -206,7 +206,7 @@ Redirection File Redirection 0 is standard input, 1 is standard output, 2 is sta

Open FD x for both reading and writing to file

The file descriptor at x is opened with a stream to the file that can be used for writing as well as reading bytes. Usually you’ll use two file descriptors for this. One of the rare cases where this is useful is when setting up a stream with a read/write device such as a network socket.

-
exec 5<>aFile
+
exec 5<>aFile
 cat >&5 "Hello world"	# make FD 1 write to where FD 5 currently writing, copy file descriptor FD 5 to FD 1
 cat <&5			# make FD 0 read from where FD 5 currently reading, copy file descriptor FD 5 to FD 0, then cat will send content to FD 1
 
@@ -248,7 +248,7 @@ zsh. : setopt extendedglob

Command Substitution

we can expansion commands within commands, but must use double-quote "" instead of ''

-
# this will output contents in hello.h to screen
+
# this will output contents in hello.h to screen
 cat hello.h
 
 # this will expand `cat hello.h` to real contents in 
@@ -296,7 +296,7 @@ zsh. : setopt extendedglob
 

In addition, we can put braces ({ and }) around our parameter, which indicates where variable is about to begin and end.

e.g. name=orange; echo there are 4 "${name}s" there are 4 oranges.

-
name=orange
+
name=orange
 echo "there are 4 ${name}s."	# there are 4 oranges.
 echo "there are 4 $names."	# there are 4 .
 

here, we put {}aroundnameso that bash can be told that suffix s is not a part of variable. otherwise, it will treat names as parameter and looking for its value, which is none in our example.

@@ -305,7 +305,7 @@ zsh. : setopt extendedglob

While expanding a parameter, it is possible to apply an operator to the expanding value without alternate original value.

I use these mostly

-
# remove string before pattern   	${name#pattern} shortest	${name##pattern} longest
+
# remove string before pattern   	${name#pattern} shortest	${name##pattern} longest
 # remove string after pattern    	${name%pattern} longest 	${name%%pattern} shortest
 # delete first matching pattern		${name/pattern}
 # delete all matching pattern		${name//pattern}
-- 
cgit v1.2.3-70-g09d2