Summary of commonly used commands and options on linux
这里总结一下 linux 下常用的命令和参数,方便记忆和后续查看。
type
type 命令可以判断是内建命令还是外部命令。
type echo
type -a echo
echo
echo 命令既是内建命令,也是外部命令,可以用 type 命令判断。
echo -n 'show me the money'
echo -e '\nshow\t me the money'
man
man 命令用于查看手册,-k 选项可以模糊查询命令。
man hostname
man -k hostname
ls
ls 命令有多种参数,-R 选项递归查看文件,-r 选项排列倒序,-t 按文件修改时间排序,-i 查看 inode。
ls -R
ls -alF
ls -rt
ls -i
cp
cp 命令如果后面是文件夹,最好跟上 / 以保证是往文件夹复制。-i 选项在复制时遇到同名文件会提示,-r 选项递归复制文件夹中的内容,-f 选项强行复制。
cp -i
cp -rf file directory/
ln
ln 命令用于创建软硬链接,-s 选项创建软链接。
ln originalFile hardLinkFile
ln -s originalFile softLinkFile
rm
rm 命令用于删除文件,-i 选项在删除时会提示,-r 选项递归删除文件夹,-f 选项强行删除。
rm -i
rm -rf
mkdir
mkdir 命令用于创建空文件夹,-p 选项会创建路径中不存在的文件夹。
mkdir -p a/b/c/d/e
file
file 命令查看文件或文件夹类型。
file file
cat
cat 命令用于查看文件内容,-n 选项会显示行号,包括空行,-b 选项也会显示行号,但不包括空行。
cat -n file
cat -b file
tail
tail 命令用于查看文件内容,默认是倒数 10 行。-n 2 选项和-2 功能一样,查看最后 2 行,-n +2 和+2 选项功能一样,查看从第 2 行开始到最后 1 行,-f 选项持续查看文件,如果文件内容有变化及时反映出来。
tail -n 2 file
tail -2 file
tail -n +2 file
tail +2 file
tail -f file
ps
ps 命令用于查看进程。有 Unix、BSD、GNU 3 种风格。
ps -efl
ps alux
ps --forest
ps -p 16520 -o pid,ppid,ni,cmd
kill
kill 命令用于杀死进程。
kill -9 10086
killall
killall 命令用于杀死指定进程名的所有进程。
killall node
pkill
pkill 命令用于杀死指定进程名的进程。
pkill node
mount
mount 命令用于挂载文件系统,-t 选项指定挂载文件系统的格式,-o 选项指定挂载时的选项。
mount -t ext4 -o ro /dev/sdb1 /mnt
umount
umount 选项用于卸载文件系统,后面跟设备或挂载点都可以。
umount /dev/sdb1
umount /mnt
df
df 命令用于查看磁盘,-t 选项指定文件系统的格式,-h 选项以 1024 为单位显示大小,-H 选项以 1000 单位显示大小。
df -t ext4 -t vfat -h
du
du 命令用于显示文件空间的使用量,-s 选项显示总量,-h 选项以 1024 为单位显示。
du -sh
du -sh *
sort
sort 命令用于排序, -n 选项以数字大小进行排序,-r 选项以倒叙排序,-t 选项指定分隔符,-k 选项指定分隔后第几栏。
sort -n /etc/passwd
sort -t ':' -k 3 -n /etc/passwd
du -sh * | sort -nr
grep
grep 命令用于搜索字符串,-n 选项显示行号,-v 选项排除搜索,-c 选项统计数量,-e 选项可以指定多个条件,-E 选项指定用扩展的正则表达式搜索。与 grep 相似的命令还有 egrep,fgrep,rgrep。
grep -n -v user1 /etc/passwd
grep -c user1 /etc/passwd
grep -e user1 -e user2 /etc/passwd
grep -E \(user1\|user2\) /etc/passwd
zip
zip 命令用于以 zip 格式压缩文件,-r 选项指定以递归的方式压缩文件夹。
zip -r zipFile.zip directory
unzip
unzip 命令用于解压缩 zip 格式的文件,-d 选项用于指定解压缩到哪个路径下。
unzip -zipFile.zip -d path
tar
tar 命令用于将文件或文件夹压缩成 tar 格式的文件或解压缩 tar 格式的文件,-f 选项用于指定 tar 文件,-v 选项打印详细信息,-c 选项用于创建 tar 文件,-x 选项用于解压缩 tar 文件,-C 选项用于指定解压缩到哪个路径下,-t 选项用于查看压缩文件的内容。
tar -cvf tarFile.tar.gz target
tar -xvf tarFile.tar.gz -C path
tar -tf tarFile.tar.gz
jobs
jobs 命令用于查看任务。
jobs
jobs -l
fg
fg 命令可以将后台任务放到前台执行。
fg
bg
fg 命令可以将后台任务在后台执行。
bg
coproc
coproc 命令会在后台创建一个任务并执行。
coproc zip -r zipFile.zip directory
coproc (zip -r zipFile.zip directory)
history
history 命令是内建命令,用于查看命令的历史记录。命令历史记录被保存在位于用户主目录的隐藏文件.bash_history 之中,要注意的是,在 CLI 会话期间,bash 命令的历史记录被保存在内存中。当 shell 退出时才被写入历史文件。可以在不退出 shell 的情况下强制将命令历史记录写入.bash_history 文件。为此,需要使用 history 命令的 -a 选项。如果需要清除命令历史,很简单,输入 history -c 即可。
# 查看历史记录
history
# 将历史记录保存到文件
history -a
# 清除历史记录
history -c
alias
alias 命令是内建命令,用于给命令起别名。
# 查看别名为ls的命令
alias ls
# 设置别名为ls的命令
alias ls='ls -l'
env
env 命令用于查看全局环境变量。也可以使用 env 命令作为 bash shell 脚本的第一行,就像这样:#!/usr/bin/env bash。这种方法的优点在于 env 会在$PATH 中搜索 bash,使脚本具备更好的可移植性。
env
printenv
printenv 命令用于查看全局环境变量,也可以查看个别的环境变量,但前面不需要加上$,这个比较特殊。
echo 命令也可以查看个别的环境变量,前面需要加上$。
printenv
printenv name
set
set 命令可以显示特定特定进程的所有环境变量,包括全局变量、局部变量和用户自定义变量。
set
export
export 命令可以将局部环境变量导出为全局环境变量。导出变量时,前面不加$。
export name=roger
export name
unset
unset 命令可以删除环境变量。
在子 shell 中修改和删除环境变量都不会影响父 shell 中的环境变量。
unset name
useradd
useradd 命令用于创建用户。-D 选项用于查看 useradd 命令所使用的默认值,默认值使用/etc/default/useradd 文件设置,也可以通过修改默认值,例如 useradd -D -s /usr/bin/zsh。而 /etc/skel 中的文件则是创建新用户的$HOME 的默认文件。-m 选项用于在创建用户的时候同时创建$HOME 目录。
useradd -D
useradd -D -s /usr/bin/zsh
useradd -m newUser
userdel
userdel 命令用于删除用户。如果加入-r 选项,则 userdel 会删除用户的$HOME 目录以及邮件目录。
在有大量用户的环境中使用-r 选项要特别小心。你永远不知道用户是否在个人的$HOME目录中存放了其他用户或程序要用到的重要文件。在删除用户的$HOME 目录之前一定要检查清楚。
该命令也可以将某个用户从附加组里面移除。也可以用 gpasswd -d user group 将某个用户从附加组里面移除。
userdel -r user
userdel user group
usermod 命令用于修改用户。大部分选项与 useradd 命令的选项一样(比如-c 用于修改备注字段,-e 用于修改过期日期,-g 用于修改默认的登录组)。除此之外,还有另外一些也许能派上用场的选项。
-l:修改用户账户的登录名。
-L:锁定账户,禁止用户登录。
-p:修改账户密码(未加密)。
-U:解除锁定,恢复用户登录。
其中-L 选项尤为实用。该选项可以锁定账户,使用户无法登录,无须删除账户和用户数据。要恢复账户,只需使用-U 选项即可。
-a 选项配合-G 选项可以将用户加入指定的附加组里面。
usermod
usermod -c 'comment' user
usermod -aG group user
passwd
passed 命令用于设置用户密码,-e 选项强制用户下次登录时修改密码。
passwd
passwd user
passwd -e user
chpasswd
chpasswd 用于修改用户密码,会自动对密码加密,也可以用重定向命令将包含 username:password 格式的文件重定向给该命令以批量的方式修改密码。
chpasswd
chpasswd<users.txt
chsh
chsh 命令用于改变登录 shell,-s 选项用于指定默认登录 shell。
chsh -s /usr/bin/zsh
finter
finger 命令可以非常方便地查看 Linux 系统的用户信息。
finger
finger user
chfn
chfn 命令提供了在/etc/passwd 文件的备注字段中保存信息的标准方法,它会将用于 Unix 的 finger 命令的信息存入备注字段,而不是简单地写入一些随机文本(比如名字或昵称之类),或是干脆将备注字段留空。
chfn user
chage
chage 命令用于管理用户账户的有效期。
chage user
groupadd
groupadd 命令可用于创建新组,usermod 命令的-G 选项会把这个新组添加到该用户账户的组列表中。
groupadd test
groupmod
groupmod 命令可以修改已有组的 GID(使用-g 选项)或组名(使用-n 选项):
groupmod -n newGroupName oldGroupName
groupmod -g newGroupId oldGroupName
groupdel
groupdel 用于删除组。
groupdel group
umask
umask 命令用来设置新建文件和目录的默认权限。
umask
umask 022
chmod
chmod 命令可以修改文件和目录的权限。
chmod u+x file
chmod 777 file
chown
chown 命令可以修改文件和目录的所属关系。-R 选项可以递归地修改子目录和文件的所属关系。
# 只会改变属主
chown user file
# 只会改变属组
chown :group file
# 会同时改变属主和属组
chown user: file
chown -R user:group file
chgrp
chgrp 命令可以方便地修改文件或目录的默认属组。
chgrp newGroup file
setfacl
setfacl 命令可以为用户或组分配权限。-m 选项修改分配给文件或目录的权限,或使用-x 选项删除特定权限。
也可以对目录设置默认 ACL,在该目录中创建的文件会自动继承。这个特性称为 ACL 继承。要想设置目录的默认 ACL,可以在正常的规则定义前加上 d:
setfacl -m u:user:rw file
setfacl -m g:group:rw file
setfacl -m d:g:group:rw file
getfacl
getfacl 命令能够查看分配给文件或目录的访问控制列表(access control list,ACL)。
getfacl file
fdisk
fdisk 命令可以在任何存储设备上创建和管理分区。但是,fdisk 只能处理最大 2 TB 的硬盘。
fdisk -l
fdisk /dev/sdb
gdisk
如果存储设备要采用 GUID 分区表(GUID partition table,GPT),就要用到 gdisk 命令。gdisk 的很多命令和 fdisk 差不多,这使得在这两款工具之间来回切换就容易多了。
gdisk -l /dev/sdb
parted
parted 提供了另一种命令行界面来处理分区。不同于 fdisk 和 gdisk,GNU parted 中的命令更像是单词。
parted /dev/sdb
mkfs
mkfs 命令用于创建文件系统。将数据存储到分区之前,必须使用某种文件系统对其进行格式化,以便 Linux 能够使用分区。
mkfs -t ext4 /dev/sdb1
fsck
fsck 命令可以检查和修复大部分 Linux 文件系统类型,-a 选项可以在检查到错误后自动修复文件系统。
fsck -a -t ext4 /dev/sdb1
lsblk
lsblk 命令用于列出块设备。
lsblk
pvcreate
pvcreate 命令用于指定要作为 pv 的分区。
pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1
pvdisplay
pvdisplay 命令用于显示 pv。
pvdisplay
vgcreate
vgcreate 命令用于创建 vg。
vgcreate vg00 /dev/sdb1 /dev/sdc1
vgdisplay
vgdisplay 命令用于显示 vg。
vgdisplay
vgextend
vgextend 命令用于扩展 vg。
vgextend vg00 /dev/sdd1
vgreduce
vgextend 命令用于收缩 vg。
vgreduce vg00 /dev/sdc1
lvcreate
lvcreate 命令用于创建 LV。-L 选项指定 lv 的大小, -v 选项指定 vg。
lvcreate -L 1g -v vg00
lvdisplay
lvdisplay 命令用于显示 lv。
lvdisplay
lvextend
lvextend 命令用于扩展 lv。-L 选项指定 lv 的大小。
lvextend -L 30g /dev/vg00/lvol0
lvreduce
lvreduce 命令用于收缩 lv。-L 选项指定 lv 的大小。
lvreduce -L 10g /dev/vg00/lvol0
dpkg
dpkg 命令是基于 Debian 的软件包管理器的核心,用于在 Linux 系统中安装、更新、删除 DEB 包文件。
# 安装deb的软件包
dpkg -i package.deb
# 显示命令相关的文件
dpkg -L command
# 找出该文件属于哪个软件包
dpkg --search file
apt
apt 命令本质上是 apt-cache 命令和 apt-get 命令的前端。
# 显示仓库中所有可用的软件包
apt list
# 显示已安装在系统中的软件包
apt --installed list
# 显示软件包的详细信息
apt show packageName
# 搜索软件包
apt search keyword
# 安装软件包
apt install packageName
# 更新软件源
apt update
# 升级所有的软件包
apt upgrade
# 删除软件包
apt purge packageName
# 删除不再被需要的软件包
apt autoremove
date
date 命令可以显示和设置时间。
# 当前时间
date
# 从1970年1月1日后过去的秒数
date +%s
# 设置并显示2024年5月30日的时间
date -d '2024-05-30' '+%F %T'
basename
basename 命令可以获取文件或目录的名称。
basename file
basename directory
read
read 命令可以获取用户输入。
read -p "show me your name:" name
# 设置超时时间为5秒
read -t 5 -p "Enter your name: " name
# 设置输入字符为1
read -n 1 -p "Do you want to continue [Y/N]? " answer
# 设置无显示输入
read -s -p "Enter your password: " pass
mktemp
mktemp 命令可以创建临时文件。
mktemp test.XXXXXX
# test.VJHi7Y
mktemp -t test.XXXXXX
# /tmp/test.kOSRbP
mktemp -d test.XXXXXX
# test.1P7njo
tee
tee file
tee -a file
date | tee file
echo 'hello' | sudo tee file
nice
nice 命令允许在启动命令时设置其调度优先级。要想让命令以更低的优先级运行,只需用 nice 命令的-n 选项指定新的优先级即可。调度优先级是一个整数值,取值范围从-20(最高优先级)到+19(最低优先级)。在默认情况下,bash shell 以优先级 0 来启动所有进程。
-20(最低值)代表最高优先级,+19(最高值)代表最低优先级,越是“谦让”(nice)或是值越大,获得 CPU 的机会就越低。
nice 命令会阻止普通用户提高命令的优先级,只有 root 用户或者特权用户才能提高作业的优先级。
nice -n 5 ./cmd.sh
renice
renice 命令会自动更新运行进程的调度优先级,renice 命令对于非特权用户限制和 nice 命令一样。
renice -n 5 -p 16642
at
at 命令允许指定 Linux 系统何时运行脚本。
at -f cmd.sh 13:10
# 禁止作业产生的输出信息
at -M -f cmd.sh 13:10
crontab
crontab 命令可以管理定时任务。
# 查看定时任务
crontab -l
# 编辑定时任务
crontab -e