1
一个文件的权限分成三类
1. 属主权限
2. 属组权限
3. 其他权限
读 | r | 100 |
写 | w | 010 |
执行 | x | 001 |
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*
#常用选项
-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
环境变量(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