本文针对Ubuntu,绝大部分Linux命令是通用的。
命令行首符号“#”表示使用root权限,“$”表示一般用户权限;与通常Linux终端表示方法相同。
Linux命令参数或需依实际情况输入的变量,用首字母大写的单词拼写,能顾名思义的不再另行解释,如FileName。
文件管理
查看文件属性(list long)
$ ls -l
$ ll
每个文件一行,依次列出文件权限、所有者、所在组、文件大小、创建时间和文件名。
文件权限是10位标识符,依次包含:是否目录(1)位、所有者权限(3位)、同组用户权限(3位)、其他用户权限(3位)
第1位如果是“d”表示目录,如果是“-”表示常规文件。
3位权限标识符依次是r、w、x,分别表示允许读、写、执行;如果某位是“-”表示禁止相应操作。
更改文件所有者(change owner)
# chown [-R] UserName:GroupName FileName
即change owner,
选项-R可用于更改目录的所有者,表示递归(recursive)更改子目录及包含文件的所有者。
更改文件权限(change mode)
$ chmod [-R] Who[+/-]Permition FileName
选项-R可用于更改目录权限,表示递归(recursive)更改子目录及包含文件的权限。
Who用如下字母组合表达:u=文件所有者(user),g=同组用户(group),o=其他用户(others)。
Permition则由字母r、w、x组成。
$ chmod DigitalExpression FileName
DigitalExpression是用三个并排数字依次表达所有者、同组用户和其他用户的权限,每个数字按r=4、w=2、x=1将相应权限换算求和,如7=rwx、5=r-x,755=rwxr-xr-x。
文件查找
$ find [-L] Path FilterType FilterValue...
使用选项-L则查找时包含符号链接指向位置。
FilterType包括:-name 按文件名查找
FilterValue是FilterType对应的值,如要查找的文件名等。
文件解压缩
在保存解压后文件的目录下,执行:
$ tar -zxvf PackedFile
则将目标压缩文件解压缩至当前目录。
执行文件
定位到可执行文件即可运行,比如直接给出文件完整路径:
$ /usr/bin/java
注意例外情况,当可执行文件在当前目录时,需使用“./”前缀显式指明文件位置为当前目录:
basicthinker@ubuntu:/usr/bin$ ./java
因为如果不添加“./”,会默认使用 PATH 环境变量指明的文件位置:
basicthinker@ubuntu:~$ java
系统管理
查看端口帧听
# lsof -i :25
该命令是“list open file”的缩写,因为 Linux 把网络端口等均视为文件,所以有此用途并不奇怪。最后端口的完整写法可以是 tcp@localhost:25,注意和一般表示文件路径区分,tcp不是用户而是指协议 。
更改环境变量
通过编辑 /etc/environment 文件等方法固然可行,但是如下方式最为推荐:
# cd /etc/profile.d/
# vim FileName.sh
如果是新建文件,FileName可以任意设定,以添加环境变量 JAVA_HOME 为例,可以新建文件 java.sh 并写入如下内容:
export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.22
当不再需要该环境变量时,可以直接删除 java.sh 文件。这样管理,更加方便安全,背后的原由在于 /etc/profile 文件中有读取 profile.d 目录并执行其中 *.sh 文件的脚本。
远程登录
$ ssh UserName@HostAddress
远程拷贝
$ scp Source Destination
其中 Source 或 Destination 可为远程地址,格式形如:UserName@HostAddress:Path
查看安装包
$ dpkg -l *PackageName*
查看包的安装状态,包名中可使用通配符。列出结果的前三各字母表示安装状态:
第一列标识期望值,包括:
u 状态未知,这意味着软件包未安装,并且用户也未发出安装请求。
i 用户请求安装软件包。
r 用户请求卸载软件包。
p 用户请求清除软件包。
h 用户请求保持软件包版本锁定。
第二列标识软件包的当前状态,包括:
n 软件包未安装。
i 软件包安装并完成配置。
c 软件包以前安装过,现在删除了,但是它的配置文件还留在系统中。
u 软件包被解包,但还未配置。
f 试图配置软件包,但是失败了。
h 软件包安装,但是但是没有成功。
第三列标识错误状态,包括:
空表示没有问题
h 软件包被强制保持,因为有其它软件包依赖需求,无法升级。
r 软件包被破坏,可能需要重新安装才能正常使用(包括删除)。
x 软包件被破坏,并且被强制保持。
用户管理
创建用户
# adduser UserName
自动添加同名用户组(group)
将用户加入特定组
# usermod -G GroupName1,GroupName2 UserName
其中用户和组均已存在。
将用户从组中删除
# gpasswd -d UserName GroupName
实际是修改文件 /etc/group,通过 gpasswd 命令操作更安全,比 usermod 命令更简单直接。
查看用户属于哪些组
$ groups UserName
授予用户root权限
在用户使用sudo命令前,需确保该用户属于 sudoers 组,否则无法使用 sudo 授权。
打开sudoers文件:
# vim /etc/sudoers
在“root”行后面添加如下行:
%GroupName ALL=(ALL) ALL
则名为 GroupName 的组中所有用户均可使用 sudo 命令执行 root 权限。
另一种办法就是将现有用户加入到已经准许授予 root 权限的组中。假设 /etc/sudoers 文件中已经包含如下行:
%admin ALL=(ALL) ALL
说明 admin 组准许授予 root 权限。于是,可将当前用户加入到 admin 组中:
# adduser UserName admin