Linux命令笔记 基础命令 时间日期
月份日历
磁盘可用空间
可用内存容量
结束终端会话
导航&探索 当前工作目录
改变当前目录
ls
选项
描述
-a,–all
列出所有文件。
-A,–almost-all
同上 不列出.和..。
-d,–directory
与-l结合使用,查看目录详细信息,而非其中内容。
-F,–classify
名称后加类型指示符。
-h,–human-readable
人类可读形式显示文件大小。
-l
长格式输出。
-r,–reverse
降序,一般字母升序。
-S
按照大小排序。
-t
按照修改日期排序。
file 确定文件类型。
less 查看文本文件。
命令
操作
Page Up或b
后翻一页。
Page Down或Space
前翻一页。
上方向键
向后一行。
下方向键
向前一行。
G
移动到文本文件末尾。
IG或g
移动到文本文件开头。
/characters
向前搜索指定字符串。
n
重复上一次搜索。
h
显示帮助信息。
q
退出less。
系统目录
目录
注释
/
根目录。
/bin
系统引导执行的二进制可执行文件。
/boot
Linux内核、初始化RAM磁盘映像、引导装载器。
/dev
包含设备节点的特殊目录。
/etc
包含系统范围的所有配置文件。例如:crontab何时执行自动化作业;fstab存储设备及其关联的挂载点;passwd所有用户信息。
/home
每个用户都有各自的目录。
/lib
系统核心程序用到的共享库文件。类似DLL。
/lost+found
格式化过的分区或设备包含该目录,用于文件系统损坏时的部分恢复。一般都是空的。
/media
各种可移动存储设备的挂载点。
/mnt
同上,手动挂载。
/opt
存放安装的商业软件。
/proc
内核的窥探孔,可使用户了解到内核如何管理计算机。文件全部可读。并非真实文件系统,内核维护的虚拟文件系统。
/root
超级用户主目录。
/sbin
系统二进制可执行文件。
/tmp
各种程序生成的临时文件。
/usr
普通用户用到的所有程序和支持文件。
/usr/bin
Linux发行版安装的程序。
/usr/lib
/usr/bin中程序用到的共享库。
/usr/local
计划在系统范围内使用的程序。
/usr/sbin
系统管理工具。
/usr/share
/usr/bin中程序用到的共享数据(配置文件、图标、桌面背景、声音文件)。
/usr/share/doc
大部分软件包自带文档。
/var
可能会改变的数据(数据库、假脱机文件、用户邮件)。
/var/log
日志文件、系统活动记录。比较有用的:/var/log/messages和/var/log/syslog。
操作文件和目录 通配符
通配符
含义
*
匹配任意多个字符。
?
匹配任意单个字符。
[characters]
匹配属于字符集合character中任意单个字符。
[!characters]
匹配不属于字符集合character中任意单个字符。
[[:class:]]
匹配属于字符类class中任意单个字符。
匹配点号开始的文件(隐藏文件)使用:
字符类
字符类
含义
[:alnum:]
匹配任意单个字母数字字符。
[:alpha:]
匹配任意单个字母。
[:digit:]
匹配任意单个数字。
[:lower:]
匹配任意单个小写字母。
[:upper:]
匹配任意单个大写字母。
mkdir
‘…’表示可重复出现该参数。
cp 单个文件或目录item1复制到文件或目录item2:
多个文件或目录item复制到目录directory中:
选项
含义
-a,–archive
复制包括所有权与权限在内的所有属性。
-i,–interactive
覆盖文件之前提示用户确认。
-r,–recursive
递归复制目录及其内容。
-u,–update
只复制目标目录中不存在或更新的文件。
-v,–verbose
显示相关信息。
mv 1 2 mv item1 item2mv item... directory
选项
含义
-i.–interactive
-u,–update
-v,–verbose
rm
选项
含义
-i,–interactive
-r,–recursive
-f,–force
忽略不存在的文件,不提示,屏蔽-i
-v,–verbose
ln 创建硬链接:
创建符号链接:
命令 type 显示指定的命令属于哪种类型。
which 显示可执行文件的位置。
help 获取内建命令帮助信息。
man 显示命令手册页。
搜索手册页内容:
例如:
节
内容
1
用户命令。
2
系统调用的编程接口。
3
C库函数的编程接口。
4
特殊文件,例如设备节点和驱动程序。
5
文件格式。
6
游戏和娱乐,例如屏幕保护程序。
7
杂项。
8
系统管理命令。
apropos 显示适合的命令清单。同man -k
。
whatis 显示手册页的单行简述。
info 手册页包含超链接。
命令
操作
?
显示命令帮助。
Page Up或BackSpace
显示上一页。
Page Down或Space
显示下一页。
n
显示下一个节点。
p
显示上一个节点。
u
显示当前节点的父节点,通常菜单。
Enter
进入光标所在的超链接。
q
退出。
alias 创建自定义命令。
1 2 3 4 alias foo='cd /usr; ls; cd -' foo unalias fooalias
重定向 标准输入、输出、错误重定向 标准输出重定向 1 ls -l /bin/usr > ls-output.txt
追加到文件尾部:
1 ls -l /bin/usr >> ls-output.txt
标准错误重定向 1 ls -l /bin/usr 2> ls-output.txt
标准输出和标准错误重定向到同一个文件中:
1 2 3 ls -l /bin/usr > ls-output.txt 2>&1ls -l /bin/usr &> ls-output.txtls -l /bin/usr &>> ls-output.txt
位桶 1 ls -l /bin/usr 2> /dev/null
cat 拼接文件。
例如:
1 cat movie.mpeg.0* > movie.mpeg
标准输入重定向
管道 sort 1 ls /bin /usr/bin | sort | less
uniq 重复行:
1 2 ls /bin /usr/bin | sort | uniq | less ls /bin /usr/bin | sort | uniq -d | less
wc 统计文件中行数、单词数、字符数。
1 2 ls /bin /usr/bin | sort | uniq | wc ls /bin /usr/bin | sort | uniq | wc -l
grep 输出模式匹配的行。
1 ls /bin /usr/bin | sort | uniq | grep zip
选项
含义
-i
忽略字母大小写。
-v
只输出不匹配指定模式的行。
head/tail 输出前/后10行内容。
1 2 head ls-output.txttail ls-output.txt
选项
命令
-n 5
输出前/后5行。
-f
持续观察该文件,有追加立即显示,直到Ctrl+C。
tee 读取标准输入,将输出结果写入标准输出或文件。
1 ls /usr/bin | tee ls.txt | grep zip
Shell特性 扩展 路径名扩展 1 2 3 4 5 echo D*echo *secho [[:upper:]]*echo /usr/*/shareecho -d .*
浪纹线扩展
算数扩展 1 2 echo $((2 +2 ))echo $(((5 **2 )*3 ))
花括号扩展 1 2 3 4 5 echo Front-{A,B,C}-Backecho Number_{1..5}echo {01..15}echo {001..15}echo a{A{1,2},B{3,4}}b
参数扩展 1 2 echo $USER printenv | less
命令替换 1 2 3 echo $(ls )ls -l $(which cp )file $(ls -d /usr/bin/* | grep zip)
引用 双引号 防止单词分割。参数、算数、命令扩展仍会发生。
注意!
以下写法会将输出结果中的换行视为分隔符,即包含38个参数的命令。输出结果将以一行形式出现。
而以下写法输出格式正确:
单引号 同双引号,但禁用所有扩展。
转义字符 略。
反斜线转义序列
转义序列
含义
\a
响铃。
\b
退格符。
\n
新行符。
\r
回车符。
\t
制表符。
可使用echo -e
或$''
解释反斜线转义序列。
1 2 sleep 10;echo -e "Time's up\a" sleep 10;echo "Time's up" $'\a'
历史记录 1 2 history | lesshistory | grep /usr/bin
默认1000个命令,以下表示扩展第88行内容:
历史扩展 1 2 3 4 !! !number !string !?string
script 记录整个Shell对话到文件file中:
如果没有指定file,则保存在typescript中
权限 id 查看用户身份信息:
文件属性:
属性
文件类型
-
普通文件。
d
目录。
l
符号链接。
c
字符设备文件。例如:终端、/dev/null。
b
块设备文件。例如:硬盘、DVD。
文件目录权限:
权限属性
文件
目录
r
读取
列出内容(且可执行)
w
写入、截断;但删除、重命名由目录属性决定
创建、删除、重命名(且可执行)
x
作为程序执行
进入目录
chmod
符号表示法:
符号
含义
u
属主
g
属组
o
其他用户
a
all
用法示例:
1 2 3 4 5 6 chmod u+xchmod u-xchmod +xchmod o-rwchmod go=rwchmod u+x,go=rx
选项:
umask
上述掩码值为16进制数,二进制位上为1的剥夺该权力。
su 略。
sudo 略。
chown 更改文件属主和属组。
1 2 3 4 chown bob chown bob:users chown :admins chown bob:
chgrp 更改文件属组,已废弃。
passwd 普通用户修改自己密码,或root修改其他用户密码。
进程 查看进程 静态查看:
STAT列字段说明:
状态
含义
R
运行或准备运行。
S
睡眠,等待某个事件(按键、网络分组等)。
D
不可中断的睡眠,等待磁盘设备I/O。
T
已停止
Z
已终止但未被其父进程清理的子进程。
<
高优先级进程。
N
低优先级进程。
其他列信息:
列名
含义
USER
进程属主,用户ID
%CPU
CPU占用率
%MEM
内存占用率
VSZ
虚拟内存大小
RSS
驻留集大小,占用RAM数量(KB)
START
进程启动时间
动态查看:
信息字段:
行
字段
含义
1
top
程序名称
14:59:20
当前时刻
up 6:30
正常运行时间
2 users
2个登录用户
load average
平均负载,等待运行的进程数量,也就是可运行状态且共享CPU的进程数量。三个值分别为过去1min、5min、15min的平均值。低于1.0表示系统不繁忙。
2
Tasks
进程数量及其状态
3
Cpu(s)
0.7%us
用于用户进程(内核之外进程)
1.0%sy
系统内核进程
0.0%ni
低优先级进程
98.3%id
空闲
0.0%wa
等待I/O
4
Mem
物理内存
5
Swap
交换空间(虚拟内存)
键盘命令:h帮助,q退出。
进程置于后台 将xlogo进程置于后台:
使用以下命令查看shell在后台启动的作业列表:
使用以下命令将jobs编号为1的后台进程返回前台:
停止/暂停进程:Ctrl-Z,恢复方法:使用fg或bg置于前/后台继续运行。
kill
常用信号:
代号
名称
含义
1
HUP
挂起。
2
INT
中断,类似Ctrl-C。
9
KILL
杀死,最终手段,进程不能忽略。
15
TERM
终止。
18
CONT
继续,SOPT或TSTP后恢复进程,bg和fg都会发送。
19
STOP
停止,暂停,进程不能忽略。
20
TSTP
终端停止。
3
QUIT
退出。
11
SEGV
段错误,违规使用内存
28
WINCH
窗口变化,例如top和less会相应该信号以调整界面。
killall 向匹配指定名称或用户名的多个进程发送信号。
1 killall [-u user] [-signal] name..
例如:
关闭系统 1 2 3 4 5 halt poweroff reboot shutdown -h now shutdown -r now
其他进程相关 1 2 3 4 5 pstree vmstat vmstat 5 xload tload
环境 printenv 1 2 3 printenv | lessprintent USER echo $HOME
set
常用环境变量
变量
内容
DISPLAY
屏幕名称,通常:0
EDITOR
文本编辑器名称
SHELL
Shell程序名称
HOME
主目录路径名
LANG
字符集及其所使用语言的排序方式
OLDPWD
先前的工作目录
PAGER
对输出结果进行分页的名称
PATH
Shell搜索可执行程序名称的目录列表
PS1
提示字符串1
PWD
当前工作目录
TERM
终端类型名称
TZ
指定时区
USER
用户名
登录Shell会话启动文件顺序:
1 2 3 4 /etc/profile ~/.bash_profile ~/.bash_login ~/.profile
非登录Shell会话启动文件顺序:
1 2 /etc/bash.bashrc ~/.bashrc
字符串拼接:
1 2 3 4 foo="This is some " echo $foo foo=$foo "text." echo $foo
改动生效:
定制提示符 转义字符 略。
增加颜色 文字颜色:\033[0;30m
至\033[0;37m
为黑、红、绿、棕、蓝、紫、青、浅灰,\033[1;30m
至\033[1;37m]
为深灰、浅红、浅绿、黄、浅蓝、浅紫、浅青、白。
背景颜色:同上,3*换为4*。
例如:
1 PS1="\[\033[0;31m\]<\u@\h \W>\$\[\033[0m\]"
移动光标 略。
存储设备 查看已挂载文件系统 法一:查看文件/etc/fstab
。
法二:
卸载文件系统 例如卸载挂载到/dev/sdc
上的CD-ROM:
新建、删除挂载点 1 2 3 mkdir /mnt/cdrommount -t iso9660 /dev/sdc /mnt/cdrom unmount /dev/sdc
手动挂载 例如:挂载16MB闪存。
1 sudo tail -f /var/log/messages
暂停后,插入闪存,并开始输出。发现“[sdb]”字样,符合SCISI磁盘设备名称
当出现以下两行时:
1 2 sdb: sdb1 sd 3:0:0:0: [sdb] Attached SCSI removable disk
即设备名称“/dev/sdb”,“/dev/sdb1”为其中第一个分区。
挂载:
1 2 3 sudo mkdir /mnt/flash sudo mount /dev/sdb1 /mnt/flash df
fdisk 示例:修改分区ID。
1 2 3 4 5 6 7 sudo umount /dev/sdb1 sudo fdisk /dev/sdb m p l t w
mkfs 创建文件系统。
1 2 sudo mkfs -t ext4 /dev/sdb1 sudo mkfs -t vfat /dev/sdb1
fsck 检查闪存驱动器。
dd 数据移动。
1 2 3 dd if =/dev/sdb of=/dev/sdc dd if =/dev/sdb of=flash_drive.img dd if =/dev/cdrom of=ubuntu.iso
genisoimage 创建ISO映像文件。文件在~/cd-rom-files
中,输出文件名为cd-rom.iso
。-R表示添加启用Rock Ridge扩展的元数据,允许使用长文件名和POSIX风格的文件权限。-J启用Joliet扩展,允许Windows使用长文件名。
1 genisoimage -o cd-rom.iso -R -J ~/cd-rom-files
mount 直接挂载.iso文件,并进行md5检查。
1 2 3 4 mkdir /mnt/iso_imagemount -t iso9660 -o loop image.iso /mnt/iso_image md5sum image.isomd5sum /dev/cdrom
wodim 擦除可刻录CD。
1 wodim dev=/dev/cdrm blank=fast
刻录映像文件。
1 wodim dev=/dev/cdrm image.iso
网络 ping
traceroute 列出网络流量从本地到目标主机所经过的所有路由。
星号隐藏即为打不通,-T或-I可显示。
ip 取代ifoncifg。
netstat 检查系统网络接口:
显示内核网络路由表:
目的地中以0结尾的代表网络中的任意主机,最后一行default的Gateway表示网络流量最终的去处,即网关。
ftp 示例:从FTP服务器fileserver的/pub/cd_images/Ubuntu-18.04
下载.iso文件:
1 2 3 4 5 6 ftp filserver cd pub/cd_images/Ubuntu-18.04 ls lcd Desktop get ubuntu-18.04-desktop-amd64.iso bye
wget 下载文件。
1 wget http://linuxcommand.org/index.php
ssh 1 2 3 4 ssh remote-sys ssh bob@remote-sys ssh remote-sys free ssh remote-sys 'ls *' > dirlist.txt
scp 示例:将remote-sys主目录下的document.txt文件下载到本地pwd中。
1 2 scp remote-sys:document.txt . scp bob@remote-sys:document.txt .
sftp 用法同ftp。
查找文件 locate
locate命令的数据库使用cron,为1天1更新,如果需要查询最新建文件,需要手动执行:
find 1 2 find ~ -type d | wc -l find ~ -type f -name "*.JPG" -size +1M | wc -l
-type可选参数:
文件类型
描述
b
块设备文件
c
字符设备文件
d
目录
f
普通文件
l
符号链接
-size计量单位符号:
字符
单位
b
512字节
c
字节
w
字
k
KB
M
MB
G
GB
测试条件略。
操作符:
1 find ~ \(-type f -not -perm 0600\) -or \(-type d -not -perm 0700\)
预定义操作略。
自定义操作:
1 2 3 find ~ -type f -name 'foo*' -exec rm '{}' ';' find ~ -type f -name 'foo*' -exec rm '{}' + find ~ -type f -name 'foo*' -ok ls -; '{}' ';'
xargs 从标准输入接收输入,转换为指定命令的参数列表。
1 find ~ -type f -name 'foo*' -print | xargs ls -l
如果文件名包含空格,会将其视为参数分割。find的-print0生成由空字符分割的输出结果,xargs的-null或-0接受由空字符分割的输入:
1 find ~ -iname '*.jpg' -print0 | xargs --null ls -l
touch 设置或更新文件的访问、变更、修改时间,常用于创建文件。
1 touch playground/dir-{001..100}/file-{A..Z}
归档与备份 gzip 1 2 3 4 5 gzip foo.txt gunzip foo.txt ls -l /etc | gzip >foo.txt.gzgunzip -c foo.txt | less zcat foo.txt.gz | less
bzip2 1 2 bzip2 foo.txt bunzip2 foo.txt.bz2
tar 1 2 3 4 5 6 tar cf playground.tar playground tar tvf playground.tar tar xf ../playground.tar find playground -name 'file-A' | tar czf playground.tgz -T - find playground -name 'file-A' | tar cjf playground.tbz -T - ssh remote-sys 'tar ct - Documents' | tar xf -
zip 1 2 3 4 5 6 7 zip -r playground.zip playground unzip ../playground.zip unzip -l playground.zip playground/dir-087/file-Z unzip playground.zip playground/dir-087/file-Z find playground -name 'file-A' | zip -@ file-A.zip ls -l /etc/ | zip ls-etc.zip -unzip -p ls-etc.zip | less
rsync 1 2 rsync -av playground foo --delete rsync -av --delete --rsh=ssh /etc /home /var/local remote-sys:/backup