Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to ar x filename.a to different directory

Tags:

linux

unix-ar

Is there any ar option to extract objects to a different directory ? Any way to extract them to tmp below ?

[test]# ls -l
total 1828
-rw-r--r-- 1 root root 1859628 Aug 24 02:10 libclsr11.a
drwxr-xr-x 2 root root    4096 Aug 24 02:12 tmp
[test]# ar x libclsr11.a
[test]# ls -l
total 3760
-rw-r--r-- 1 root root  157304 Aug 24 02:13 clsrcact.o
-rw-r--r-- 1 root root   19304 Aug 24 02:13 clsrcclu.o
-rw-r--r-- 1 root root   55696 Aug 24 02:13 clsrccss.o
..
drwxr-xr-x 2 root root    4096 Aug 24 02:12 tmp
[test]#
like image 943
Jon Avatar asked Aug 23 '16 19:08

Jon


People also ask

How do I get only the filename in Linux?

If you want to display only the filename, you can use basename command. find infa/bdm/server/source/path -type f -iname "source_fname_*. txt" Shell command to find the latest file name in the command task!

How do I print just the filename in Unix?

In order to print only the file names in a single line, line by line, we need to either make use of a flag with the ls command or append another command to it.

How do I list only file names in Unix?

Linux or UNIX-like system use the ls command to list files and directories. However, ls does not have an option to list only directories. You can use combination of ls command, find command, and grep command to list directory names only. You can use the find command too.


1 Answers

The solution depends on the version of ar. You can use ar --version to display the version of ar on your system.

For ar / GNU binutils before version 2.34:

Unfortunately, ar before version 2.34 does not provide a way to specify the directory where the files shall be extracted. (At least I was unable to find one.) It always uses the current directory. However, there is a simple workaround: Change to the target directory before extraction and use the relative path to the archive instead:

# cd ./tmp/
# ar x ../libclsr11.a

This way you should end up with clsrcact.o, clsrcclu.o and clsrccss.o inside the ./tmp/ directory.

For ar / GNU binutils version 2.34 or later:

Version 2.34 of binutils introduced the --output for the ar program. (See the changelog.) It can be used to specify the directory where the contents shall be extracted:

# ar x --output tmp libclsr11.a

That way the archive contents will land inside the tmp directory without having to use the workaround for earlier ar versions.

like image 163
Striezel Avatar answered Sep 29 '22 11:09

Striezel