tar | grep | find | ssh | sed | awk | vim | diff | sort | export |
args | ls | pwd | cd | gzip | bzip2 | unzip | shutdown | ftp | crontab |
service | ps | free | top | df | kill | rm | cp | mv | cat |
mount | chmod | chown | passwd | mkdir | ifconfig | uname | whereis | whatis | locate |
man | tail | less | su | mysql | yum | rpm | ping | date | wget |
参数说明:
参数 | 说明 |
---|---|
-c | 建立一个压缩文件的参数指令(create的意思) |
-x | 解开一个压缩文件的参数指令 |
-t | 查看tarfile里面的文件 |
-z | 是否同时具有gzip的属性?亦即是否需要用gzip压缩? |
-j | 是否同时具有bzip2的属性?亦即是否需要用bzip2压缩? |
-v | 压缩的过程中显示文件 |
-f | 使用文件名,要在f之后立即跟文件名,不能再有其它参数 |
-p | 使用源文件的原来属性 |
-P | 可以使用绝对路径来压缩 |
-N | 比后面接的日期还要新的才会被打包进新建的文件中 |
--exclude FILE | 在压缩过程中,不要将FILE打包 |
示例:
命令 | 说明 |
---|---|
tar -cvf /tmp/etc.tar /etc | 仅打包,不压缩 |
tar -zcvf /tmp/etc.tar.gz /etc | 打包后,以gzip压缩 |
tar -jcvf /tmp/etc.tar.bz2 /etc | 打包后,以bzip2压缩 |
tar -ztvf /tmp/etc.tar.gz | 查看etc.tar.gz内的文件,注意要以gzip格式压缩的文件; 查看时,要加上z参数,这个很重要; |
tar -zxvf /tmp/etc.tar.gz | 将etc.tar.gz解压在当前目录下,进入要解压到的目录,然后再解压 |
tar -zxvf /tmp/etc.tar.gz etc/passwd | 只将etc.tar.gz里的etc/passwd解开 |
tar -zxvpf /tmp/etc.tar.gz /etc | 将/etc/内的所有文件备份下来,并且保存其权限 |
tar -N "2005/06/01" -zcvf home.tar.gz /home | 在/home当中,比2005/06/01新的文件才备份 |
tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc | 我要备份/home,/etc,但不要/home/dmtsai |
tar -cvf - /etc | tar -xvf - | 将/etc/打包后直接解开在/tmp底下,而不产生文件; 这个动作有点像是cp -r /etc /tmp; 要注意的地方在于输出档变成-,而输入档也变成-,又有一个|存在; 这分别代表standard output,standard input和管道命令。 |
在文件中查找字符串(不区分大小写)
$ grep -i "the" demo_file
$ grep -A 3 -i "example" demo_text
$ grep -r "ramesh" *
查找指定文件名的文件(不区分大小写)
$ find -iname "MyProgram.c"
$ find -iname "MyProgram.c" -exec md5sum {} \;
$ find ~ -empty
登录到远程主机
$ ssh -l jsmith remotehost.example.com
$ ssh -v -l jsmith remotehost.example.com
$ ssh -V
当你将Dos系统中的文件复制到Unix/Linux后,这个文件每行都会以\r\n结尾,sed可以轻易将其转换为Unix格式的文件,使用\n结尾的文件
$ sed 's/.$//' filename
$ sed -n '1!G; h; p' filename
$ sed '/./=' thegeekstuff.txt | sed 'N; s/\n/ /'
删除重复行
$ awk '!($0 in array) { array[$0]; print}' temp
$ awk -F ':' '$3=$4' /etc/passwd
$ awk '{print $2,$5;}' employee.txt
打开文件并跳到第10行
$ vim +10 filename.txt
$ vim +/search-term filename.txt
$ vim -R /etc/passwd
比较的时候忽略空白符
$ diff -w name_list.txt name_list_new.txt
以升序对文件内容排序
$ sort names.txt
$ sort -r names.txt
$ sort -t: -k 3n /etc/passwd | more
输出跟字符串oracle匹配的环境变量
$ export | grep ORCALE
declare -x ORACLE_BASE="/u01/app/oracle"
declare -x ORACLE_HOME="u01/app/oracle/product/10.2.0"
declare -x ORACLE_SID="med"
declare -x ORACLE_TERM="xterm"
$ export ORACLE_HOME=/u01/app/oracle/product/10.2.0
将所有图片文件拷贝到外部驱动器
$ ls *.jpg | xargs -nl -i cp {} /external-hard-drive/directory
$ find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz
$ cat url-list.txt | xargs wget -c
以易读的方式显示文件大小(显示为MB,GB...)
$ ls -lh
-rw-r----- 1 ramesh team-dev 8.9M Jun 12 15:27 arch-linux.txt.gz
$ ls -ltr
$ ls -F
输出当前工作目录
cd -可以在最近工作的两个目录间切换
使用shopt -s cdspell可以设置自动对cd命令进行拼写检查
创建一个*.gz的压缩文件
$ gzip test.txt
$ gzip -d test.txt.gz
$ gzip -l *.gz
compressed uncompressed ratio uncompressed_name
23709 97975 75.8% asp-patch-rpms.txt
创建*.bz2压缩文件
$ bzip2 test.txt
$ bzip2 -d test.txt.bz2
解压*.zip文件
$ unzip test.zip
$ unzip -l jasper.zip
关闭系统立即关机
$ shutdown -h now
$ shutdown -h +10
$ shutdown -r now
$ shutdown -Fr now
ftp命令和sftp命令的用法基本相似。连接ftp服务器并下载多个文件
$ ftp IP/hostname
ftp> mget *.html
ftp> mls *.html -
/ftptest/features.html
/ftptest/index.html
查看某个用户的crontab入口
$ crontab -u john -l
$ */10 **** /home/ramesh/check-disk-space
service命令用户运行System V init脚本,这些脚本一般位于/etc/init.d文件夹下,这个命令可以直接运行这个文件夹里面的脚本,而不用加上路径
查看服务状态
$ service ssh status
$ service --status-all
$ service ssh restart
ps命令用来显示正在运行中的进程的信息,ps命令有很多选项,这里只列出了几个
查看当前正在运行的所有进程
$ ps -ef | more
$ ps -efH | more
这个命令用于显示系统当前内存的使用情况,包括已用内存、可用内存和交换内存的情况。默认情况下,free会以字节为单位输出内存的使用量
$ free
$ free -g
$ free -t
top命令会显示当前系统中占用资源最多的一些进程(默认以CPU占用率排序)如果你想改变排序方式,可以在结果列表中点击O(大写字母O)会显示所有可用于排序的列,这个时候你就可以选择你想排序的列
$ top
$ O
$ top -u oracle
显示文件系统的磁盘使用情况,默认情况下df -k将以字节为单位输出磁盘的使用量
$ df -k
$ df -h
$ df -T
kill用于终止一个进程。一般我们会先用ps -ef查找某个进程得到它的进程号,然后再使用kill -9进程号终止该进程。你还可以使用killall、pkill、xkill来终止进程
$ ps -ef | grep vim
$ kill -9 process_num
删除文件前先确认
$ rm -i filename.txt
$ rm -i file*
$ rm -r example
拷贝文件1到文件2,并保持文件的权限、属主和时间戳
$ cp -p file1 file2
$ cp -i file1 file2
将文件名file1重命名为file2,如果file2存在则提示是否覆盖
$ mv -i file1 file2
-v会输出重命名的过程,当文件名中包含通配符时,这个选项会非常方便
$ mv -v file1 file2
你可以一次查看多个文件的内容,下面的命令会先打印file1的内容,然后打印file2的内容
$ cat file1 file2
$ cat -n /etc/logrotate.conf
如果你要挂载一个文件系统,需要先创建一个目录,然后将这个文件系统挂载到这个目录上
$ mkdir /u01
$ mount /dev/sdb1 /u01
/dev/sdb1 /u01 ext2 defaults 0 2
chmod用于改变文件和目录的权限
给指定文件的属主和属组所有权限(包括读、写、执行)
$ chmod ug+rwx file.txt
$ chmod g-rwx file.txt
$ chmod -R ug+rwx file.txt
chown用于改变文件属主和属组
同时将某个文件的属主改为oracle,属组改为db
$ chown oracle:dba dbora.sh
$ chown -R oracle:dba /home/oracle
passwd用于在命令行修改密码,使用这个命令会要求你先输入旧密码,然后输入新密码
$ passwd
$ passwd USERNAME
$ passwd -d USERNAME
在home目录下创建一个名为temp的目录
$ mkdir ~/temp
$ mkdir -p dir1/dir2/dir3/dir4/
ifconfig用于查看和配置Linux系统的网络接口
查看所有网络接口及其状态
$ ifconfig -a
$ ifconfig eth0 up
$ ifconfig eth0 down
uname可以显示一些重要的系统信息,例如内核名称、主机名、内核版本号、处理器类型之类的信息
$ uname -a
当你不知道某个命令的位置时可以使用whereis命令,下面使用whereis查找ls的位置
$ whereis ls
$ whereis -u -B /tmp -f lsmk
whatis显示某个命令的描述信息
$ whatis ls
locate命名可以显示某个指定文件(或一组文件)的路径,它会使用updatedb创建的数据库
下面的命令会显示系统中所有包含crontab字符串的文件
$ locate crontab
显示某个命令的man页面
$ man crontab
$ man SECTION-NUMBER commandname
$ whatis crontab
$ man 5 crontab
$ tail filename.txt
$ tail -n N filename.txt
$ tail -f log-file
$ less huge-log-file.log
$ CTRL+F - forward one window
$ CTRL +B - backward one window
$ su - USERNAME
$ su - raj -c 'ls'
$ su -s 'SHELLNAME' USERNAME
$ mysql -u root -p -h 192.168.1.2
$ mysql -u root -p
$ yum install httpd
$ yum update httpd
$ yum remove httpd
$ rpm -ivh httpd-2.2.3-22.0.1.e15.i386.rpm
rpm -uvh httpd-2.2.3-22.0.1.e15.i386.rpm
$ rpm -ev httpd
$ ping -c 5 gmail.com
$ date -s "01/31/2010 23:59:53"
$ hwclock - systohc
$ hwclock --systohc - utc
$ wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz
$ wget -0 taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701