work2

1

一个文件的权限分成三类

1. 属主权限

2. 属组权限

3. 其他权限

r100
w010
执行x001

chown

bear@ubuntu44:~$ touch 1.txt
bear@ubuntu44:~$ ll
total 3188
drwxr-x--- 6 bear bear    4096 Aug 29 15:51 ./
drwxr-xr-x 5 root root    4096 Aug 29 15:50 ../
-rw-rw-r-- 1 bear bear       0 Aug 29 15:51 1.txt
bear@ubuntu44:~$ chown tom. 1.txt 
chown: changing ownership of '1.txt': Operation not permitted
bear@ubuntu44:~$ sudo chown tom. 1.txt 
bear@ubuntu44:~$ ll
total 3188
drwxr-x--- 6 bear bear    4096 Aug 29 15:51 ./
drwxr-xr-x 5 root root    4096 Aug 29 15:50 ../
-rw-rw-r-- 1 tom  tom        0 Aug 29 15:51 1.txt
bear@ubuntu44:~$ sudo chown tom.sid -R dird
bear@ubuntu44:~$ ll
total 3192
drwxr-x--- 7 bear bear    4096 Aug 29 15:56 ./
drwxr-xr-x 5 root root    4096 Aug 29 15:50 ../
-rw-rw-r-- 1 tom  tom        0 Aug 29 15:51 1.txt
-rw-rw-r-- 1 bear bear       0 Aug 25 20:35 a.out
-rw------- 1 bear bear    6172 Aug 29 10:49 .bash_history
-rw-r--r-- 1 bear bear     220 Jan  7  2022 .bash_logout
-rw-r--r-- 1 bear bear    3771 Jan  7  2022 .bashrc
drwx------ 3 bear bear    4096 Aug 26 21:52 .cache/
drwxrwxr-x 4 bear bear    4096 Aug 29 10:59 dirab/
drwxrwxr-x 2 tom  sid     4096 Aug 29 15:57 dird/
bear@ubuntu44:~$ ll dird
total 8
drwxrwxr-x 2 tom  sid  4096 Aug 29 15:57 ./
drwxr-x--- 7 bear bear 4096 Aug 29 15:56 ../
-rw-rw-r-- 1 tom  sid     0 Aug 29 15:57 1.txt
-rw-rw-r-- 1 tom  sid     0 Aug 29 15:57 2.txt
bear@ubuntu44:~$ sudo chown --reference=1.txt 2.txt
bear@ubuntu44:~$ ls
1.txt  2.txt  a.out  dirab  dird  loglink  loglink1  main.exe
bear@ubuntu44:~$ ll
total 3192
drwxr-x--- 7 bear bear    4096 Aug 29 16:04 ./
drwxr-xr-x 5 root root    4096 Aug 29 15:50 ../
-rw-rw-r-- 1 tom  tom        0 Aug 29 15:51 1.txt
-rw-rw-r-- 1 tom  tom        0 Aug 29 16:04 2.txt

chmod

bear@ubuntu44:~$ sudo chmod a= 1.txt
bear@ubuntu44:~$ ll 1.txt
---------- 1 tom tom 0 Aug 29 15:51 1.txt
bear@ubuntu44:~$ sudo chmod u+rwx 1.txt 
bear@ubuntu44:~$ ll 1.txt
-rwx------ 1 tom tom 0 Aug 29 15:51 1.txt*
bear@ubuntu44:~$ sudo chmod u-rw 1.txt 
bear@ubuntu44:~$ ll 1.txt
---x------ 1 tom tom 0 Aug 29 15:51 1.txt*
ACL 相关命令
#常用选项
-m|--modify=acl         #修改acl权限
-M|--modify-file=file #从文件读取规则
-x|--remove=acl         #删除文件acl 权限
-X|--remove-file=file #从文件读取规则
-b|--remove-all         #删除文件所有acl权限
-k|--remove-default     #删除默认acl规则
--set=acl               #用新规则替换旧规则,会删除原有ACL项,用新的替代,一定要包含
UGO的设置,不能象 -m一样只有 ACL
--set-file=file         #从文件读取新规则
--mask                #重新计算mask值
-n|--no-mask           #不重新计算mask值
-d|--default           #在目录上设置默认acl
-R|--recursive         #递归执行
-L|--logical           #将acl 应用在软链接指向的目标文件上,与-R一起使用
-P|--physical         #将acl 不应用在软链接指向的目标文件上,与-R一起使用
bear@ubuntu44:~$ getfacl 1.txt 
# file: 1.txt
# owner: tom
# group: tom
user::--x
group::---
other::---

bear@ubuntu44:~$ setfacl -m u:tom:rwx 1.txt 
setfacl: 1.txt: Operation not permitted
bear@ubuntu44:~$ sudo setfacl -m u:tom:rwx 1.txt 
[sudo] password for bear: 
bear@ubuntu44:~$ getfacl 1.txt 
# file: 1.txt
# owner: tom
# group: tom
user::--x
user:tom:rwx
group::---
mask::rwx
other::---
bear@ubuntu44:~$ sudo sudo setfacl -x u:tom 1.txt 
[sudo] password for bear: 
bear@ubuntu44:~$ getfacl 1.txt 
# file: 1.txt
# owner: tom
# group: tom
user::--x
group::---
mask::---
other::---

bear@ubuntu44:~$ setfacl -b 1.txt 
setfacl: 1.txt: Operation not permitted
bear@ubuntu44:~$ sudo setfacl -b 1.txt 
bear@ubuntu44:~$ getfacl 1.txt 
# file: 1.txt
# owner: tom
# group: tom
user::--x
group::---
other::---

2

2.1

使用vim file打开文件进入命令模式,然后输入:wq即可退出文件

2.2

输入i进入插入模式,ESC回到命令模式

2.3

ESC回到命令模式,然后:wq退出

2.4

3

文本处理工具


cat
用途:显示文件内容或将多个文件连接起来。
示例:cat file.txt
head
用途:显示文件的前几行,默认是前 10 行。
示例:head file.txt
tail
用途:显示文件的最后几行,默认是最后 10 行。也可以用来监视文件的实时增长。
示例:tail -f file.txt
more
用途:分页显示文件内容。
示例:more file.txt
less
用途:类似于 more,但提供了更多的功能,如向前翻页等。
示例:less file.txt
paste
用途:将多个文件的行合并到一起。
示例:paste -d ',' file1.txt file2.txt
cut
用途:从每行中切割出指定的字段或字符。
示例:cut -d ':' -f 1 /etc/passwd
tr
用途:转换或删除文件中的字符。
示例:tr '[:upper:]' '[:lower:]' < file.txt
sort
用途:对文件中的行进行排序。
示例:sort file.txt
uniq
用途:过滤相邻重复的行。
示例:uniq file.txt
fold
用途:将行折叠成固定长度。
示例:fold -w 80 file.txt


文件查找工具


find
用途:在目录树中查找文件。
示例:find /usr/bin -name '*.py'
locate
用途:快速查找文件路径。
示例:locate *.txt
whereis
用途:查找二进制文件、源代码文件和手册页的位置。
示例:whereis grep
which
用途:查找可执行文件的位置。
示例:which grep


文本处理三剑客


grep
用途:在文件中搜索匹配正则表达式的行。
示例:grep 'pattern' file.txt
awk
用途:强大的文本处理工具,可以用来格式化、过滤和生成报告。
示例:awk '{print $1}' file.txt
sed
用途:流编辑器,用于执行文本替换和其他基本文本转换。
示例:sed 's/pattern/replacement/g' file.txt

4

基本正则表达式

基本正则表达式的特点在于它需要转义某些元字符。以下是 BRE 中的一些重要元字符及其用法:

  • . 匹配任何单个字符(除了换行符)

    • 示例:grep "a.c" file 将匹配 "abc"、"acc" 等。
  • \^ 匹配行的开始位置

    • 示例:grep "^abc" file 将匹配所有以 "abc" 开头的行。
  • \$ 匹配行的结束位置

    • 示例:grep "abc\$" file 将匹配所有以 "abc" 结尾的行。
  • \* 当紧跟一个字符后,匹配该字符的零次或多次出现

    • 示例:grep "a*c" file 将匹配 "ac"、"abc"、"aac" 等。
  • \? 当紧跟一个字符后,匹配该字符的零次或一次出现

    • 示例:grep "a?c" file 将匹配 "ac" 和 "c"。
  • \{n\} 指定前面的字符正好出现 n 次

    • 示例:grep "a\{3\}b" file 将匹配 "aaab"。
  • \{n,\} 指定前面的字符至少出现 n 次

    • 示例:grep "a\{2,\}b" file 将匹配 "aab"、"aaab" 等。
  • \{n,m\} 指定前面的字符出现 n 到 m 次

    • 示例:grep "a\{2,4\}b" file 将匹配 "aab"、"aaab"、"aaaab"。
  • \. 要匹配实际的点字符,需要用反斜杠转义

    • 示例:grep "\." file 将匹配所有的点字符。
  • [[:space:]] 匹配空白字符

    • 示例:grep "[[:space:]]" file 将匹配空格、制表符等。
  • [[:alpha:]] 匹配字母字符

    • 示例:grep "[[:alpha:]]" file 将匹配所有的字母字符。

扩展正则表达式

扩展正则表达式简化了某些表达式,并允许更自然的语法。以下是一些 ERE 特有的特性:

  • . 同 BRE,匹配任何单个字符(除了换行符)。

  • ^ 匹配行的开始位置

  • $ 匹配行的结束位置

  • * 当紧跟一个字符后,匹配该字符的零次或多次出现

  • + 当紧跟一个字符后,匹配该字符的一次或多次出现

    • 示例:grep "a+c" file 将匹配 "ac"、"abc"、"aac" 等。
  • ? 当紧跟一个字符后,匹配该字符的零次或一次出现

  • | 表示或运算

    • 示例:grep "abc|def" file 将匹配包含 "abc" 或 "def" 的行。
  • () 组合模式

    • 示例:grep "(abc|xyz)" file 将匹配包含 "abc" 或 "xyz" 的行。
  • [] 定义字符类

    • 示例:grep "[a-z]" file 将匹配任何小写字母。

5

bear@ubuntu22:~$ sed -n "50p" test 
hello world
bear@ubuntu22:~$ sed -i "s/hello world/nihao/" test 
bear@ubuntu22:~$ sed -n "50p" test 
nihao

7

[bear@ubuntu22 ~]$sed "G" passwd
root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

bin:x:2:2:bin:/bin:/usr/sbin/nologin

sys:x:3:3:sys:/dev:/usr/sbin/nologin

sync:x:4:65534:sync:/bin:/bin/sync

games:x:5:60:games:/usr/games:/usr/sbin/nologin

man:x:6:12:man:/var/cache/man:/usr/sbin/nologin

lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin

mail:x:8:8:mail:/var/mail:/usr/sbin/nologin

news:x:9:9:news:/var/spool/news:/usr/sbin/nologin

uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin

proxy:x:13:13:proxy:/bin:/usr/sbin/nologin

www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

backup:x:34:34:backup:/var/backups:/usr/sbin/nologin

list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin

irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin

gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin

nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin

_apt:x:100:65534::/nonexistent:/usr/sbin/nologin

systemd-network:x:101:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin

systemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin

messagebus:x:103:104::/nonexistent:/usr/sbin/nologin

systemd-timesync:x:104:105:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin

pollinate:x:105:1::/var/cache/pollinate:/bin/false

sshd:x:106:65534::/run/sshd:/usr/sbin/nologin

syslog:x:107:113::/home/syslog:/usr/sbin/nologin

uuidd:x:108:114::/run/uuidd:/usr/sbin/nologin

tcpdump:x:109:115::/nonexistent:/usr/sbin/nologin

tss:x:110:116:TPM software stack,,,:/var/lib/tpm:/bin/false

landscape:x:111:117::/var/lib/landscape:/usr/sbin/nologin

fwupd-refresh:x:112:118:fwupd-refresh user,,,:/run/systemd:/usr/sbin/nologin

usbmux:x:113:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin

bear:x:1000:1000:bear:/home/bear:/bin/bash

lxd:x:999:100::/var/snap/lxd/common/lxd:/bin/false

tom:x:1001:1001::/home/tom:/bin/sh

sid:x:1002:1002::/home/sid:/bin/sh

_rpc:x:114:65534::/run/rpcbind:/usr/sbin/nologin

statd:x:115:65534::/var/lib/nfs:/usr/sbin/nologin

dnsmasq:x:116:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin

8

[bear@ubuntu22 ~]$sed -nE "s/^.//gp" passwd 
oot:x:0:0:root:/root:/bin/bash
aemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
in:x:2:2:bin:/bin:/usr/sbin/nologin
ys:x:3:3:sys:/dev:/usr/sbin/nologin
ync:x:4:65534:sync:/bin:/bin/sync
ames:x:5:60:games:/usr/games:/usr/sbin/nologin
an:x:6:12:man:/var/cache/man:/usr/sbin/nologin
p:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
ail:x:8:8:mail:/var/mail:/usr/sbin/nologin
ews:x:9:9:news:/var/spool/news:/usr/sbin/nologin
ucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
roxy:x:13:13:proxy:/bin:/usr/sbin/nologin
ww-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
ackup:x:34:34:backup:/var/backups:/usr/sbin/nologin
ist:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
rc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
nats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
obody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
apt:x:100:65534::/nonexistent:/usr/sbin/nologin
ystemd-network:x:101:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
ystemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
essagebus:x:103:104::/nonexistent:/usr/sbin/nologin
ystemd-timesync:x:104:105:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
ollinate:x:105:1::/var/cache/pollinate:/bin/false
shd:x:106:65534::/run/sshd:/usr/sbin/nologin
yslog:x:107:113::/home/syslog:/usr/sbin/nologin
uidd:x:108:114::/run/uuidd:/usr/sbin/nologin
cpdump:x:109:115::/nonexistent:/usr/sbin/nologin
ss:x:110:116:TPM software stack,,,:/var/lib/tpm:/bin/false
andscape:x:111:117::/var/lib/landscape:/usr/sbin/nologin
wupd-refresh:x:112:118:fwupd-refresh user,,,:/run/systemd:/usr/sbin/nologin
sbmux:x:113:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
ear:x:1000:1000:bear:/home/bear:/bin/bash
xd:x:999:100::/var/snap/lxd/common/lxd:/bin/false
om:x:1001:1001::/home/tom:/bin/sh
id:x:1002:1002::/home/sid:/bin/sh
rpc:x:114:65534::/run/rpcbind:/usr/sbin/nologin
tatd:x:115:65534::/var/lib/nfs:/usr/sbin/nologin
nsmasq:x:116:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin

9

[bear@ubuntu22 ~]$sed -i -E 's/^(.)./\1/p' passwd
[bear@ubuntu22 ~]$cat passwd
rot:x:0:0:root:/root:/bin/bash
rot:x:0:0:root:/root:/bin/bash
demon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
demon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bn:x:2:2:bin:/bin:/usr/sbin/nologin
bn:x:2:2:bin:/bin:/usr/sbin/nologin
ss:x:3:3:sys:/dev:/usr/sbin/nologin
ss:x:3:3:sys:/dev:/usr/sbin/nologin
snc:x:4:65534:sync:/bin:/bin/sync
snc:x:4:65534:sync:/bin:/bin/sync
gmes:x:5:60:games:/usr/games:/usr/sbin/nologin
gmes:x:5:60:games:/usr/games:/usr/sbin/nologin
mn:x:6:12:man:/var/cache/man:/usr/sbin/nologin
mn:x:6:12:man:/var/cache/man:/usr/sbin/nologin
l:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
l:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mil:x:8:8:mail:/var/mail:/usr/sbin/nologin
mil:x:8:8:mail:/var/mail:/usr/sbin/nologin
nws:x:9:9:news:/var/spool/news:/usr/sbin/nologin
nws:x:9:9:news:/var/spool/news:/usr/sbin/nologin
ucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
ucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
poxy:x:13:13:proxy:/bin:/usr/sbin/nologin
poxy:x:13:13:proxy:/bin:/usr/sbin/nologin
ww-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
ww-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
bckup:x:34:34:backup:/var/backups:/usr/sbin/nologin
bckup:x:34:34:backup:/var/backups:/usr/sbin/nologin
lst:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
lst:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
ic:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
ic:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
gats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nbody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
nbody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_pt:x:100:65534::/nonexistent:/usr/sbin/nologin
_pt:x:100:65534::/nonexistent:/usr/sbin/nologin
sstemd-network:x:101:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
sstemd-network:x:101:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
sstemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
sstemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
mssagebus:x:103:104::/nonexistent:/usr/sbin/nologin
mssagebus:x:103:104::/nonexistent:/usr/sbin/nologin
sstemd-timesync:x:104:105:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
sstemd-timesync:x:104:105:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
pllinate:x:105:1::/var/cache/pollinate:/bin/false
pllinate:x:105:1::/var/cache/pollinate:/bin/false
shd:x:106:65534::/run/sshd:/usr/sbin/nologin
shd:x:106:65534::/run/sshd:/usr/sbin/nologin
sslog:x:107:113::/home/syslog:/usr/sbin/nologin
sslog:x:107:113::/home/syslog:/usr/sbin/nologin
uidd:x:108:114::/run/uuidd:/usr/sbin/nologin
uidd:x:108:114::/run/uuidd:/usr/sbin/nologin
tpdump:x:109:115::/nonexistent:/usr/sbin/nologin
tpdump:x:109:115::/nonexistent:/usr/sbin/nologin
ts:x:110:116:TPM software stack,,,:/var/lib/tpm:/bin/false
ts:x:110:116:TPM software stack,,,:/var/lib/tpm:/bin/false
lndscape:x:111:117::/var/lib/landscape:/usr/sbin/nologin
lndscape:x:111:117::/var/lib/landscape:/usr/sbin/nologin
fupd-refresh:x:112:118:fwupd-refresh user,,,:/run/systemd:/usr/sbin/nologin
fupd-refresh:x:112:118:fwupd-refresh user,,,:/run/systemd:/usr/sbin/nologin
ubmux:x:113:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
ubmux:x:113:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
bar:x:1000:1000:bear:/home/bear:/bin/bash
bar:x:1000:1000:bear:/home/bear:/bin/bash
ld:x:999:100::/var/snap/lxd/common/lxd:/bin/false
ld:x:999:100::/var/snap/lxd/common/lxd:/bin/false
tm:x:1001:1001::/home/tom:/bin/sh
tm:x:1001:1001::/home/tom:/bin/sh
sd:x:1002:1002::/home/sid:/bin/sh
sd:x:1002:1002::/home/sid:/bin/sh
_pc:x:114:65534::/run/rpcbind:/usr/sbin/nologin
_pc:x:114:65534::/run/rpcbind:/usr/sbin/nologin
satd:x:115:65534::/var/lib/nfs:/usr/sbin/nologin
satd:x:115:65534::/var/lib/nfs:/usr/sbin/nologin
dsmasq:x:116:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
dsmasq:x:116:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin

10

[bear@ubuntu22 ~]$sed -nE "s/.$//gp" passwd 
root:x:0:0:root:/root:/bin/bas
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologi
bin:x:2:2:bin:/bin:/usr/sbin/nologi
sys:x:3:3:sys:/dev:/usr/sbin/nologi
sync:x:4:65534:sync:/bin:/bin/syn
games:x:5:60:games:/usr/games:/usr/sbin/nologi
man:x:6:12:man:/var/cache/man:/usr/sbin/nologi
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologi
mail:x:8:8:mail:/var/mail:/usr/sbin/nologi
news:x:9:9:news:/var/spool/news:/usr/sbin/nologi
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologi
proxy:x:13:13:proxy:/bin:/usr/sbin/nologi
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologi
backup:x:34:34:backup:/var/backups:/usr/sbin/nologi
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologi
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologi
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologi
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologi
_apt:x:100:65534::/nonexistent:/usr/sbin/nologi
systemd-network:x:101:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologi
systemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologi
messagebus:x:103:104::/nonexistent:/usr/sbin/nologi
systemd-timesync:x:104:105:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologi
pollinate:x:105:1::/var/cache/pollinate:/bin/fals
sshd:x:106:65534::/run/sshd:/usr/sbin/nologi
syslog:x:107:113::/home/syslog:/usr/sbin/nologi
uuidd:x:108:114::/run/uuidd:/usr/sbin/nologi
tcpdump:x:109:115::/nonexistent:/usr/sbin/nologi
tss:x:110:116:TPM software stack,,,:/var/lib/tpm:/bin/fals
landscape:x:111:117::/var/lib/landscape:/usr/sbin/nologi
fwupd-refresh:x:112:118:fwupd-refresh user,,,:/run/systemd:/usr/sbin/nologi
usbmux:x:113:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologi
bear:x:1000:1000:bear:/home/bear:/bin/bas
lxd:x:999:100::/var/snap/lxd/common/lxd:/bin/fals
tom:x:1001:1001::/home/tom:/bin/s
sid:x:1002:1002::/home/sid:/bin/s
_rpc:x:114:65534::/run/rpcbind:/usr/sbin/nologi
statd:x:115:65534::/var/lib/nfs:/usr/sbin/nologi
dnsmasq:x:116:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologi

11

[bear@ubuntu22 ~]$sed -i -E "s/.(.)$/\1/" passwd
[bear@ubuntu22 ~]$cat passwd
root:x:0:0:root:/root:/bin/bah
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologn
bin:x:2:2:bin:/bin:/usr/sbin/nologn
sys:x:3:3:sys:/dev:/usr/sbin/nologn
sync:x:4:65534:sync:/bin:/bin/syc
games:x:5:60:games:/usr/games:/usr/sbin/nologn
man:x:6:12:man:/var/cache/man:/usr/sbin/nologn
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologn
mail:x:8:8:mail:/var/mail:/usr/sbin/nologn
news:x:9:9:news:/var/spool/news:/usr/sbin/nologn
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologn
proxy:x:13:13:proxy:/bin:/usr/sbin/nologn
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologn
backup:x:34:34:backup:/var/backups:/usr/sbin/nologn
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologn
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologn
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologn
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologn
_apt:x:100:65534::/nonexistent:/usr/sbin/nologn
systemd-network:x:101:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologn
systemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologn
messagebus:x:103:104::/nonexistent:/usr/sbin/nologn
systemd-timesync:x:104:105:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologn
pollinate:x:105:1::/var/cache/pollinate:/bin/fale
sshd:x:106:65534::/run/sshd:/usr/sbin/nologn
syslog:x:107:113::/home/syslog:/usr/sbin/nologn
uuidd:x:108:114::/run/uuidd:/usr/sbin/nologn
tcpdump:x:109:115::/nonexistent:/usr/sbin/nologn
tss:x:110:116:TPM software stack,,,:/var/lib/tpm:/bin/fale
landscape:x:111:117::/var/lib/landscape:/usr/sbin/nologn
fwupd-refresh:x:112:118:fwupd-refresh user,,,:/run/systemd:/usr/sbin/nologn
usbmux:x:113:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologn
bear:x:1000:1000:bear:/home/bear:/bin/bah
lxd:x:999:100::/var/snap/lxd/common/lxd:/bin/fale
tom:x:1001:1001::/home/tom:/bin/h
sid:x:1002:1002::/home/sid:/bin/h
_rpc:x:114:65534::/run/rpcbind:/usr/sbin/nologn
statd:x:115:65534::/var/lib/nfs:/usr/sbin/nologn
dnsmasq:x:116:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologn

12

命名要求
区分大小写
不能使用程序中的保留字和内置变量
只能使用数字、字母及下划线,且不能以数字开头,注意:不支持短横线 “ - ” ,和主机名相反
命名习惯
见名知义,用英文单词命名,并体现出实际作用,不要用简写,如: ATM
变量名大写
局部变量小写
函数名小写
大驼峰 StudentFirstName ,由多个单词组成,且每个单词的首字母是大写,其它小写
小驼峰 studentFirstName ,由多个单词组成,第一个单词的首字母小写,后续每个单词的首字母
是大写,其它小写
下划线 : student_first_name
环境变量(Environment Variables)
  • 定义:环境变量对于您登录的整个会话都是有效的,它们在子进程中也是可用的。
  • 使用:使用export命令来设置环境变量。例如:
    export MY_VAR="my_value"
    #导入文件中的所有环境变量
    . filename
    source filename
    
  • 访问:使用$符号来访问环境变量。例如:
    echo $PATH
    
位置变量(Positional Parameters)
  • 定义:位置变量是Shell脚本内置的变量,用于存储脚本的参数。
  • 使用
    • $0:脚本名称。
    • $1 - $9:脚本的第一到第九个参数。
    • $#:传递给脚本的参数个数。
    • $*:所有位置参数的单个字符串。
    • $@:所有位置参数的单独引用字符串。
  • #!/bin/bash
    echo "Script Name: $0"
    echo "First Parameter: $1"
    
只读变量(Read-only Variables)
  • 定义:只读变量一旦被设置,其值就不能更改。
  • 使用:使用readonly命令来设置只读变量。例如:
    readonly MY_VAR="readonly_value"
    declare -r name
  • 尝试修改:如果尝试修改只读变量,会收到错误。
局部变量(Local Variables)
  • 定义:局部变量仅在定义它们的函数内部有效。
  • 使用:在函数内部使用local关键字来定义局部变量。例如:
    my_function() {
      local MY_LOCAL_VAR="local_value"
      echo $MY_LOCAL_VAR
    }
    
状态变量(Status Variables)
  • 定义:状态变量通常用于存储命令的执行状态。
  • 使用
    • $?:上一条命令的退出状态。
    • $!:最后一个后台命令的进程ID。
#./111不存在
ls ./111
echo "Exit status: $?"

13

#!/bin/bash

total_foot=80
total_head=30

let rabbit=(80-60)/2
let chicken=30-$rabbit
echo "chicken=$chicken"
echo "rabbit=$rabbit"

14

#!/bin/bash

for i in {1..100}; do
    username="user$i"
    if id "$username" &> /dev/null; then
        echo "$username has already been created."
    else
        useradd -m "$username"
        if [ $? -eq 0 ]; then
            echo "Success $username."
        else
            echo "Failed $username."
        fi
    fi
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赛博猴子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值