linux基本命令
liunx基本命令
显示文件内容
使用过DOS 命令的人都应该知道,我们可以使用type命令来查看一个文件的内容。在Li
nux下有五个相关的命令,功能各有千秋,不过它们都象type命令一样,只能用来查看文
本文件。
1) cat命令
cat命令是最象type命令的,使用的方法很简单:“cat 文件名”。不过比type命令更强
大的是,它可以同时查看多个文件:“cat 文件名一 文件名二”。
2) more命令
如果文本文件比较长,一屏无法显示完,那么使用cat 命令就可能无法看清。这里我们可
以简单地使用more来代替cat命令即可。其效果与type 文件名/p 类似。使用more命令将
一次显示一屏文本,显示满后,停下来,并提示出已显示全部内容的百分比,按空格键就
可以看到下一屏。
3) less命令
less命令的功能几乎和more命令一样,也是按页显示文件,不同之处在于less 命令在显示
文件时允许用户既可以向前又可以向后翻阅文件。
向前翻:按b键;
向后翻:按p键;
指定位置:输入百分比
退出:q
我经常使用more和less,几乎不使用cat 查看文件。
4) head 命令
通过head 命令可以仅查看某文件的前几行,格式为:
head 行数 文件名
如果未指定行数,则使用默认值10。
5) tail命令
与head 命令相对应的,我们可以使用tail命令来查看文件尾部的内容。通常用来实时监测
某个文件是否被修改,通常用来观察日志。如:
tail -f maillog
编辑文件
在Red Hat Linux 7 中有许多文字编辑工具,其中最常用的应该是vi,这是一个广泛应用
于所有UNIX系统的编辑器。它的使用有些特别:
首先,可以使用命令“vi 文件名”打开一个文件。
刚启动的时候,vi处于命令状态,不能够输入任何字符。在这个状态下,可以使用方向键
进行移动,而需要输入内容时,你需要输入“i”或“a”命令进入编辑状态。编辑完成后,
你需要按下“ESC”键回到命令状态。
在命令状态下,你可以输入“:q!”不存盘退出,输入“q”存盘退出。
5. 文件的复制、删除与移动
大家都早已熟知在DOS 下我们可以使用copy、del、move命令来实现文件的复制、删除与
移动。下面我们说说如何在Linux系统中做以上操作。
1) cp 命令:文件/目录复制命令
它的语法格式为:cp [选项] 源文件或目录 目标文件或目录
常用的选项有:
a 该选项常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,就象DO
S中的xcopy /s一样
f 如果目标文件或目录已存在,就覆盖它,并且不做提示
i 与f选项正好相反,它在覆盖时,会让用户回答“Y”来确认
p 使用该选项,复制文件时将保留修改时间和访问权限
r 若给出的源是一个目录,那么cp 将递归复制该目录下所有的子目录和文件,不过这要
求目标也是一个目录名
另外,大家要注意的是,如果源是文件名,目标是目录名的话,那么使用cp 命令可以指定
多个源文件名。如:
$ cp a.txt b.txt /home/user1
该命令将把a.txt 和b.txt文件复制到/home/usr1 目录中。
2) rm命令:文件/目录删除命令
它的语法格式为:rm [选项] 文件 …
常用的选项有:
f 在删除过程中不给任何指示,直接删除
r 指示rm将参数中列出的全部目录和子目录都递归地删除
i 交互式的删除,每个文件在删除时都给出提示
使用rm命令时一定要小心,特别是以root 用户登录时,我就看到过一个朋友在使用rm命
令删除/home/tmp 目录时将命令“rm -rf /home/tmp”误输成了 “rm -rf / home/tmp”,结
果等他走回电脑面前,整个系统都被删除了!
3) mv命令:文件/目录移动命令
它的语法格式为:mv [选项] 源文件或目录 目标文件或目录
常用的选项有:
f 如果操作要覆盖某已有的目标文件时不给任何指示
i 交互式的操作,如果操作要覆盖某已有的目标文件时会询问用户是否覆盖
mv命令的执行效果与参数类型的不同而不同!
第一参数(源) 第二个参数(目标) 结果
文件名 文件名 将源文件名改为目标文件名
文件名 目录名 将文件移动到目标目录
目录名 目录名 目标目录已存在:源目录移动到目标目录
目标目录不存在:改名
目录名 文件名 出错
目录相关操作
1) 创建新目录:mkdir,它的使用与DOS 下的md 相同:mkdir 目录名;
2) 删除空目录:rmdir,它的使用与DOS下的rd相同:rmdir 目录名;
3) 改变目录:cd,它的使用与DOS下的cd 命令基本相同,唯一一个不同的是,不管目
录名是什么,cd 与目录名之间必须有空格,也就是:“cd/”、“cd..”、“cd.”都是非法
的,而应该输入:“cd /”、“cd ..”、“cd .”,如果直接输入命令“cd”,而不加任何
参数,将回到这个用户的主目录。
4) 显示当前目录:pwd
5) 列目录命令:ls,相当于DOS下的dir
它的语法为:ls [选项] [目录或文件]
常用的选项有:
a 显示指定目录下所有的子目录与文件,包括隐藏文件;
c 按文件的修改时间排序
l 采用长格式来显示文件的详细信息,每个文件一行信息,其内容为:文件类型与权限
链接数 文件属主 文件属组 文件大小 最近修改时间 文件名
文件与目录的权限操作
在Linux系统中,每一个文件和目录都有相应的访问许可权限,我们可以用它来确定谁可
以通过何种方式对文件和目录进行访问和操作。文件或目录的访问权限分为可读、可写和
可执行三种,分别以r,w,x表示,其含义为:
r w x
文件 可读 可写 可执行
目录 可列出目录 可在目录中做写操作 可以访问该目录
在文件被创建时,文件所有者可以对该文件的权限进行设置。
对于一个文件来说,可以将用户分成三种,并对其分别赋予不同的权限:
1) 文件所有者
2) 与文件所有者同组用户
3) 其它用户
每一个文件或目录的访问权限都有三组,每组用三位表示,如:
d rwx r-x r--
第一部分:这里的d 代表目录,其它的有:- 代表普通文件 c 代表字符设备文件;
第二部分:文件所有者的权限字,这里为r w x表示可读、可写、可执行 (目录的可执行
指的可以进入目录);
第三部分:与文件所有者同组的用户的权限字,这里为r - x表示可读、不可写、可执行。
由于同组用户之间交流较多,让他看看文件,别乱改就行了嘛。
第四部分:其它用户的权限字,这里为- - -,当然给我无关的人嘛,我的文件当然不但不
给你写,也不让你读。
1) 文件/目录权限设置命令:chmod
这是Linux系统管理员最常用到的命令之一,它用于改变文件或目录的访问权限。该命令
有两种用法:
用包含字母和操作符表达式的文字设定法
其语法格式为:chmod [who] [opt] [mode] 文件/目录名
其中who 表示对象,是以下字母中的一个或组合:
u:表示文件所有者
g:表示同组用户
o:表示其它用户
a:表示所有用户
opt 则是代表操作,可以为:
+:添加某个权限
-:取消某个权限
=:赋予给定的权限,并取消原有的权限
而mode则代表权限:
r:可读
w:可写
x:可执行
例如:为同组用户增加对文件a.txt 的读写权限:
chmod g+rw a.txt
用数字设定法
而数字设定法则更为简单:chmod [mode] 文件名
关键是mode的取值,一开始许多初学者会被搞糊涂,其实很简单,我们将rwx看成二进
制数,如果有则有1 表示,没有则有0 表示,那么rwx r-x r--则可以表示成为:
111 101 100
再将其每三位转换成为一个十进制数,就是754。
例如,我们想让a.txt 这个文件的权限为:
自己 同组用户 其他用户
可读 是 是 是
可写 是 是
可执行
那么,我们先根据上表得到权限串为:rw-rw-r--,那么转换成二进制数就是110 110 100,
再每三位转换成为一个十进制数,就得到664,因此我们执行命令:
chmod 664 a.txt
2) 改变文件的属主命令:chown
语法格式很简单:chown [选项] 用户名 文件/目录名
其中最常用的选项是“R”,加上这个参数,可以将整个目录里的所有子目录和文件的属
主都改变成指定用户。
3) 改变文件属组命令:chgrp
该命令也很简单:chgrp 组名 文件名
3.3 用户管理
用户管理,主要的工作就是建立一个合法的用户帐户、设置和管理用户的密码、修改用户
帐户的属性以及在必要时删除已经废弃的用户帐号。
1. 增加一个新用户
在Linux系统中,只有root 用户才能够创建一个新用户,如下的命令将新建一个登录名us
er1 的用户。
# useradd user1
但是,这个用户还不能够登录,因为还没给它设置初始密码,而没有密码的用户是不能够
登录系统的。在默认情况下,将会在/home目录下新建一个与用户名相同的用户主目录。
如果需要另外指定用户主目录的话,那么可以使用如下命令:
# useradd -d /home/xf user1
同时,该用户登录时将获得一个Shell程序:/bin/bash,而假如你不想让这个用户登录,也
就可以指定该用户的Shell程序为:/bin/false,这样该用户即使登录,也不能够执行Linux
下的命令:
# useradd -s /bin/false user1
在Linux中,新增一个用户的同时会创建一个新组,这个组与该用户同名,而这个用户就
是该组的成员。如果你想让新的用户归属于一个已经存在的组,则可以使用如下命令:
# useradd -g user user1
这样该用户就属于user组的一员了。而如果只是想让其再属于一个组,那么应该使用:
# useradd -G user user1
完成了这一操作后,你还应该使用passwd 命令为其设置一个初始密码。
2. 删除一个用户
删除用户,只需使用一个简单的命令“userdel 用户名”即可。不过最好将它留在系统上的
文件也删除掉,你可以使用“userdel -r 用户名”来实现这一目的。
3. 修改用户属性
在前面我们看到了在新建一个用户的时候如何指定它的用户主目录,如何指定它的Shell,
如何设置它所属的组…等等。在Linux中提供了一个命令来实现:
usermod -g组名 -G 组名 -d 用户主目录 -s 用户Shell
还有一种直接的方法,那就是修改/etc/passwd 文件,在这个文件中每个用户占用一行,它
的内容为:
用户名:密码:用户ID:组ID:用户全名:用户主目录:用户Shell
不过值得注意的是,密码这一项通常是用一个*号代替的,你是看不到的。
4. 增加一个组
还记得Linux的文件可以为同组的人、非同组的人设置不同的访问权限吗?我们可以根据
自己的需要创建用户组:
groupadd 组名
5. 删除一个组
同样的,我们有时会需要删除一个组,它的命令就是groupdel 组名。
6. 修改组成员
如果我们需要将一个用户加入一个组,只需编辑/etc/group 文件,将用户名写到组名的后面。
例如将newuser用户加入到softdevelop 组,只需找到softdevelop 这一行:
softdevelop:x:506:user1,user2
然后在后面加上newuser,形成:
softdevelop:x:506:user1,user2,newuser
另外,在Red Hat Linux中还提供一个图形化的用户管理工具:userconf,通过它可以更直
接地进行用户管理。
一。 通用命令:
1. date :print or set the system date and time
2. stty -a: 可以查看或者打印控制字符(Ctrl-C, Ctrl-D, Ctrl-Z等)
3. passwd: print or set the system date and time (用passwd -h查看)
4. logout, login: 登录shell的登录和注销命令
5. pwd: print or set the system date and time
6. more, less, head tail: 显示或部分显示文件内容.
7. lp/lpstat/cancel, lpr/lpq/lprm: 打印文件.
8. 更改文件权限: chmod u+x...
9. 删除非空目录:rm -fr dir
10.拷贝目录: cp -R dir
11. fg jobid :可以将一个后台进程放到前台。
Ctrl-z 可以将前台进程挂起(suspend), 然后可以用bg jobid 让其到后台运行。
job & 可以直接让job直接在后台运行。
12. kill 的作用: send a signal to a process. eg: kill -9 发送的是SIG_KILL信号。。。 具体发送什么信号 可以通过 man kill 查看。
13. ps 的用法, ps -e 或 ps -o pid,ppid,session,tpgid, comm (其中session显示的sessionid, tpgid显示前台进程组id, comm显示命令名称。)
二 .ubuntu常用命令:
1. dpkg: package manager for Debian
* 安装: dpkg -i package
* 卸载: dpkg -r package
* 卸载并删除配置文件: dpkg -P |--purge package
* 如果安装一个包时。说依赖某些库。 可以先 apt-get install somelib...
* 查看软件包安装内容 :dpkg -L package
* 查看文件由哪个软件包提供: dpkg -S filename
* 另外 dpkg还有 dselect和aptitude 两个frontend.
2. apt
* 安装: apt-get install packs
* apt-get update : 更新源
* apt-get upgrade: 升级系统。
* apt-get dist-upgrade: 智能升级。安装新软件包,删除废弃的软件包
* apt-get -f install : -f == --fix broken 修复依赖
* apt-get autoremove: 自动删除无用的软件
* apt-get remove packages :删除软件
* apt-get remove package --purge 删除包并清除配置文件
* 清除所以删除包的残余配置文件: dpkg -l |grep ^rc|awk '{print $2}' |tr ["/n"] [" "]|sudo xargs dpkg -P
* 安装软件时候包的临时存放目录 : /var/cache/apt/archives
* 清除该目录: apt-get clean
* 清除该目录的旧版本的软件缓存: apt-get autoclean
* 查询软件some的依赖包: apt-cache depends some
* 查询软件some被哪些包依赖: apt-get rdepends some
* 搜索软件: apt-cache search name|regexp
* 查看软件包的作用:apt-cache show package
* 查看一个软件的编译依赖库: apt-cache showsrc packagename|grep Build-Depends
* 下载软件的源代码 : apt-get source packagename (注: sources.list 中应该有 deb-src 源)
* 安装软件包源码的同时, 安装其编译环境 :apt-get build-dep packagename (有deb-src源)
* 如何将本地光盘加入安装源列表: apt-cdrom add
3. 系统命令:
* 查看内核版本: uname -a
* 查看ubuntu 版本: cat /etc/issue
* 查看网卡状态 : ethtool eth0
* 查看内存,cpu的信息: cat /proc/meminfo ; cat /proc/cpuinfo
(/proc下面的有很多系统信息)
* 打印文件系统空间使用情况: df -h
* 查看硬盘分区情况: fdisk -l
* 产看文件大小: du -h filename;
* 查看目录大小: du -hs dirname ; du -h dirname是查看目录下所有文件的大小
* 查看内存的使用: free -m|-g|-k
* 查看进程: ps -e 或ps -aux -->显示用户
* 杀掉进程: kill pid
* 强制杀掉: killall -9 processname
4. 网络相关:
* 配置 ADSL: sudo pppoeconf
* ADSL手工拨号: sudo pon dsl-provider
* 激活 ADSL : sudo /etc/ppp/pppoe_on_boot
* 断开 ADSL: sudo poff
* 根据IP查网卡地址: arping IP地址
* 产看本地网络信息(包括ip等): ifconfig | ifconfig eth0
* 查看路由信息: netstat -r
* 关闭网卡: sudo ifconfig eth0 down
* 启用网卡: sudo ifconfig eth0 up
* 添加一个服务: sudo update-rc.d 服务名 defaults 99
* 删除一个服务: sudo update-rc.d 服务名 remove
* 临时重启一个服务: /etc/init.d/服务名 restart
* 临时关闭一个服务: /etc/init.d/服务名 stop
* 临时启动一个服务: /etc/init.d/服务名 start
* 控制台下显示中文: sudo apt-get install zhcon
* 查找某个文件: whereis filename 或 find 目录 -name 文件名
*通过ssh传输文件
scp -rp /path/filename username@remoteIP:/path #将本地文件拷贝到服务器上
scp -rp username@remoteIP:/path/filename /path #将远程文件从服务器下载到本地
5. 压缩:
*解压缩 a.tar.gz: tar zxvf a.tar.gz
*解压缩 a.tar.bz2: tar jxvf a.tar.bz2
*压缩aaa bbb目录为xxx.tar.gz: tar zcvf xxx.tar.gz aaa bbb
*压缩aaa bbb目录为xxx.tar.bz2: tar jcvf xxx.tar.bz2 aaa bbb
6. Nautilus:
特殊 URI 地址
* computer:/// - 全部挂载的设备和网络
* network:/// - 浏览可用的网络
* burn:/// - 一个刻录 CDs/DVDs 的数据虚拟目录
* smb:/// - 可用的 windows/samba 网络资源
* x-nautilus-desktop:/// - 桌面项目和图标
* file:/// - 本地文件
* trash:/// - 本地回收站目录
* ftp:// - FTP 文件夹
* ssh:// - SSH 文件夹
* fonts:/// - 字体文件夹,可将字体文件拖到此处以完成安装
* themes:/// - 系统主题文件夹
* 显示隐藏文件: Ctrl+h
* 显示地址栏: Ctrl+l
* 查看已安装字体: 在nautilus的地址栏里输入”fonts:///“,就可以查看本机所有的fonts
7.补充部分:
* 查看本地所有的tpc,udp监听端口: netstat -tupln (t=tcp, u=udp, p=program, l=listen, n=numric)
* 通过man搜说相关命令: man -k keyword . eg: man -k user
* 或者用 apropos
* 统计文件所占用的实际磁盘空间: du (du - estimate file space usage)
* 统计文件中的字符,字节数: wc -c/-l/-w (wc - print the number of newlines, words, and bytes in files)
* 查看文件的内容: od -x/-c/.... (od - dump files in octal and other formats)
我认为od最有用的就是文件的字节流了: od -t x1 filename
查看文件的 Ascii 码形式: od -t c filename (其中统计信息最左边的是: 字节数)
* 查找命令所在文件的位置: which od 输出: /usr/bin/od
查看该文件由哪个包提供: dpkg -S /usr/bin/od 输出: coreutils: /usr/bin/od
再查看coreutils包的全部内容就知道了linux的核心命令: dpkg -L coreutils
然后 info coreutils 哈哈,认真学吧, 满世界都是命令!
* 可以用man 命令产看某个命令的所有section 的解释: man -a tty
然后用q,和next 转换到下一个section的解释
* bash 的好用的快捷键:
ctrl+a:光标移到行首。
ctrl+b:光标左移一个字母
ctrl+c:杀死当前进程。
ctrl+d:退出当前 Shell。
ctrl+e:光标移到行尾。
ctrl+h:删除光标前一个字符,同 backspace 键相同。
ctrl+k:清除光标后至行尾的内容。
ctrl+l:清屏,相当于clear。
ctrl+r:搜索之前打过的命令。会有一个提示,根据你输入的关键字进行搜索bash的history
ctrl+u: 清除光标前至行首间的所有内容。
ctrl+w: 移除光标前的一个单词
ctrl+t: 交换光标位置前的两个字符
ctrl+y: 粘贴或者恢复上次的删除
ctrl+d: 删除光标所在字母;注意和backspace以及ctrl+h的区别,这2个是删除光标前的字符
ctrl+f: 光标右移
ctrl+z : 把当前进程转到后台运行,使用’ fg ‘命令恢复。比如top -d1 然后ctrl+z ,到后台,然后fg,重新恢复
* 快速粘贴:先在一个地方选中文字,在欲粘贴的地方按鼠标 中键 即可。
* 等效中键:a 、按下滑轮等效于中键。b、同时按下鼠标 左右键,等效于中键。
* 快速重启X服务: 同时按下: Alt + Ctrl + Backspace 三个键。
* 打开"运行"窗口: 同时按下 Alt + F2 键。
* 戴屏: a、全屏:直接按下 PrtScr 键。
b、当前窗口:同时按下 Alt + PrtScr 键。
c、延时戴屏:在 终端 或 "运行"窗口中输入命令: gnome-screenshot --delay 3 ,将延时 3 秒后戴屏。
* 直接将 文件管理器 中的文件拖到 GNOME终端 中就可以在终端中得到完整的路径名。
8. ulimit
ulimit:显示(或设置)用户可以使用的资源的限制(limit),这限制分为软限制(当前限制)和硬限制(上限),其中硬限制是软限制的上限值,应用程序在运行过程中使用的系统资源不超过相应的软限制,任何的超越都导致进程的终止。
ulimited 不限制用户可以使用的资源,但本设置对可打开的最大文件数(max open files)
和可同时运行的最大进程数(max user processes)无效
-a 列出所有当前资源极限
-c 设置core文件的最大值.单位:blocks
-d 设置一个进程的数据段的最大值.单位:kbytes
-f Shell 创建文件的文件大小的最大值,单位:blocks
-h 指定设置某个给定资源的硬极限。如果用户拥有 root 用户权限,可以增大硬极限。任何用户均可减少硬极限
-l 可以锁住的物理内存的最大值
-m 可以使用的常驻内存的最大值,单位:kbytes
-n 每个进程可以同时打开的最大文件数
-p 设置管道的最大值,单位为block,1block=512bytes
-s 指定堆栈的最大值:单位:kbytes
-S 指定为给定的资源设置软极限。软极限可增大到硬极限的值。如果 -H 和 -S 标志均未指定,极限适用于以上二者
-t 指定每个进程所使用的秒数,单位:seconds
-u 可以运行的最大并发进程数
-v Shell可使用的最大的虚拟内存,单位:kbytes
eg: ulimit -c 1000(可以先通过ulimit -c 查看原来的值)