目录
[显示]

1.摘要

今天在翻硬盘时发现了很久之前学习Linux系统使用时做的笔记,主要内容参考《鸟哥的Linux私房菜》。本篇是笔记中关于Linux日常操作有关的内容,包括热键、命令及几个技巧。

2. Shell热键

Tab*2
命令补齐

Ctrl+C
中断当前程序

Ctrl+D
=exit

切换终端
文字模式CTRL+ALT+F1-F6
图形模式CTRL+ALT+F7
启动xwindow:startx

3. 命令

3.1. 关机

shutdown
关机

sync
将数据同步写入硬盘中

reboot
重启

poweroff

halt

3.2. 系统管理

ls
列目录
参数
-al
列出所有的文件详细的权限与属性
 
    当为[ d ]则是目录,例如上表档名为『.gconf』的那一行;
    当为[ – ]则是文件,例如上表档名为『install.log』那一行;
    若是[ l ]则表示为连结档(link file);
    若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
    若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

info
chm版man
快捷键

A B
空格键 向下翻一页
[Page Down] 向下翻一页
[Page Up] 向上翻一页
[tab] 在node 之间移动,有node 的地方,通常会以* 显示。
[Enter] 当光标在node 上面时,按下Enter 可以进入该node 。
b 移动光标到该info 画面当中的第一个node 处
e 移动光标到该info 画面当中的最后一个node 处
n 前往下一个node 处
p 前往上一个node 处
u 向上移动一层
s(/) 在info page 当中进行搜寻
h 显示求助菜单
? 命令一览表
q 结束这次的info page

文件路径:/usr/share/info/

netstat
网络的联机状态

su
切换用户

uname
察看实际的核心版本

who
看目前有谁在在线

man
manual
第一行括号中的数字

1 使用者在shell环境中可以操作的命令或可运行文件
2 系统核心可呼叫的函数与工具等
3 一些常用的函数(function)与函式库(library),大部分为C的函式库(libc)
4 装置文件的说明,通常在/dev下的文件
5 配置文件或者是某些文件的格式
6 游戏(games)
7 惯例与协议等,例如Linux文件系统、网络协议、ASCII code等等的说明
8 系统管理员可用的管理命令
9 跟kernel有关的文件

快捷键
/向下查找关键字
?向上查找关键字
n下一个
N上一个
描述文件路径:/usr/share/man
/etc/man.config
参数
-f
按名称查找命令
-k
按关键词查找命令
ps
查看背景运行的程序

3.3. 日常处理

cal
显示日历
bc
计算器

date
显示日期

chgrp
改变文件所属群组

chmod
改变文件的权限, SUID, SGID, SBIT等等的特性
r:4
w:2
x:1

chown
改变文件拥有者

mkdir
建立目录
-p 自动创建子目录
-m 设置新目录权限

pwd
显示当前目录

rm
删除文件(目录)
-r 强制删除非空目录
-p 删除父目录

ls
列文件

ln
制作硬连接或快捷方式

cp
复制文件
参数
[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
[root@www ~]# cp [options] source1 source2 source3 …. directory
选项与参数:
-a  :相当於-pdr 的意思,至於pdr 请参考下列说明;(常用)
-d  :若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
-f  :为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
-i  :若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-l  :进行硬式连结(hard link)的连结档创建,而非复制文件本身;
-p  :连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-r  :递回持续复制,用於目录的复制行为;(常用)
-s  :复制成为符号连结档(symbolic link),亦即『捷径』文件;
-u  :若destination 比source 旧才升级destination !
最后需要注意的,如果来源档有两个以上,则最后一个目的档一定要是『目录』才行!

mv
移动文件、改名
-f  :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i  :若目标文件(destination) 已经存在时,就会询问是否覆盖!
-u 若目标文件已经存在,且source 比较新,才会升级(update)

touch
修改文件时间或建置新档
选项与参数:
-a  :仅修订access time;
-c  :仅修改文件的时间,若该文件不存在则不创建新文件;
-d  :后面可以接欲修订的日期而不用目前的日期,也可以使用–date="日期或时间"
-m  :仅修改mtime ;
-t  :后面可以接欲修订的时间而不用目前的时间,格式为[YYMMDDhhmm]

umask
文件默认权限

chattr
配置文件隐藏属性
选项与参数:
+   :添加某一个特殊参数,其他原本存在参数则不动。
–   :移除某一个特殊参数,其他原本存在参数则不动。
=   :配置一定,且仅有后面接的参数
 
A  :当配置了A 这个属性时,若你有存取此文件(或目录)时,他的存取时间atime
     将不会被修改,可避免I/O较慢的机器过度的存取磁碟。这对速度较慢的计算机有帮助
S  :一般文件是非同步写入磁碟的(原理请参考第五章sync的说明),如果加上S 这个
     属性时,当你进行任何文件的修改,该更动会『同步』写入磁碟中。
a  :当配置a 之后,这个文件将只能添加数据,而不能删除也不能修改数据,只有root
     才能配置这个属性。 
c  :这个属性配置之后,将会自动的将此文件『压缩』,在读取的时候将会自动解压缩,
     但是在储存的时候,将会先进行压缩后再储存(看来对於大文件似乎蛮有用的!)
d  :当dump 程序被运行的时候,配置d 属性将可使该文件(或目录)不会被dump 备份
i  :这个i 可就很厉害了!他可以让一个文件『不能被删除、改名、配置连结也无法
     写入或新增数据!』对於系统安全性有相当大的助益!只有root 能配置此属性
s  :当文件配置了s 属性时,如果这个文件被删除,他将会被完全的移除出这个硬盘
     空间,所以如果误删了,完全无法救回来了喔!
u  :与s 相反的,当使用u 来配置文件时,如果该文件被删除了,则数据内容其实还
     存在磁碟中,可以使用来救援该文件喔!
注意:属性配置常见的是a 与i 的配置值,而且很多配置值必须要身为root 才能配置

lsattr
显示文件隐藏属性
-a :将隐藏档的属性也秀出来;
-d :如果接的是目录,仅列出目录本身的属性而非目录内的档名;
-R :连同子目录的数据也一并列出来! 

3.4. 文件查看

cat
由第一行开始显示文件内容
-A  :相当於-vET 的整合选项,可列出一些特殊字符而不是空白而已;
-b  :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E  :将结尾的断行字节$ 显示出来;
-n  :列印出行号,连同空白行也会有行号,与-b 的选项不同;
-T  :将[tab] 按键以^I 显示出来;
-v  :列出一些看不出来的特殊字符

tac 
从最后一行开始显示,可以看出tac 是cat 的倒著写!

nl  
显示的时候,顺道输出行号!

more
一页一页的显示文件内容
    空白键(space):代表向下翻一页;
    Enter         :代表向下翻『一行』;
    /字串         :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
    :f            :立刻显示出档名以及目前显示的行数;
    q             :代表立刻离开more ,不再显示该文件内容。
    b 或[ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
 
less
与more 类似,但是比more 更好的是,他可以往前翻页!
    空白键    :向下翻动一页;
    [pagedown]:向下翻动一页;
    [pageup]  :向上翻动一页;
    /字串     :向下搜寻『字串』的功能;
    ?字串     :向上搜寻『字串』的功能;
    n         :重复前一个搜寻(与/ 或? 有关!)
    N         :反向的重复前一个搜寻(与/ 或? 有关!)
    q         :离开less 这个程序;
head
只看头几行
tail
只看尾巴几行
od 
以二进位的方式读取文件内容!
-t  :后面可以接各种『类型(TYPE)』的输出,例如:
      a       :利用默认的字节来输出;
      c       :使用ASCII 字节来输出
      d[size] :利用十进位(decimal)来输出数据,每个整数占用size bytes ;
      f[size] :利用浮点数值(floating)来输出数据,每个数占用size bytes ;
      o[size] :利用八进位(octal)来输出数据,每个整数占用size bytes ;
      x[size] :利用十六进位(hexadecimal)来输出数据,每个整数占用size bytes ;

file
观察文件类型

3.5. 文件查找

which
寻找『运行档』
-a :将所有由PATH 目录中可以找到的命令均列出,而不止第一个被找到的命令名称

whereis
寻找特定文件

locate
用文件名关键字查找
-i  :忽略大小写的差异;
-r  :后面可接正规表示法的显示方式

find
在硬盘上查找文件
1. 与时间有关的选项:共有-atime, -ctime 与-mtime ,以-mtime 说明
   -mtime  n :n 为数字,意义为在n 天之前的『一天之内』被更动过内容的文件;
   -mtime +n :列出在n 天之前(不含n 天本身)被更动过内容的文件档名;
   -mtime -n :列出在n 天之内(含n 天本身)被更动过内容的文件档名。
   -newer file :file 为一个存在的文件,列出比file 还要新的文件档名
2. 与使用者或群组名称有关的参数:
   -uid n :n 为数字,这个数字是使用者的帐号ID,亦即UID ,这个UID 是记录在
            /etc/passwd 里面与帐号名称对应的数字。这方面我们会在第四篇介绍。
   -gid n :n 为数字,这个数字是群组名称的ID,亦即GID,这个GID 记录在
            /etc/group,相关的介绍我们会第四篇说明~
   -user name :name 为使用者帐号名称喔!例如dmtsai
   -group name:name 为群组名称喔,例如users ;
   -nouser    :寻找文件的拥有者不存在/etc/passwd 的人!
   -nogroup   :寻找文件的拥有群组不存在於/etc/group 的文件!
                当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者,
                这是可能的!在这个时候,就可以使用-nouser 与-nogroup 搜寻。
3. 与文件权限及名称有关的参数:
   -name filename:搜寻文件名称为filename 的文件;
   -size [+-]SIZE:搜寻比SIZE 还要大(+)或小(-)的文件。这个SIZE 的规格有:
                   c: 代表byte,k: 代表1024bytes。所以,要找比50KB
                   还要大的文件,就是『-size +50k 』
   -type TYPE    :搜寻文件的类型为TYPE 的,类型主要有:一般正规文件(f),
                   装置文件(b, c), 目录(d), 连结档(l), socket (s),
                   及FIFO (p) 等属性。
   -perm mode  :搜寻文件权限『刚好等於』mode 的文件,这个mode 为类似chmod
                 的属性值,举例来说,-rwsr-xr-x 的属性为4755 !
   -perm -mode :搜寻文件权限『必须要全部囊括mode 的权限』的文件,举例来说,
                 我们要搜寻-rwxr–r– ,亦即0744 的文件,使用-perm -0744,
                 当一个文件的权限为-rwsr-xr-x ,亦即4755 时,也会被列出来,
                 因为-rwsr-xr-x 的属性已经囊括了-rwxr–r– 的属性了。
   -perm +mode :搜寻文件权限『包含任一mode 的权限』的文件,举例来说,我们搜寻
                 -rwxr-xr-x ,亦即-perm +755 时,但一个文件属性为-rw——-
                 也会被列出来,因为他有-rw…. 的属性存在!
4. 额外可进行的动作:
   -exec command :command 为其他命令,-exec 后面可再接额外的命令来处理搜寻到
                   的结果。
   -print        :将结果列印到萤幕上,这个动作是默认动作!

3.6. 文本处理

grep

sed
分析管线数据

printf
格式化输出

awk
文本数据处理

diff
按行对比

cmp
按字节对比

patch
制作差异档案

pr
打印相关

3.7. 磁盘分区

badblocks
磁盘检验(坏扇区)

dumpe2fs
查看superblock信息

df
磁盘使用状况

du
目录使用状况

fsck
文件系统检查

fsck
磁盘检验(检查文件系统)

mkswap
格式化swap分区

partprobe
同步分区表

mkfs
格式化

4. 技巧

后台运行命令
ZSH用户可以在命令后加上&|或是&!
设置Shell的nohup属性,这样所有后台任务都将忽略hangup信号
取得运行中进程的输出
~$ touch log
~$ gdb -p 22499
(gdb) p close(1) # This closes the stdout of the running process
(gdb) p open("/home/…/log", 1) # This will open the log-file with O_WRITE (gdb) c

fc
fc命令会根据$EDITOR变量打开一个编辑器,让你编辑上一条命令
可以使用Ctrl-x,Ctrl-e来编辑当前行的命令。

bindkey
绑定键盘快捷键,执行下面这条命令后,你就可以使用Ctrl-j回到上一条命令:
bindkey "^j" history-search-backward

lsof
查看打开的文件

man ascii
以8进制,10进制以及16进制显示ASCII码表
^find^replace
$ /etc/init.d/foo stop
$ ^stop^start

vi
:w ! sudo tee %
临时取得sudo权限保存