一些太基础的命令本文就不再叙述了,主要记录一些细节方面和我自身没使用过的命令

目录

目录 评论
/ 根目录,万物起源。
/bin 包含系统启动和运行所必须的二进制程序。
/boot 包含 Linux 内核,最初的 RMA 磁盘映像(系统启动时,由驱动程序所需),和 启动加载程序。有趣的文件: /boot/grub/grub.conf or menu.lst, 被用来配置启动加载程序。 /boot/vmlinuz,Linux 内核。
/dev 这是一个包含设备结点的特殊目录。“一切都是文件”,也使用于设备。 在这个目录里,内核维护着它支持的设备。
/etc 这个目录包含所有系统层面的配置文件。它也包含一系列的 shell 脚本, 在系统启动时,这些脚本会运行每个系统服务。这个目录中的任何文件应该是可读的文本文件。有意思的文件:虽然/etc 目录中的任何文件都有趣,但这里只列出了一些我一直喜欢的文件: /etc/crontab, 定义自动运行的任务。 /etc/fstab,包含存储设备的列表,以及与他们相关的挂载点。/etc/passwd,包含用户帐号列表。
/home 在通常的配置环境下,系统会在/home 下,给每个用户分配一个目录。普通只能 在他们自己的目录下创建文件。这个限制保护系统免受错误的用户活动破坏。
/lib 包含核心系统程序所需的库文件。这些文件与 Windows 中的动态链接库相似。
/lost+found 每个使用 Linux 文件系统的格式化分区或设备,例如 ext3文件系统, 都会有这个目录。当部分恢复一个损坏的文件系统时,会用到这个目录。除非文件系统 真正的损坏了,那么这个目录会是个空目录。
/media 在现在的 Linux 系统中,/media 目录会包含可移除媒体设备的挂载点, 例如 USB 驱动器,CD-ROMs 等等。这些设备连接到计算机之后,会自动地挂载到这个目录结点下。
/mnt 在早些的 Linux 系统中,/mnt 目录包含可移除设备的挂载点。
/opt 这个/opt 目录被用来安装“可选的”软件。这个主要用来存储可能 安装在系统中的商业软件产品。
/proc 这个/proc 目录很特殊。从存储在硬盘上的文件的意义上说,它不是真正的文件系统。 反而,它是一个由 Linux 内核维护的虚拟文件系统。它所包含的文件是内核的窥视孔。这些文件是可读的, 它们会告诉你内核是怎样监管计算机的。
/root root 帐户的家目录。
/sbin 这个目录包含“系统”二进制文件。它们是完成重大系统任务的程序,通常为超级用户保留。
/tmp 这个/tmp 目录,是用来存储由各种程序创建的临时文件的地方。一些配置,导致系统每次 重新启动时,都会清空这个目录。
/usr 在 Linux 系统中,/usr 目录可能是最大的一个。它包含普通用户所需要的所有程序和文件。
/usr/bin /usr/bin 目录包含系统安装的可执行程序。通常,这个目录会包含许多程序。
/usr/lib 包含由/usr/bin 目录中的程序所用的共享库。
/usr/local 这个/usr/local 目录,是非系统发行版自带,却打算让系统使用的程序的安装目录。 通常,由源码编译的程序会安装在/usr/local/bin 目录下。新安装的 Linux 系统中,会存在这个目录, 但却是空目录,直到系统管理员放些东西到它里面。
/usr/sbin 包含许多系统管理程序。
/usr/share /usr/share 目录包含许多由/usr/bin 目录中的程序使用的共享数据。 其中包括像默认的配置文件,图标,桌面背景,音频文件等等。
/usr/share/doc 大多数安装在系统中的软件包会包含一些文档。在/usr/share/doc 目录下, 我们可以找到按照软件包分类的文档。
/var 除了/tmp 和/home 目录之外,相对来说,目前我们看到的目录是静态的,这是说, 它们的内容不会改变。/var 目录是可能需要改动的文件存储的地方。各种数据库,假脱机文件, 用户邮件等等,都驻扎在这里。
/var/log 这个/var/log 目录包含日志文件,各种系统活动的记录。这些文件非常重要,并且 应该时时监测它们。其中最重要的一个文件是/var/log/messages。注意,为了系统安全,在一些系统中, 你必须是超级用户才能查看这些日志文件。

Linux接口

历史命令 history

root用户通常在/root/.bash_history下,普通用户在/home/用户名/.bash_history下。默认存1000条(由环境变量HISTSIZE决定)。执行命令会写入内存缓冲区,等待bash退出后再写入 .bash_history中。这个文件路径也可以更改(由环境变量HISTFILE决定)。

1
2
3
4
root@n1:~# echo $HISTSIZE
1000
root@n1:~# echo $HISTFILE
/root/.bash_history

使用history命令来显示和编辑历史记录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 显示所有历史记录
history

# 显示倒数10条历史记录
history 10

# 将当前登录状态下输入的历史命令写入到文件里
# 重新登录会刷新历史输入的内容,作用域仅在当前会话中
# 如果文件存在会追加
history -a test.txt

# 将当前登录状态下输入的历史命令写入到文件里
# 重新登录会刷新历史输入的内容,作用域仅在当前会话中
# 如果文件存在会覆盖
history -w test.txt

# 清空历史命令
history -c

# 将历史命令恢复至历史命令列表中
history -r test.txt

# 命令行查询某条历史命令
ctrl + r

别名 alias

1
2
3
4
5
# 设定别名
alias showhome='ls -l /home'

# 取消别名
unalias showhome

重定向 <<

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 将结果写入文件中,如果文件存在则删除,并重新创建
ls -a > test.txt

# 将结果写入文件中,如果文件存在则追加
ls -a >> test.txt

# 将错误结果写入文件中
ls -a 2> error.txt
ls -a 2>> error.txt

#将错误结果和正确结果分别写入
ls -a 2>error.txt >text.txt

#将错误结果和正确结果一起写入
ls -a &>result.txt

tee

1
2
3
4
5
6
7
8
# 将命令的结果既打印又覆盖写入文件
who | tee text.txt

#追加写入
who | tee -a text.txt

#忽略中断信号
who | tee -i text.txt

快捷键

快捷键 说明
Ctrl + U 剪切光标左侧所有字符
Ctrl + K 剪切光标右侧所有字符
Ctrl + W 剪切光标左侧的一个字段
Ctrl + Y 粘贴由 Ctrl + UCtrl + KCtrl + W 剪切的部分
Ctrl + A 光标移至开始
Ctrl + E 光标移至结尾
Ctrl + R 历史搜索
Alt + D 删除光标右侧的一个字段
Alt + F 光标移动至右侧一个词的开头
Alt + B 光标移动至左侧一个词的开头
Alt + . 插入上一个输入的参数

cd

1
2
3
4
5
# 回退到上一个目录
cd -

# 回到家目录
cd

file

1
2
3
# 确定文件类型
file picture.jpg
picture.jpg: JPEG image data, JFIF standard 1.01

top

top 程序连续显示系统进程更新的信息(默认情况下,每三分钟更新一次),”top”这个名字 来源于这个事实,top 程序是用来查看系统中“顶端”进程的。top 显示结果由两部分组成: 最上面是系统概要,下面是进程列表,以 CPU 的使用率排序。

1
2
3
4
5
6
7
8
9
top - 14:59:20 up 6:30, 2 users, load average: 0.07, 0.02, 0.00
Tasks: 109 total, 1 running, 106 sleeping, 0 stopped, 2 zombie
Cpu(s): 0.7%us, 1.0%sy, 0.0%ni, 98.3%id, 0.0%wa, 0.0%hi, 0.0%si
Mem: 319496k total, 314860k used, 4636k free, 19392k buff
Swap: 875500k total, 149128k used, 726372k free, 114676k cach

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6244 me 39 19 31752 3124 2188 S 6.3 1.0 16:24.42 trackerd
....

其中系统概要包含许多有用信息。下表是对系统概要的说明:

行号 字段 意义
1 top 程序名。
14:59:20 当前时间。
up 6:30 这是正常运行时间。它是计算机从上次启动到现在所运行的时间。 在这个例子里,系统已经运行了六个半小时。
2 users 有两个用户登录系统。
load average: 加载平均值是指,等待运行的进程数目,也就是说,处于运行状态的进程个数, 这些进程共享 CPU。展示了三个数值,每个数值对应不同的时间周期。第一个是最后60秒的平均值, 下一个是前5分钟的平均值,最后一个是前15分钟的平均值。若平均值低于1.0,则指示计算机 工作不忙碌。
2 Tasks: 总结了进程数目和各种进程状态。
3 Cpu(s): 这一行描述了 CPU 正在执行的进程的特性。
0.7%us 0.7% of the CPU is being used for user processes. 这意味着进程在内核之外。
1.0%sy 1.0%的 CPU 时间被用于系统(内核)进程。
0.0%ni 0.0%的 CPU 时间被用于”nice”(低优先级)进程。
98.3%id 98.3%的 CPU 时间是空闲的。
0.0%wa 0.0%的 CPU 时间来等待 I/O。
4 Mem: 展示物理内存的使用情况。
5 Swap: 展示交换分区(虚拟内存)的使用情况。

printenv

打印环境变量

1
2
root@n1:~# printenv PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

用户接口

useradd

useradd会自动把/etc/skel目录复制到用户主目录下

passwd

放置密码的地方在/etc/passwd,但由于怕加密的密码被破解,现在只存放了一个X,真正的密码移到了/etc/shadow,只有root用户才能查看

1
2
3
4
5
root@n1:/etc/skel# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash

root@n1:/etc/skel# cat /etc/shadow
root:$6$DkvDdn6O$S27IUBv1jns349hKIBhXjMWVbEDG.JZDDrzVasdIBV82342cYjnQIL6kLyRXYm7ESSD/gm68.:19048:0:99999:7:::

这里的x如果换成*,这样用户就无法登录,但用户的主目录、文件以及组信息仍保留

/var/run/utmp保存当前登录人的用户信息。在Unix系统中,utmp(User Accounting)是一个记录当前登录用户的数据库。具体来说,/var/run/utmp 文件是一个二进制文件,通常由登录管理程序(如initgetty)更新和维护。当用户登录或注销时,相关的登录管理程序会更新此文件。其他系统工具和命令,如whow,可以读取该文件以获取当前登录用户的信息并显示出来

/var/log/wtmp保存登录过本系统的用户信息。在Unix系统中,wtmp(User Accounting)是一个记录系统登录和注销事件的数据库。具体来说,/var/log/wtmp 文件是一个二进制文件,由登录管理程序(如initgetty)以及其他系统工具(如loginsshd)更新和维护。每当用户登录或注销时,相关的登录管理程序会将相应的事件写入到该文件中。/var/log/wtmp 文件通常只能由特权用户(如root)或授权的用户读取。系统管理员可以使用工具如lastwtmpdump来读取和分析这个文件,以查看系统登录和注销的历史记录。