Linux使用记录1
2017-03-01 21:48
190 查看
The Linux Foundation
Debian Family Systems (such as Ubuntu)SUSE Family Systems (such as openSUSE)
Fedora Family Systems (such as CentOS)
Linux Structure and Installation
Linux支持的不同类型的文件系统传统硬盘文件系统:ext2,ext3,ext4,XFS,Btrfs,JFS,NTFS,etc.
闪存文件系统:ubifs,JFFS2,YAFFS,etc.
数据库文件系统
特殊文件系统:procfs,sysfs,tmpfs,debugfs,etc.
分区和文件系统
_ | Windos | Linux |
---|---|---|
分区 | Disk1 | /dev/sda1 |
文件系统类型 | NTFS/FAT32 | EXT3/EXT4/XFS.. |
Mounting Parameters | DriveLetter | MountPoint |
OS所在根目录 | C盘 | / |
Linux使用
/分割路径,(Windows使用
\),并且没有盘符。New drives作为目录挂载在单个文件系统中,通常再
/media目录下。(举例来说一个CD-ROM
FEDORA的目录可能是
/meida/FEDORA)
4. Boot Process 启动过程
图形界面
会话管理
锁屏CTRL-ALT-L
查看隐藏文件
CTRL-H
删除文件
.local/share/Trash/files
安装和更新软件
查找Linux文档
man
man topic
man -f topic列出包含topic的所有项相当于
whatis
man -k topic列出关于topic的项目(可以不含topic这几个字本身)相当于
apropos
man 3 topic列出第三章的相关内容
man -a topic列出所有章的相关内容
cmd --help列出关于某个指令的帮助
命令行操作
命令行模式选项
sudo基本操作
1. Logging In and Out
使用
ssh username@server.com远程连接
2. Rebooting and Shutting Down
shutdown
halt和
poweroff相当于
shutdown -h
reboot相当于
shutdown -r
$ sudo shutdown -h 10:00 "Shutting down for scheduled maintenance
Locating Applications 搜索命令
一般来说,可执行程序在/bin, /usr/bin,/sbin,/usr/sbin directories or under /opt.目录下。
使用
which可以定位应用,搜索命令所在路径和别名,如果
which没有找到。可以是使用
whereis,它会查找范围更大的目录。
whereis搜索命令所在路径及帮助文档所在位置选项
-b只查找可执行文件,
-m只查找帮助文件。
访问目录
第一次登陆系统或打开终端时,默认目录是家目录。可以使用
echo $HOME
Command | Result |
---|---|
pwd | 输出当前目录 |
cd ~或cd | 转到家目录 |
cd.. | 转到上级目录 |
cd - | 转到之前目录 |
6. 浏览文件系统
tree命令可以浏览整个文件系统树,使用
tree -d可以只看目录而不列出文件。
Command | Usage |
---|---|
cd/ | 更改到根目录 |
ls | 展示当前目录内容 |
ls -a | 展示所有文件(包括隐藏文件) |
tree | 展示文件系统树 |
ln可以用来创建硬链接和软链接(使用
-s选项),也叫symbolic或symlinks。
为file1创建一个硬链接
$ ln file1 file2
使用命令
$ ls -li file1 file2可以看到两个文件有相同的inode编号,说明只有一个文件,而另一个文件跟它链接在一起。
符号链接
$ ln -s file1 file4
$ ls -li file1 file4
file4不再是一个常规文件,它是一个链接文件,指向了file1,并且有不同的inode编号。
符号链接不占文件系统的额外空间。它非常方便因为可以指向不同的地方。
符号链接可以指向不同的甚至当前不存在的文件系统,当指向不存在的位置时,获得一个**dangling**link。
导航目录历史
cd -
pushd
popd
dirs显示目录信息
文件操作
查看文件Command | Usage |
---|---|
cat | 查看不是很长的文件,不提供滚屏 |
tac | 从文件末尾查看 |
less | 用来查看更大的文件,Use / to search for a pattern in the forward direction and ? for a pattern in the backward direction. |
tail | 默认输出最后10行 使用-n参数更改行数 |
head | 默认输出开头10行 |
touch创建文件或修改文件时间
$ touch <filename>创建空文件
$ touch -t 03201600 myfile设置特定时间戳
mkdir创建目录
rmdir删除目录,目录必须为空否则会失败。删除目录和目录中内容使用
rm -rf
Removing a File
Command | Usage |
---|---|
mv | 重命名 |
rm | 删除文件 |
rm -f | 强制删除 |
rm -i | 交互式删除 |
Command | Usage |
---|---|
mv | 重命名目录 |
rmdir | 删除空目录 |
rm -rf | 强制递归删除目录 |
文件搜索
1.标准文件流文件流,描述符
stdin 0
stdout 1
stderr 2
2. I/O重定向
$ do_something < input-file更改程序的输入,使得其读取file中的数据。
$ do_something > ouutput-file,将程序的输出定向到file。
因为stderrr和stdout不同,所以错误信息仍然会输出到终端。
如果想要重定向stderr到一个不同的文件,需要使用stderr的文件描述符编号2,
$ do_something 2 > error-file
将stdout和stderr的输出到相同文件
$ do_something > all-output-file 2>&1
bash终端允许一个更简单的语法:
$ do_something >& all-output-file
3. 管道pipes
可以将一个指令的输出作为另一个指令的输入。
$ command1 | command2 | command3
4. locate
locate命令通过查询一个预先建立好的数据库搜索包含关键词的目录或文件,可以使用
grep命令过滤查询结果
$ locate zip | grep bin。
locate命令所搜索的后台数据库路径
/var/lib/mlocate
locate命令使用的数据库是通过
updatedb命令更新的,一般该命令一天执行一次,也可以手动执行。
/etc/updatedb.conf配置文件
5. Wildcards 匹配文件名
Wildcard | Result |
---|---|
? | 匹配单个字符 |
* | 匹配任意字符串 |
[set] | 匹配集合中的任意字符 |
[!set] | 匹配任意不在集合中的字符 |
find [搜索范围] [搜索条件]会列出所有当前目录和子目录下的文件。
选项参数有
-name,只列出名字中含有特定模式的。
-iname忽略含特定模式的。
-type指定文件类型,d目录,l符号链接,f常规文件。
-user按照所有者搜索
-nouser按照没有所有者的文件
-mtion +10查找10天前修改的文件
-10 十天内修改的文件
10 10天当天修改的文件
atime文件访问时间
ctime改变文件属性
-size文件大小
-inumi结点编号
find /etc -size +20k -a -size -50k
-a逻辑与,
-o逻辑或
如果需要匹配,使用通配符匹配,通配符是完全匹配。
7. 使用高级find选项
find能够运行指令在其列出的结果上,使用
-exec选项实现。
查找并删除所有以.swp结尾的文件
$ find -name "*.swp" -exec rm {} ';'
-exec/-ok 命令 {}\;对搜索结果执行操作
{}花括号是一个占位符,用来填充find的结果。
注意该指令要以
';'(包括单引号)或
\;结尾。
也可以使用
-ok选项,会提示确认再执行指令,更安全。
8. 基于时间和大小查找文件
安装软件
文件操作
文件系统
分区挂载点
在使用一个文件系统前,需要将其挂载到文件系统树上。如果挂载到一个非空的目录上,该目录内之前的内容将会被覆盖并且不可访问,直到该文件系统被解除挂载。
所以通常挂载点都是空目录。
mount可以将一个文件系(可以使本地的也可以是网络的)附加在文件系统树上面。
参数包括
device node和
mount point
$ mount /dev/sda5 /home
单独使用
mount可以列出当前已挂载的文件系统。
命令
df -Th(disk-free)将会展示关于挂载文件系统使用统计量的信息。
网络文件系统
服务器端NFS
使用
sudo service nfs start命令启动NFS。
文本文件
/etc/exports包括了主机将要和其他系统通过NFS共享的目录和访问权限。每一项具有如下格式
/projects *.example.com(rw)
该项允许目录
/projects通过NFS以读写(rw)权限被挂载并与
example.com域的主机共享。
修改完配置文件后,使用
exportfs -av命令通知Linux更新,或通过
sudo service nfs restart重启NFS,但是这会比较慢。
客户机端NFS
通过修改
/etc/fstab文件完成系统启动后自动挂载远程文件系统。文件中的一项如下:
servername:/projects /mnt/nfs/projects nfs defaults 0 0
也可以通过下命令一次性挂载而不重新启动
$ mount servername:/projects /mnt/nfs/projects
如果
/etc/fstab文件没有被修改,那么远程挂载在下次启动时将不会出现。
文件系统架构
/bin和/sbin目录/bin目录包括可执行二进制,单用户模式下的基本命令和所有系统用户需要的基本命令。如
ps,
ls,
cp。
单用户模式下的非基本命令被放在
/usr/bin目录,
/sbin目录存放管理员所需的二进制文件,如
ifconfig,
shutdown。还有一个
/usr/bin目录存放不太必要的管理员程序。
现代Linux操作系统
/usr/bin和
/bin实际上是一样的。
/sbin和
/usr/sbin也是。
/dev目录
包含设备结点。
/var和/etc目录
/var目录中包含可能改变大小和内容的文件。如
系统日志文件/var/log
包和数据库文件/var/lib
打印队列/var/spool
临时文件/var/tmp
/etc目录是系统配置文件的存放地,不包含二进制程序,包含一些可执行脚本。
4. /boot目录
该目录包含很少的系统启动必需的文件。
如vmlinz,initramfs,config,System.map
5. /lib和/media目录
/lib目录包括了/bin和/sbin中的应用程序运行所需的通用代码。库文件名以ld或lib开头。
大部分是dll动态链接库,也叫做共享库,共享对象SO.
/media目录包括可以移除的媒介(如CD,DVD,USB),linux自动挂载这些可移除媒介到/media
6. /目录下其他目录
目录名 | 用途 |
---|---|
/opt | 可选应用软件包 |
/sys | Virtual pseudo-filesystem giving information about the system and the hardware. Can be used to alter system parameters and for debugging purposes |
/srv | Site-specific data served up by the system. Seldom used. |
/tmp | Temporary files; on some distributions erased across a reboot and/or may actually be a ramdisk in memory. |
/usr | 多用户应用,工具和数据 |
比较文件和文件类型
diff用来比较文件和目录。选项参数如下
diff Option | Usage |
---|---|
-c | Provides a listing of differences that include 3 lines of context before and after the lines differing in content |
-r | Used to recursively compare subdirectories as well as the current directory |
-i | 忽略大小写 |
-w | 忽略空格和制表符 |
diff <filename1> <filename2>
2. 使用diff3 和 patch
diff3可以同时将两个文件与同一个文件进行比较
$ diff3 myfile file1 file2
3. file命令查看文件类型
备份和压缩数据
使用cp或
rsync可以备份数据。
rsync效率更高,因为它会检查待复制的文件是否已经存在,而且只会拷贝改变的部分,相当于增量备份。
cp只能在本地机器上进行拷贝工作(除非是一个通过NFS挂载的文件系统)。但是
rsync可以在不同机器上进行复制,位置通过如下格式指定
target:path,target格式可以是
[user@]host,可选项是当远程机器和本地的用户不同时指定。
1. 使用rsync
$ rsync -r project-X archive-machine:archives/project-X
使用
-dry-run参数来测试
rsync命令是否产生想要的结果。
rsync sourcefile destinationfile
2. 压缩数据
Command | Usage |
---|---|
gzip | 最频繁使用的压缩工具 |
bzip2 | 产生比gzip更小的压缩结果 |
xz | 最空间高效的压缩工具 |
zip | 经常用来检查和解压来自其他系统的压缩文件 |
tar工具通常用来打包和一次性解压缩。
3. 使用gzip压缩数据
Command | Usage |
---|---|
gzip * | 将当前目录下所有文件分别压缩,添加.gz后缀 |
gzip -r projectx | 将指定目录及其子目录下的所有文件压缩 |
gunzip foo | 解压缩foo.gz中的foo。在底层,gunzip实际上和gzip -d一样 |
bzip2使用了与
gzip不同的压缩算法,可以产生更小的文件但需要更长的时间,通常用来压缩大文件。
Command | Usage |
---|---|
bzip2 * | 压缩当前目录下所有文件并添加后缀.bz2 |
bunzip2 *.bz2 | 解压以.bz2结尾的所有文件,和bzip2 -d 一样 |
xz是一种最空间高效的压缩工具,牺牲了压缩速度。
6. 使用zip处理文件
zip一般不用来在Linux中压缩文件,而用来校验和解压缩来自Windows的压缩文件。
Command | Usage |
---|---|
zip backup * | 压缩当前目录下的所有文件到backup.zip中 |
zip -r backup.zip ~ | 将家目录及其子目录中的所有文件打包至backup.zip |
unzip backup.zip | 解压到当前目录下 |
格式
tar [主选项+辅选项] 文件或目录
主选项
-c,创建新的档案文件
-r把要催当的文件追加到档案末尾
-t列出档案文件内容
-u更新文件
-x从档案文件中释放文件
辅助选项:
-f使用档案文件或设备,通常必选。
-k保存已经存在的文件,还原过程不进行替换。
-m还原文件时,把所有文件的修改时间设定为现在。
-M创建多卷的档案文件,以便在几个磁盘中存放。
-v详细报告tar处理的文件信息。
-w每一步都要求确认。
-z用gzip来压缩或解压缩。
Command | Usage |
---|---|
$ tar xvf mydir.tar | 将mydir.tar中的所有数据提取到mydir中 |
$ tar zcvf mydir.tar.gz mydir | 用gzip创建归档并压缩 |
$ tar jcvf mydir.tar.bz2 mydir | 用bz2创建归档并压缩 |
$ tar jcvf mydir.tar.xz mydir | 用xz创建归档并压缩 |
$ tar xvf mydir.tar.gz | 提取mydir.tar.gz中的所有文件到mydir中。注意:不需要告诉tar是用gzip格式 |
$ tar mydir.tar mydir; gzip mydir.tar $ gunzip mydir.tar.gz; tar xvf mydir.tar
但是这样比较慢并且浪费了空间,创建了不必要的中间
.tar中间文件。
8. 硬盘之间的拷贝
用户环境
账户,用户和组
确认当前用户who列出当前登陆用户
whoami列出当前用户
who的
-a选项会列出详细信息
添加和删除用户
$ sudo useradd newuser
$ sudo userdel newuser
删除用户时使用
-r选项可以同时删除该用户的家目录。
使用
id可以查看当前用户信息,使用
id username查看指定用户信息。
添加和删除用户组
$ sudo /usr/sbin/groupadd newgrooup
$ sudo /usr/sbin/groupdel newgroup
向一个已经存在的组添加用户使用
usermode,可以先查看用户已经所属的组
$ group username
,然后使用
$ sudo /usr/sbin/usermod -G newgroup username为用户添加组。
删除一个用户所属的组要将其保留下来的组作为参数传递
$ sudo /usr/sbin/usermod -G newgroup username
这样用户所属组只有
newgroup存在。
提升root权限
使用
su可以转换到管理员模式,使用
sudo可以临时以管理员权限运行指令。
sudo配置文件存储在
/etc/sudoers文件和
/etc/sudoers.d目录中。默认情况下sudoers.d目录为空。
Startup Files
当第一次进入Linux系统时,
/etc/profile会被读取,之后会按序查找以下文件
~/.bash_profile,
~/.bash_login,
~/.profile。Linux 登陆shell会加载搜索到的第一个文件并忽略后面的文件。
但是,每当开启一个新的shell或终端窗口,并没有执行一个完整的系统登陆;只有
~/.bashrc文件被读取加载,尽管这个文件在系统登陆时没有被读取。大多数发行版和用户将
~/.bashrc文件包括进三个启动文件之一。在Ubuntu,openSuse,CentOS版本中,用户必须将更改
~/.bash_profile文件来包括
~/.bashrc文件。
The
.bash_profilewill have certain extra lines, which in turn will collect the required customization parameters from
.bashrc.
环境变量
使用set,
env,
export命令可以查看环境变量。
1. 设置环境变量
默认情况下,在一个脚本中创建的变量只能在当前的shell中使用,子进程不能访问。如果想让子进程访问,需要使用
export命令。
Task | Command |
---|---|
查看特定变量的值 | echo $SHELL |
设置新变量 | export VARIABLE=value (or VARIABLE=value; export VARIABLE) |
永久添加变量 | 1.Edit ~/.bashrc and add the line export VARIABLE=value 2.Type source ~/.bashrc or just. ~/.bashrc (dot ~/.bashrc); or just start a new shell by typing bash |
代表家目录,也是用户登陆目录。不带参数的cd命令会跳转到HOME所指的目录。等同于~。
3. PATH变量
PATH是定义系统搜索命令的路径。路径用
:分割,空路径或
./代表当前目录。
添加一个私有的
bin目录到PATH:
$ export PATH=$HOME/bin:$PATH $ echo $PATH /home/me/bin:/usr/local/bin:/usr/bin:/bin/usr
PS1变量
SHELL变量
使用历史命令
bash保留了历史命令,使用方向键可以查看,使用history命令也可以查看。历史命令存储在
~/.bash_history中。
1. 使用History环境变量
HISTFILE存储历史文件位置
HISTFILESIZE存储历史文件最大行数。
HISTSIZE存储当前会话历史文件的最大行数。
2. 寻找和使用历史命令
key | Usage |
---|---|
Up/Down arrow key | 浏览历史命令列表 |
!!(bang-bang) | 执行上一条命令 |
CTRL-R | 搜索之前的命令 |
Syntax | Task |
---|---|
! | 开始历史替代 |
!$ | 指向最后一个参数 |
!n | 指向第n条命令 |
!string | 指向最近的以string开头的命令 |
创建别名
通常别名存在~/.bashrc文件中,因此在任何shell都可以使用他们。
alias会列出当前定义的别名。注意别名定义中
=两边没有空格,且定义要放在单引号或双引号包括的字符串中。
文件权限
Command | Usage |
---|---|
chown | 更改文件或目录的所有者 |
chgrp | 更高组的所有权 |
chmod | 更改文件的访问权限 |
2. chown
$ sudo chown user file-1
3.chgrp
相关文章推荐
- AIX和Linux使用差异记录
- 在Linux下使用script命令记录数据库操作
- 【转】Linux下Oracle sqlplus无法使用命令退格删除和历史记录的解决方法(使用rlwrap)
- linux 下的虚拟xp系统使用记录
- linux 下mysql的使用记录
- linux系统使用记录(1)
- Linux中的动态链接库使用记录
- Linux下Weblogic的使用问题记录
- Linux使用记录---bt5配置
- linux 使用 随记录
- 使用Linux的syslog记录cisco设备日志
- 使用Linux下script工具记录Oracle输出
- linux常用命令使用记录(一)
- linux下history命令显示历史指令记录的使用方法
- linux的一些基本命令(用来记录自己使用过的一些命令)
- Linux命令的一些记录(四):rpm命令的一些使用
- Linux的samba使用记录
- 转载只为记录经典之<使用linux中的sed编辑器>
- Linux - CMake使用记录
- (转)Linux Oracle下sqlplus无法使用命令退格删除和历史记录的解决方法(使用rlwrap)