重定向
1 | ls /opt/abc >/dev/null 2>&1 # /dev/null位桶, 2>& 须连着 |
扩展
1 | # *扩展 |
1 | # 路径扩展 |
1 | # 波浪线扩展为家目录 |
1 | # 算术扩展 $ |
以上算术扩展、参数扩展、命令替换都视作$表达式,相当于变量,非单引号包围可被解析,否则不解析:
1 | [root@localhost zlz]# echo '$(which cat)' |
1 | # {}扩展 |
特殊权限
setuid
应用于可执行文件,会将有效用户ID(effective user ID)从真实用户(实际执行程序的用户)ID更改为程序属主的有效用户ID。
setgid
会将有效组ID(effective group ID)从真实用户的真实组ID(real group ID)更改为文件属主的有效组ID。
sticky
用于将可执行文件标记为“不可交换”。Linux会忽略文件上设置的粘滞位,如果对目录设置了粘滞位,则能够阻止用户删除或者重命名其中的文件,除非用户是该目录的属主,或者是文件的属主,又或者是超级用户。粘滞位常用来控制对共享目录(如/tmp)的访问。
cp
cp不加选项参数复制时,访问时间、修改时间都会变,加上 -p
或 --preserve
可保持,但change时间(状态改变时间)是按最新的。状态改变时间通过chmod命令更改文件属性时也会更新。文件通过sed或vi修改保存,3个时间都更新为最新时间,通过echo追加内容时modify时间和change时间会更新为最新时间。
Linux中文件没有创建时间的概念。
su & sudo
sudo不需要启动新的shell,也不需要加载其他用户的环境。这意味着sudo不需要引用命令。
sudo不需要输入root密码,如果通过visudo或直接编辑/etc/sudoers文件配置免密sudo,那么可以免密执行,否则输入sudo提权密码。而 su -
或 su
是真正切换到root用户环境,需要输入root密码。
sudo命令的-i选项可用于启动一个交互式的超级用户Shell会话(和 su -
差不多)。
1 | su -c 'ls -l /root /*' |
cat
常用于显示短文本,也可以配合split用来连接多个文件。
split分割文件:
1 | [root@localhost t]# seq 1000 > 1000.txt |
顺便记一下,ls -l 第一行total表示总的占用空间(单位:KB)。一个block占4KB,一个文件至少占一个block。
cat连接文件:
1 | [root@localhost t]# cat xa* > 1000-2.txt |
在控制台不带参数cat,通过ctrl-D发送EOF结束输入:
1 | [root@localhost zlz]# cat > test_cat.log |
tee
tee,管道T形转接头。
1 | [root@localhost t]# ls |
共享目录
1 | [zeng@localhost opt]$ groups |
bash提示符
1 | export PS1="[\u@\h \W]\\$ " |
vi & vim
操作 | 按键 |
---|---|
当前字符前/后继续输入 | i/a |
当前行首/尾输入 | I/A |
删除当前字符 | x |
粘贴到当前行上/下一行 | P/p |
合并行 | J |
后/前一个单词、后/前一个字符、下/上一行 | w/b、l/h、j/k |
前/后一个文件(的缓冲区) | :bn/:bp |
列出缓冲区文件 | :buffers |
切换到指定缓冲区n | :buffer n |
删除以下10行(含当前行) | :10dd,:d9+ |
删除以上10行(含当前行) | :d9- |
删除以下所有行 | :dG |
显示/关闭行号 | :set nu! |
read命令
接参
1 | [root@kafka-1 ~]# ll |
输入密码
1 | [root@kafka-1 ~]# read -sp "password: " a |
指定IFS
本命令执行期间新IFS有效:
1 | [root@kafka-1 ~]# IFS=. read a b c |
本shell内新IFS有效(注意分号):
1 | [root@kafka-1 ~]# IFS=.; read a b c |
但是 while read
或 for in
循环中需加分号:
1 | [root@kafka-1 ~]# IFS=. while read a b c; do echo "$a,$b,$c"; done |
软件包管理
打包工具:
Linux发行版 | 低层工具 | 高层工具 |
---|---|---|
redhat | rpm | yum |
debian | dpkg | apt-get |
命令:
1 | # 列出软件包 |