Linux shell command学习笔记(一)
- Shell的种类有很多种,例如CSH,Bourne Shell,Korn Shell。在现在的大多数Linux发行版中,默认的Shell一般都是Bourne again shell(bash)。
- <echo>
echo $SHELL
在Linux中,$符号代表一个shell变量。所有的shell都用这种方式使用变量。有一些shell变量在你的系统启动的时候就有了默认值。例如,$SHELL;$LOGNAME是你的登录名,而$PATH变量指明了你的shell命令的搜索范围。
echo命令的作用就是打印出你的输入。如果你的输入具有shell的特殊意义,例如shell变量,他就输出变量的值。
[d4csqa@sqaauto3 setup]$ echo 123 123 [d4csqa@sqaauto3 setup]$ echo $LOGNAME d4csqa [d4csqa@sqaauto3 setup]$ echo $SHELL /bin/bash
Linux shell命令中一个重要的地方是,你可以将命令串起来。这是Unix/Linux从第一天开始就有的巧妙的特点。最简单的将命令连起来的办法就是使用“|”,我们称之为“pipe”。第一个命令的输出就是下一个命令的输入。
- Linux命令有自己的语法规则:
基本的语法就像这样:
command -option file
- ls -la
这行命令的意义是输出当前目录的所有文件的文件名,l代表“long”,a代表“all”,有了l选项,你会发现,输出的内容比较丰富,不只包括文件名,还有文件的访问权限,所有者,所属组等。
d表示目录(directory),如果是一个"-"表示是文件,如果是l则表示是一个连接文件(link)
表示文件或者目录许可权限.分别用可读(r),可写(w),可运行(x)。
范例:
1. ls /home
显示/home目录下的文件与目录(不包含隐藏文件)
2. ls –a /home
显示/home目录下的所有文件与目录(包含隐藏文件)
3. ls –l /home
显示/home目录下的文件与目录的详细信息
4. ls –c /home
显示/home目录下的文件与目录,按修改时间排序
ls -l
a* (相当于 ls –l | grep a*,但grep只能抓取有效目标数为1的情况)
这个命令会列出在当前工作目录下所有的以小写a开头的文件,比如说abc.txt,alpha.jpg等等。
ls
a?cd
这条命令会列出所有以小写a开头隔一个未知字符以小写cd结尾的所有文件。例如adcd,axcd,但是不会列出adfdcd,也不会列出axcd.txt。
ls –l session* *info*
这条命令会列出所有含有info字符串和以session字符串开头的文件,但仅仅是简单的加总,即对于两个条件同时满足的情况,不会识别出来只列举一次,而是列举两次。其过程是依次遍历ls列出的文件,对于每个文件先判别是否满足*info*,是则输出;然后判别是否满足session*,是则输出。等所有条件判别问,则跳到下一个文件,依此类推。
但ls –l | grep session | grep info却实现了条件的交集,即输出为同时满足含有session字符串的条件和含有info字符串的条件。
小结:
对单一filter,ls –l *str*等价于ls –l | grep str。
对多个filter,ls –l *str1* *str2*为简单叠加(比并集更简单),ls –l |grep str1 | grep str2为交集。
- <man>
man:如果你想了解每一个命令代表什么含义以及他的用法,你就可以使用man(意义为manual)命令,例如:man ls。man输出的内容是为系统管理员和开发者编写的,如果你想了解更多命令的用法,你可以去找网络上的Linux命令文档,有一个非常方便的就是丹尼尔·巴雷特的Linux的袖珍指南。
- <su><sudo>
su和sudo:su命令的作用是切换用户,这也被称为超级用户,因为在有些系统中su命令可以使你以系统的所有权限用户root登录。除非你是系统管理员,否则我绝不推荐你使用su切换到root,因为这可能给你带来很多麻烦。一个相对安全的多的办法是使用sudo命令,这个命令可以上你以root权限运行一个命令。
su 在不退出登陆的情况下,切换到另外一个人的身份
用法: su -l 用户名(如果用户名缺省,则切换到root状态)
eg:su -l netseek (切换到netseek这个用户,将提示输入密码)
- <grep>
grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。例如:
grep foo /etc/passwd
返回在password文件中所有的含有foo的行
grep -i “foo” /etc/passwd
-i选项是忽略大小写,这就意味着若某一行含有FOO或FOo也会被搜索到。
grep还支持递归搜索:
grep -r “foo” /home/sjvn
这条命令将会搜索/home/sjvn目录及其子目录下所有的包含“foo”的行。
grep也通常与其他命令串连起来使用,例如:
ls -la | grep foo
与find命令的区别:
grep:文本内容搜索;find:文件或者目录名以及权限属主等匹配搜索
- <find> 查找文件
格式:find 路径 -name ‘文件名’
范例:
1. find ./ -name ‘co*’
在当前目录及其子目录中寻找名为co开头的文件
2. find ./ -name ‘test’
在当前目录及其子目录中寻找名为test的文件
[dannchen@sqaauto3 D4C]$ pwd /home/dannchen/D4C [dannchen@sqaauto3 D4C]$ ls 1 1.c ALI_GDS_session bugs experiment test_plan [dannchen@sqaauto3 D4C]$ find ./ -name 1 ./experiment/process/1 ./1
- <ps>
报告进程的状态。此命令将显示哪些程序正在运行。
- <cp>
cp file1 file2
把file1中的内容复制到当前文件夹中file2。如果file2不存在,新建。如果file2存在,覆写。
- <rm>
rm –i fileName
会有确认提示信息。
- <cat>
可以显示你的Linux电脑中的文本信息。与vi或vim的区别是前者只读,后者可编辑。
cat
/proc/cpuinfo
展示你的CPU的重要的统计。
cat /proc/version
展示你的当前运行的Linux发行版的详细信息。
cat /etc/printcap
展示你当前安装的打印机。
与more命令所不同的是:cat把文件内容一直打印出来,而 more则分屏显示
eg; cat>1.c //就可以把代码粘帖到1.c文件里,按ctrl+d 保存代码。
gcc -o 1 1.c //将1.c编译成.exe文件,我们可以用此命令编译出代码。
- <more>
内容多时,分页显示,space键切换页面。
-num 指示单页行数。Space键一次滚动num行。
- <cd> 改变当前目录
eg:cd netseek //进入netseek这个目录
cd //退出当前目录,相当于cd ~
cd .. //切换到上一层目录
cd - //切换到上一次目录
- <chmod> 权限修改
用法:chmod 三位8进制数 filename。
eg: chmod 567 filename //用户r-x,组rw-,其他rwx
chmod 7 //------rwx
eg: chmod u+x filenmame //只想给自己运行,别人只能读
//u表示文件主人user, g 表示文件所在组group。 o 表示其他人others ;r 表可读,w 表可写,x 表可以运行
chmod g+x filename //同组的人来执行
格式:chmod [who] [+ | - | =] [mode] 文件名
参数:
who:
u 表示文件的所有者。
g 表示与文件所有者同组的用户。
o 表示“其他用户”。
a 表示“所有用户”。它是系统默认值。
mode:
+ 添加某个权限
- 取消某个权限
= 赋予给定权限
例:chmod g+w hello.c
chmod o=--- 1 //其他用户的权限为不可读不可写不可执行
mode所表示的权限可使用下述字母(数字)的任意组合:
r 可读 (4)
w 可写 (2)
x 可执行 (1)
例:chmod 761 hello.c
- <clear>,<date>命令
clear:清屏,相当与DOS下的cls;date:显示当前时间。
用法:date [选项] 显示时间格式(以+开头,后面接格式)
举例:
(1) 以固定格式显示时间:date + “%Y%m%d%H”
(2) 显示明天的日期:date -d “tomorrow” +”%Y-%m-%d”
(3) 显示前天的日志:date -d “1 days ago” +”%Y-%m-%d”
[dannchen@sqaauto3 ~]$ date -d "tomorrow" Tue Feb 2 00:40:06 PST 2016 [dannchen@sqaauto3 ~]$ date Mon Feb 1 00:40:12 PST 2016 [dannchen@sqaauto3 ~]$ date -d "yesterday" Sun Jan 31 00:40:27 PST 2016 [dannchen@sqaauto3 ~]$ date -d "3 days ago" Fri Jan 29 00:40:44 PST 2016
- whoami,whereis,which,id
//whoami:确认自己身份
//who am i:更详细的信息,包括IP地址
//whereis:查询命令所在目录以及帮助文档所在目录
//which:查询该命令所在目录(类似whereis)
//id:打印出自己的UID以及GID。(UID:用户身份唯一标识。GID:用户组身份唯一标识。每一个用户只能有一个唯一的UID和 GID)
eg: whoami //显示你自已登陆的用户名
whereis bin 显示bin所在的目录,将显示为:/usr/local/bin
which bin
- kill 可以杀死某个正在运行或者已经是dest状态的进程
- passwd 可以设置口令
- history 用户用过的命令
- tar 解压命令
eg: tar -zxvf nmap-3.45.tgz //将这个解压到nmap-3.45这个目录里
格式:tar [选项] 目录或文件
范例:
1.tar cvf tmp.tar /home/tmp
将/home/tmp目录下的所有文件和目录打包成一个tmp.tar文件
2.tar xvf tmp.tar
将打包文件tmp.tar在当前目录下解开
3.tar cvzf tmp.tar.gz /home/tmp
将/home/tmp目录下的所有文件和目录打包并压缩成一个tmp.tar.gz文件
4.tar xvzf tmp.tar.gz
将打包压缩文件tmp.tar.gz在当前目录下解开
- <unzip>
格式:unzip [选项] 压缩文件名.zip
范例:
unzip tmp.zip
解压tmp.zip文件
- finger 可以让使用者查询一些其他使用者的资料
eg: finger //查看所用用户的使用资料
finger root //查看root的资料
- <shutdown>、<halt>、<reboot> 关机或重启命令
eg: shutdown -h now //立即关机
- <fdisk> 查看磁盘分区情况
eg: fdisk -l //查看磁盘分区情况
- <df> 查看磁盘使用情况
格式:df [选项]
范例:
df –k
以KB为单位显示磁盘使用情况
[dannchen@sqaauto3 D4C]$ df -k Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/vg1-root 10095152 4930220 4652116 52% / tmpfs 24707564 453144 24254420 2% /dev/shm /dev/sda1 1032088 62344 917316 7% /boot /dev/sda3 749209928 755664 710396536 1% /tmp filer3b:/vol/shome/devenv/T2/perforce 96534272 86084032 10450240 90% /p4 172.18.212.16:/h/flex/slow 16909250528 13819873184 2230436320 87% /nfs/slow 172.18.212.16:/i/benchmarks 3165519616 2946418304 58302176 99% /nfs/benchmarks 172.18.212.16:/h/lsf.tflex 16909250528 13819873184 2230436320 87% /nfs/lsf /mnt/m3dlibs_files/m3dlibs.20140925.6.sqfs 1128448 1128448 0 100% /mnt/m3dlibs /dev/flex_gpfs 296663121920 257340414976 39322706944 87% /gpfs /dev/flex_gpfs2 41020293120 29382656000 11637637120 72% /gpfs2 cat3:/h/work/export1 13231520 9337888 2835136 77% /mnt/cat2_ro cat3:/h/work/export1 13231520 9337888 2835136 77% /mnt/cat2_rw cat3:/h/work/export2 13231520 9337888 2835136 77% /mnt/cat2-rw-export/ro_mount cat3:/h/work/export2 13231520 9337888 2835136 77% /mnt/cat2-rw-export/rw_mount
- <du> 查看目录大小
格式:du [选项] 目录
范例:
du –b ipc
以字节为单位显示ipc这个目录的大小
[dannchen@sqaauto3 D4C]$ ls 1 1.c ALI_GDS_session bugs experiment test_plan [dannchen@sqaauto3 D4C]$ du -b 1 6421 1 [dannchen@sqaauto3 D4C]$ du -b bugs 512 bugs/DOM-7622/process1/visualization 512 bugs/DOM-7622/process1/product_pattern/preproc 1024 bugs/DOM-7622/process1/product_pattern 2404 bugs/DOM-7622/process1/default 2456 bugs/DOM-7622/process1/target1 1986 bugs/DOM-7622/process1/__al__/default 2370 bugs/DOM-7622/process1/__al__/Mark_1 4868 bugs/DOM-7622/process1/__al__ 17097 bugs/DOM-7622/process1 512 bugs/DOM-7622/process2/visualization 512 bugs/DOM-7622/process2/product_pattern/preproc 1024 bugs/DOM-7622/process2/product_pattern 2404 bugs/DOM-7622/process2/default 2456 bugs/DOM-7622/process2/target1 1986 bugs/DOM-7622/process2/__al__/default 2237 bugs/DOM-7622/process2/__al__/Mark_1 4735 bugs/DOM-7622/process2/__al__ 16964 bugs/DOM-7622/process2 512 bugs/DOM-7622/process3/visualization 512 bugs/DOM-7622/process3/product_pattern/preproc 1024 bugs/DOM-7622/process3/product_pattern 2404 bugs/DOM-7622/process3/default 2456 bugs/DOM-7622/process3/target1 1986 bugs/DOM-7622/process3/__al__/default 2229 bugs/DOM-7622/process3/__al__/Mark_1 4727 bugs/DOM-7622/process3/__al__ 16956 bugs/DOM-7622/process3 51529 bugs/DOM-7622 52041 bugs
- <ping> 查看网络是否连通
- <netstat> 查看网络状态
格式:netstat [选项]
范例:
1. netstat -a
查看系统中所有的网络监听端口。
[dannchen@sqaauto3 D4C]$ netstat -a | grep 11672440 unix 3 [ ] STREAM CONNECTED 1167244099 @/tmp/dbus-eRaMqafIL0 unix 3 [ ] STREAM CONNECTED 1167244098
- <ifconfig> 网络配置
格式:ifconfig [选项] [网络接口]
范例:
1. ifconfig eth0 192.168.0.1
配置eth0这一网卡的ip地址为192.168.0.1
2. ifconfig eth0 down
暂停eth0这一网卡的工作
3. ifconfig eth0 up
恢复eth0这一网卡的工作
eg: ifconfig eth0 192.168.2.20 //设置IP地址
- <rpm> 软件安装
格式:rpm [选项] [安装文件]
范例:
1. rpm -ivh tftp.rpm
安装名字为tftp的文件
2. rpm –qa
列出所有已安装rpm包
3. rpm –e name
卸载名字为name的rpm包
[dannchen@sqaauto3 D4C]$ rpm -qa | grep python rpm-python-4.8.0-37.el6.x86_64 python-2.6.6-36.el6.x86_64 python-iniparse-0.3.1-2.1.el6.noarch libproxy-python-0.3.0-3.el6_3.x86_64 python-iwlib-0.1-1.2.el6.x86_64 ganglia-gmond-modules-python-3.6.1-1.x86_64 libxml2-python-2.7.6-8.el6_3.4.x86_64 python-urlgrabber-3.9.1-8.el6.noarch newt-python-0.52.11-3.el6.x86_64 dbus-python-0.83.0-6.1.el6.x86_64 python-pycurl-7.19.0-8.el6.x86_64 libreport-python-2.0.9-15.el6.centos.x86_64 python-ethtool-0.6-3.el6.x86_64 abrt-addon-python-2.0.8-15.el6.centos.x86_64 python-libs-2.6.6-36.el6.x86_64
- <mount> 挂载
格式:mount [选项] 设备源 目标目录
范例:
1. mount /dev/cdrom /mnt
将光驱挂载到/mnt目录下
<umount> 卸载设备
格式:umount 目标目录
范例:
1. umount /mnt (对应mount例)
取消光驱在/mnt下的挂载
- <top> 动态查看CPU使用
格式:top
范例:
1.top
查看系统中的进程对cpu、内存等的占用情况。
[dannchen@sqaauto3 D4C]$ top | grep dannchen 959161 dannchen 20 0 14364 2328 768 R 7.4 0.0 0:00.07 top 604746 dannchen 20 0 1366m 23m 16m S 1.8 0.0 822:24.16 knotify4 604757 dannchen 9 -11 354m 3632 2816 S 1.8 0.0 120:27.92 pulseaudio 604746 dannchen 20 0 1366m 23m 16m S 1.6 0.0 822:24.21 knotify4 959161 dannchen 20 0 14368 2476 880 R 1.0 0.0 0:00.10 top 604746 dannchen 20 0 1366m 23m 16m S 2.0 0.0 822:24.27 knotify4 959161 dannchen 20 0 14368 2476 880 R 1.6 0.0 0:00.15 top 790605 dannchen 20 0 6053m 563m 36m S 0.7 1.2 19:41.01 java
- <uname> 显示当前操作系统的信息
[dannchen@sqaauto3 ~]$ uname Linux
参考:
http://www.jb51.net/LINUXjishu/45329.html