Shell - commands 2

发布时间 2023-08-11 15:01:16作者: ZhangZhihuiAAA
zzh@ZZHPC:~$ ifconfig > a.txt
zzh@ZZHPC:~$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=53 time=48.7 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=53 time=50.0 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=53 time=53.2 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=53 time=49.4 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=53 time=48.0 ms
^C
--- 8.8.8.8 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 47.982/49.851/53.164/1.783 ms
zzh@ZZHPC:~$ ifconfig > b.txt
zzh@ZZHPC:~$ cmp a.txt b.txt
a.txt b.txt differ: byte 1242, line 24
zzh@ZZHPC:~$ cp /usr/bin/ls .
zzh@ZZHPC:~$ cmp /usr/bin/ls ls
zzh@ZZHPC:~$ sha256sum /usr/bin/ls ls
8696974df4fc39af88ee23e307139afc533064f976da82172de823c3ad66f444  /usr/bin/ls
8696974df4fc39af88ee23e307139afc533064f976da82172de823c3ad66f444  ls
zzh@ZZHPC:~$ echo 'aaa' > ls
zzh@ZZHPC:~$ cmp /usr/bin/ls ls
/usr/bin/ls ls differ: byte 1, line 1
zzh@ZZHPC:~$ sha256sum /usr/bin/ls ls
8696974df4fc39af88ee23e307139afc533064f976da82172de823c3ad66f444  /usr/bin/ls
17e682f060b5f8e47ea04c5c4855908b0a5ad612022260fe50e11ecb0cc0ab76  ls

zzh@ZZHPC:~$ diff --help Usage: diff [OPTION]... FILES Compare FILES line by line. Mandatory arguments to long options are mandatory for short options too. --normal output a normal diff (the default) -q, --brief report only when files differ -s, --report-identical-files report when two files are the same -c, -C NUM, --context[=NUM] output NUM (default 3) lines of copied context -u, -U NUM, --unified[=NUM] output NUM (default 3) lines of unified context -e, --ed output an ed script -n, --rcs output an RCS format diff -y, --side-by-side output in two columns -W, --width=NUM output at most NUM (default 130) print columns --left-column output only the left column of common lines --suppress-common-lines do not output common lines -p, --show-c-function show which C function each change is in -F, --show-function-line=RE show the most recent line matching RE --label LABEL use LABEL instead of file name and timestamp (can be repeated) -t, --expand-tabs expand tabs to spaces in output -T, --initial-tab make tabs line up by prepending a tab --tabsize=NUM tab stops every NUM (default 8) print columns --suppress-blank-empty suppress space or tab before empty output lines -l, --paginate pass output through 'pr' to paginate it -r, --recursive recursively compare any subdirectories found --no-dereference don't follow symbolic links -N, --new-file treat absent files as empty --unidirectional-new-file treat absent first files as empty --ignore-file-name-case ignore case when comparing file names --no-ignore-file-name-case consider case when comparing file names -x, --exclude=PAT exclude files that match PAT -X, --exclude-from=FILE exclude files that match any pattern in FILE -S, --starting-file=FILE start with FILE when comparing directories --from-file=FILE1 compare FILE1 to all operands; FILE1 can be a directory --to-file=FILE2 compare all operands to FILE2; FILE2 can be a directory -i, --ignore-case ignore case differences in file contents -E, --ignore-tab-expansion ignore changes due to tab expansion -Z, --ignore-trailing-space ignore white space at line end -b, --ignore-space-change ignore changes in the amount of white space -w, --ignore-all-space ignore all white space -B, --ignore-blank-lines ignore changes where lines are all blank -I, --ignore-matching-lines=RE ignore changes where all lines match RE -a, --text treat all files as text --strip-trailing-cr strip trailing carriage return on input -D, --ifdef=NAME output merged file with '#ifdef NAME' diffs --GTYPE-group-format=GFMT format GTYPE input groups with GFMT --line-format=LFMT format all input lines with LFMT --LTYPE-line-format=LFMT format LTYPE input lines with LFMT These format options provide fine-grained control over the output of diff, generalizing -D/--ifdef. LTYPE is 'old', 'new', or 'unchanged'. GTYPE is LTYPE or 'changed'. GFMT (only) may contain: %< lines from FILE1 %> lines from FILE2 %= lines common to FILE1 and FILE2 %[-][WIDTH][.[PREC]]{doxX}LETTER printf-style spec for LETTER LETTERs are as follows for new group, lower case for old group: F first line number L last line number N number of lines = L-F+1 E F-1 M L+1 %(A=B?T:E) if A equals B then T else E LFMT (only) may contain: %L contents of line %l contents of line, excluding any trailing newline %[-][WIDTH][.[PREC]]{doxX}n printf-style spec for input line number Both GFMT and LFMT may contain: %% % %c'C' the single character C %c'\OOO' the character with octal code OOO C the character C (other characters represent themselves) -d, --minimal try hard to find a smaller set of changes --horizon-lines=NUM keep NUM lines of the common prefix and suffix --speed-large-files assume large files and many scattered small changes --color[=WHEN] color output; WHEN is 'never', 'always', or 'auto'; plain --color means --color='auto' --palette=PALETTE the colors to use when --color is active; PALETTE is a colon-separated list of terminfo capabilities --help display this help and exit -v, --version output version information and exit FILES are 'FILE1 FILE2' or 'DIR1 DIR2' or 'DIR FILE' or 'FILE DIR'. If --from-file or --to-file is given, there are no restrictions on FILE(s). If a FILE is '-', read standard input. Exit status is 0 if inputs are the same, 1 if different, 2 if trouble. Report bugs to: bug-diffutils@gnu.org GNU diffutils home page: <https://www.gnu.org/software/diffutils/> General help using GNU software: <https://www.gnu.org/gethelp/>
zzh@ZZHPC:~$ patch --help Usage: patch [OPTION]... [ORIGFILE [PATCHFILE]] Input options: -p NUM --strip=NUM Strip NUM leading components from file names. -F LINES --fuzz LINES Set the fuzz factor to LINES for inexact matching. -l --ignore-whitespace Ignore white space changes between patch and input. -c --context Interpret the patch as a context difference. -e --ed Interpret the patch as an ed script. -n --normal Interpret the patch as a normal difference. -u --unified Interpret the patch as a unified difference. -N --forward Ignore patches that appear to be reversed or already applied. -R --reverse Assume patches were created with old and new files swapped. -i PATCHFILE --input=PATCHFILE Read patch from PATCHFILE instead of stdin. Output options: -o FILE --output=FILE Output patched files to FILE. -r FILE --reject-file=FILE Output rejects to FILE. -D NAME --ifdef=NAME Make merged if-then-else output using NAME. --merge Merge using conflict markers instead of creating reject files. -E --remove-empty-files Remove output files that are empty after patching. -Z --set-utc Set times of patched files, assuming diff uses UTC (GMT). -T --set-time Likewise, assuming local time. --quoting-style=WORD output file names using quoting style WORD. Valid WORDs are: literal, shell, shell-always, c, escape. Default is taken from QUOTING_STYLE env variable, or 'shell' if unset. Backup and version control options: -b --backup Back up the original contents of each file. --backup-if-mismatch Back up if the patch does not match exactly. --no-backup-if-mismatch Back up mismatches only if otherwise requested. -V STYLE --version-control=STYLE Use STYLE version control. STYLE is either 'simple', 'numbered', or 'existing'. -B PREFIX --prefix=PREFIX Prepend PREFIX to backup file names. -Y PREFIX --basename-prefix=PREFIX Prepend PREFIX to backup file basenames. -z SUFFIX --suffix=SUFFIX Append SUFFIX to backup file names. -g NUM --get=NUM Get files from RCS etc. if positive; ask if negative. Miscellaneous options: -t --batch Ask no questions; skip bad-Prereq patches; assume reversed. -f --force Like -t, but ignore bad-Prereq patches, and assume unreversed. -s --quiet --silent Work silently unless an error occurs. --verbose Output extra information about the work being done. --dry-run Do not actually change any files; just print what would happen. --posix Conform to the POSIX standard. -d DIR --directory=DIR Change the working directory to DIR first. --reject-format=FORMAT Create 'context' or 'unified' rejects. --binary Read and write data in binary mode. --read-only=BEHAVIOR How to handle read-only input files: 'ignore' that they are read-only, 'warn' (default), or 'fail'. -v --version Output version info. --help Output this help. Report bugs to <bug-patch@gnu.org>.
zzh@ZZHPC:~$ echo 'aaa' > a.txt
zzh@ZZHPC:~$ echo 'bbb' > b.txt
zzh@ZZHPC:~$ diff a.txt b.txt
1c1
< aaa
---
> bbb
zzh@ZZHPC:~$ echo 'AAA' >> a.txt
zzh@ZZHPC:~$ diff a.txt b.txt
1,2c1
< aaa
< AAA
---
> bbb
zzh@ZZHPC:~$ diff a.txt b.txt > a_b_diff.txt
zzh@ZZHPC:~$ patch a.txt a_b_diff.txt
patching file a.txt
zzh@ZZHPC:~$ cat a.txt
bbb
zzh@ZZHPC:~$ echo 'BBB' >> b.txt
zzh@ZZHPC:~$ diff a.txt b.txt
1a2
> BBB
zzh@ZZHPC:~$ diff a.txt b.txt > a_b_diff.txt
zzh@ZZHPC:~$ patch a.txt a_b_diff.txt
patching file a.txt
zzh@ZZHPC:~$ cat a.txt
bbb
BBB