以下命令在 Ubuntu 12.04 64位下测试通过。
在linux中一切都是文件,包括文件夹也是一种特殊的文件,甚至设备也是文件。
查看当前系统的版本
- cat /proc/version
- #Linux version 3.2.0-29-generic (buildd@allspice) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 2012
- uname -a
- #Linux web 3.2.0-29-generic #46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
- cat /etc/issue
- #Ubuntu 12.04.1 LTS \n \l
显示一个命令的路径
- which adduser
- /usr/sbin/adduser
- which groups
- /usr/sbin/groups
- which ls
- /bin/ls
查看在线的用户
who
显示当前用户的账号
whoami
重启
reboot
关机
shutdown
查看当前用户
users
查看当前用户所在的组
groups
修改当前用户的密码
passwd
修改用户user1的密码
passwd user1
切换用户user1
su user1
切换到root用户
su
创建目录
mkdir dir1
删除目录
rmdir dir1
切换目录
cd
返回上级目录
cd ..
新建文件file1
touch file1
新建并编辑文件file1
vi file1
删除文件
rm
显示文件内容
cat file1
more file1
less file1
cat还有一个功能就是可以新建文件,并且同时将输入的内容保存到文件中
cat >> file1
敲入上面的命令后,你就可以开始输入文件的内容了,还可以换行,如果输入完毕,就同时按下ctrl+D,就会结束输入,并且把刚才输入的内容保存到文件中。
显示文件的前面10行
通过参数可以指定显示前面的N行
head file1
显示文件的最后10行
通过参数可以指定显示后面的N行
tail file1
列出【home】目录的所有文件
ls /home
用列表的方式列出【home】目录的所有文件,不包括隐藏文件
会显示文件的权限,所有者,大小,最后更新时间
ls -l /home
用列表的方式列出【home】目录的所有文件,包括隐藏文件,以 . 开头的文件就是隐藏文件。
会显示文件的类型,权限,所有者,所有者的用户组,大小,最后更新时间
ls -al /home
更改文件的所有者
chown user1:group1 file1
更改文件的权限
a所有用户,+添加权限,rwx读、写、执行权限
chmod a+rwx file1
显示一个命令的说明
说明包括用法和解释
man cat
显示一个命令的参数和基本用法
在命令后面加上--help
cat --help
很多时候,如果不知道一个命令的具体用法,或者是有哪些参数,参数是什么意思,都可以使用上面的两个命令来查看一下。
添加用户user1
adduser user1
添加用户组
addgroup group1
添加用户的同时,初始化用户到一个组
adduser --ingroup group1 user11
添加已有用户到已有的组
adduser user12 group1
cut命令
cut命令可以对文件做一些分隔,分析的处理,是基于行来处理文件。将文件的每一行按照规律分隔,获取其中的部分内容。
比如说我想得到系统中的所有用户的登录账号,大家都知道系统中有一个/etc/passwd文件,里面有这些内容,但是同时也有其他的内容。
- cut -d: -f1 /etc/passwd
上面的命令做什么呢?-d参数用来指明分隔符,因为passwd文件的每一行是用冒号分隔的,-f参数指明你想要的字段,这里指明要第一个字段,也就是登陆账号字段,最后指明文件的位置就可以了。
如果是想要几个字段,可以使用-f1-3代表第一个到第三个字段,-f1,3代表第一个和第三个字段。
- cut -d: -f1 /etc/passwd >> /tmp/users
使用上面的命令,cut命令的结果就会保存到/tmp/users文件中。
wc命令
wc命令用来统计文件的行数,字符数,单词数,字节数信息。
- root@web:/home# wc -l file1
- 4613 file1
- root@web:/home# wc -c file1
- 221987 file1
- root@web:/home# wc -c file1
- 221987 file1
- root@web:/home# wc -m file1
- 220166 file1
- root@web:/home# wc -L file1
- 393 file1
- root@web:/home# wc -w file1
- 11902 file1
vi编辑器
vi newfile
两种模式:命令模式和插入模式。
首先进入的是命令模式,按a,i,o可以进入插入模式,在最下面的一行显示-- INSERT --,代表现在可以编辑文件了。如果想回到命令模式,需要按下ESC键。
按下a会在下一个字符开始插入,按下i会在当前位置开始插入,按下o会从新的一行开始插入。
在命令模式下常用的命令包括
:w newfile2,另存为newfile2。
:wq,保存并且退出。
:q!,强行退出,不保存。
:w,只保存,不退出。
gg,回到文件的第一个字符。
G,到达文件的最后一个字符。
dd,删除光标所在的当前行。
x,删除光标所在位置的一个字符。
X,删除光标所在位置之前的一个字符。
h,向左移动一个字符。
j,向下移动一个字符。
k,向上移动一个字符。
l,向右移动一个字符。
ctrl+b,向后移动一页。
ctrl+f,向前移动一页。
ctrl+u,向后移动半页。
ctrl+d,向前移动半页。
w,跳到下个单词的开头。
e,跳到下个单词的结尾。
$,移动到光标所在行的末尾。
0,移动到光标所在行的开头。
u,undo操作,在误操作之后可以使用。
:set nu,在每一行前面列出行号。
:100,可以直接跳到第100行。
ggdG,清空文件的内容。
在某些时候,需要清空文件内容,而不删除文件。比喻有些日志文件(log.txt);在linux下的命令为:
清空文件log.txt的内容。
- true > log.txt
查询命令locate
locate是查询索引,在索引中查询是否存在匹配条件的文件,这就需要先做索引,系统每天自动进行索引工作。
也可以通过手动执行updatedb来建立索引。
- updatedb
- locate file1
查询命令find
find是实时搜索,所以查询消耗的时间要比locate长。
- find / -name "file1"
查询命令grep
grep的查询对象是文件的内容,以行为单位进行条件的匹配。
- grep -c "using" file1
在file1中查询using出现的个数。
grep是一个强大的文本搜索工具,通过正则表达式搜索匹配的文本,进行输出。
重定向
将hello重定向到readme文件中
- echo "hello" > readme
将1,2,3重定向追加到readme文件中,追加是两个>符号。
- echo "1,2,3" >> readme
管道
将前一个命令的输出作为下一个命令的输入,|符号链接两个命令。
- user1@web:~$ cat /etc/passwd | cut -d: -f1
- root
- daemon
- bin
- sys
- sync
- games
- man
- lp
- news
- uucp
- proxy
- www-data
- backup
- list
- irc
- gnats
- nobody
- libuuid
- syslog
- messagebus
- sshd
- ntp
- user1
- user11
- user12
- mysql
/etc/passwd文件
这个文件存放所有的用户信息
user1:x:1000:1000:user1.web,,,:/home/user1:/bin/bash
信息分为几个部分,每部分用冒号:隔开。
第一部分,登陆账号。
第二部分,密码,密码放在另外一个文件/etc/shadow中(密文),这里用一个字符占位。如果为空,代表用户没有密码。
第三部分,用户ID。
第四部分,用户初始化组的ID。
第五部分,用户描述信息,全名等信息。
第六部分,用户主目录,工作目录,登录之后所处的目录。
第七部分,用户的shell。
/etc/group文件
这个文件存放所有用户组的信息。
user1:x:1000:user1,user11
信息分为几个部分,每部分用冒号:隔开。
第一部分,组名称。
第二部分,组密码。
第三部分,组ID。
第四部分,组包含的用户,用逗号分隔。上面的用户组user1中包含user1和user11两个用户。
/etc/shadow文件
这个文件保存所有用户的密码信息。
- user1:$6$UA2YOwOJ$tn.u3BmF1AjESuzbmmoMkMdjC1B4oUs3I0aA4bq2v.9auayz4Baz3SuZYCtM1xRqQUhjYYmPb4FF1XzPtE1l4/:15636:0:99999:7:::
信息分为几个部分,每部分用冒号:隔开。
第一部分,登陆账号。
第二部分,经过加密的密码,如果不想让当前用户登录,把这部分的内容修改为*或者!。
第三部分,最近更改密码的日期,日期以1970年1月1日作为第一天,然后依次加1。
第四部分,密码不可更改的天数。
第五部分,密码需要重置的天数。
第六部分,密码重置前的警告天数,就是在到达必须重置的日期之前的几天就会提示你更改密码。
第七部分,密码过期的宽限天数,就是在密码到达重置的天数,还没有重置,在后面的几天还可以继续使用。
第八部分,账号失效时间。
第九部分,保留。
chkconfig
查看开机自启动列表
- chkconfig --list
很多时候,我们需要编译源代码,然后安装一个应用。
源代码通常是tar.gz或者tar.bz2的,需要先解压释放,然后在进行编译和安装。
- tar zxvf apr-1.4.6.tar.gz
- cd apr-1.4.6
- ./configure
- make
- sudo make install
tar是一个归档的命令,就是将一堆文件,归档成一个文件,在需要的时候再进行释放。同时还支持压缩。
c,创建归档文件
x,释放归档文件
z,gz压缩
- tar cf demo.tar demo
- tar xf demo.tar
- tar czf demo.tar.gz demo
- tar xzf demo.tar.gz
link
建立连接,ln
-s,软连接,符号链接,有点像windows中的快捷方式。删除源文件,链接文件还存在,但是打开连接文件会失败,提示找不到文件。
-d,硬链接,有点像备份。删除源文件,连接文件依然存在,而且可以打开。
修改源文件,对应的软硬链接都会同步修改。硬链接应该是分配了新的空间,但是信息会和源文件进行同步。
两者在用ls -l查看的时候显示不一样。
- ls -s/-d target link_name
- user1@web:~$ ln -s demo1 demo1-slink
- user1@web:~$ ln -d demo1 demo1-dlink
- user1@web:~$ ls -l demo1
- -rw-rw-r-- 2 user1 user1 7 Oct 23 21:30 demo1
- user1@web:~$ ls -l demo1*
- -rw-rw-r-- 2 user1 user1 7 Oct 23 21:30 demo1
- -rw-rw-r-- 2 user1 user1 7 Oct 23 21:30 demo1-dlink
- lrwxrwxrwx 1 user1 user1 5 Oct 25 10:25 demo1-slink -> demo1
查询进程
- ps -ef | grep nginx
杀死进程
- kill 进程号
取消开机启动
- update-rc.d -f nginx remove
停止一个apache2网站
- a2dissite blog
- service apache2 reload
启动一个apache2网站
- a2ensite blog
- service apache2 reload
踢出登陆的用户
- Last login: Thu Oct 25 23:23:27 2012 from 106.3.102.45
- root@web:~# who
- root pts/3 2012-10-25 23:27 (106.3.102.45)
- root pts/0 2012-10-25 21:40 (106.3.102.45)
- root pts/2 2012-10-25 22:12 (106.3.102.45)
- root pts/4 2012-10-25 22:21 (106.3.102.45)
- root pts/5 2012-10-25 23:23 (106.3.102.45)
- root@web:~# pkill -KILL -t pts/0
- root@web:~# pkill -KILL -t pts/2
- root@web:~# pkill -KILL -t pts/4
- root@web:~# pkill -KILL -t pts/5
- root@web:~# who
- root pts/3 2012-10-25 23:27 (106.3.102.45)
清屏命令
- clear 本文转自 virusswb 51CTO博客,原文链接:http://blog.51cto.com/virusswb/1034437,如需转载请自行联系原作者